Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
133 commits
Select commit Hold shift + click to select a range
32a0b4e
Ported deftorel pass
DCupello1 Nov 4, 2025
d28d305
Added fallthrough semantics to converted defs, which conveniently han…
DCupello1 Nov 18, 2025
7df8c60
Merge branch 'improve-ids-pass' into deftorel-pass
DCupello1 Nov 19, 2025
c3d6045
Merge branch 'improve-ids-pass' into deftorel-pass
DCupello1 Dec 8, 2025
2be03e5
Remove created relations out of recursive groups if they don't call t…
DCupello1 Dec 8, 2025
9d24f4e
Added a filter to the prems from the generated fallthrough relations …
DCupello1 Dec 8, 2025
2ef2c5e
Else simplification pass in progress
DCupello1 Jan 14, 2026
0d763f8
exposing hints from else and wf relations
DCupello1 Jan 14, 2026
c3f581a
Modification to else relation removal, only removes if there are no u…
DCupello1 Jan 15, 2026
3a2454e
Merge branch 'letintro-pass' into else-simp-pass
DCupello1 Jan 15, 2026
fe65f4f
fix tests
DCupello1 Jan 15, 2026
066a296
fix tests, adding wf relations again (removed by accident)
DCupello1 Jan 19, 2026
6e28e18
Changed generated otherwise to be conjunction instead of disjunction.
DCupello1 Jan 20, 2026
67c5e56
fix tests
DCupello1 Jan 20, 2026
beac0dc
Merge branch 'main' into deftorel-pass
DCupello1 Jan 20, 2026
122dc2d
Made fallthrough only when otherwise is present. Refactored a bit usi…
DCupello1 Jan 20, 2026
3d64cfb
Removed subtyping matching check
DCupello1 Jan 20, 2026
f4f1fc8
reordering so generated deftorel relations get implicit sidecondition…
DCupello1 Jan 20, 2026
9c4be10
Merge branch 'main' into deftorel-pass
DCupello1 Jan 21, 2026
f21f9b7
move rocq translation to single branch
DCupello1 Nov 19, 2025
4a8cfb8
Ensures that ids do not clash with reserved ids. Mixops also cannot b…
DCupello1 Nov 19, 2025
41bc410
Remove aliasing in mut checks since done in alias-mut pass now
DCupello1 Nov 19, 2025
af7bc34
Made naive name resolving for now to make rocq compile.
DCupello1 Nov 20, 2025
3c0dd9a
Added removal overlapping check only for rocq for now.
DCupello1 Nov 20, 2025
0fc4513
enable ITE introduction pass and added specific rendering to rocq
DCupello1 Dec 8, 2025
5fc2688
Added extra clause to functions with type families.
DCupello1 Jan 22, 2026
8efa035
Added inhabited check for type variables in function definitions.
DCupello1 Jan 22, 2026
5cbf224
Made recursive functions into relations due to not having immediate c…
DCupello1 Jan 22, 2026
ef63432
small fix on sub to allow for nested sub transformation.
DCupello1 Jan 26, 2026
9c182a9
Once again, turning premises of an else relation into disjunction, an…
DCupello1 Jan 26, 2026
5fb9006
Merge branch 'else-simp-pass' into rocq-backend
DCupello1 Jan 26, 2026
c942181
Fix recursive functions with hints being filtered out.
DCupello1 Jan 26, 2026
3ab9cc5
Enabled else simplification and improve notation for list access, lis…
DCupello1 Jan 26, 2026
0f4d886
Made uncase projection functions into coercions for nicer output.
DCupello1 Jan 27, 2026
98e29a2
Made disambiguation pass (which has name mangling as a fallback solut…
DCupello1 Jan 27, 2026
cf642f4
Moved overlapping clauses removal to disambiguation pass, and made un…
DCupello1 Jan 27, 2026
e680422
Improve ids change: Now ensures variables don't have same name as con…
DCupello1 Jan 27, 2026
8cd4fe4
Removed disambiguation for mixops of more than 1 atom, since its name…
DCupello1 Jan 27, 2026
c0fb9f0
Disambiguation for mixop is now supported: it is turned into a simple…
DCupello1 Jan 27, 2026
fc78173
Made most list operations into seq from ssreflect
DCupello1 Feb 11, 2026
ad9484b
Undep: made type family wf relations necessary
DCupello1 Feb 11, 2026
e688543
Modified some seq functions from imported code
DCupello1 Feb 17, 2026
971de81
Made new type family sub types have a unique name if there are no bin…
DCupello1 Feb 18, 2026
3ba88f9
small fix on sub to allow for nested sub transformation.
DCupello1 Jan 26, 2026
451fce1
Expose uncase removal projection functions via hints
DCupello1 Feb 10, 2026
30363ce
Improve ids change: Now ensures variables don't have same name as con…
DCupello1 Jan 27, 2026
6f7daf9
Exposing wf relations via hints
DCupello1 Feb 10, 2026
ba34c3d
Expose type families via hints and added utility function to check if…
DCupello1 Feb 10, 2026
61dfecd
Small IL changes adding more functionality to free, iter, and walk
DCupello1 Feb 10, 2026
5c2fd8f
Fix tests (only changes a list IterE with no iteration variables into…
DCupello1 Feb 10, 2026
3e7fd3b
Merge branch 'main' into rocq-backend
DCupello1 Feb 26, 2026
1f2b5e0
Improve-ids: fixed transform mixop to have the intended effect, and s…
DCupello1 Feb 26, 2026
e01b21c
Pattern simp pass made
DCupello1 Mar 5, 2026
2cdcfc6
Make type families have a default name if there are no quantifiers.
DCupello1 Mar 5, 2026
15af140
Extended definite iter pattern simplification to relations.
DCupello1 Apr 21, 2026
7c03ab8
Undep: deactivating wfness now does not remove essential ones such as…
DCupello1 Apr 21, 2026
22ae0db
Moved patsimp pass as it is dependent on dependent types being removed.
DCupello1 Apr 21, 2026
190c693
Merge branch 'pat-simp-pass' into rocq-backend
DCupello1 Apr 21, 2026
0ae8a57
enabled pass pat-simp and deactivated deftorel otherwise solution due…
DCupello1 Apr 21, 2026
7a41aa5
Made it so that if functions only have otherwise as a premise then it…
DCupello1 Apr 21, 2026
6c9efcf
Made it so rendering function definitions take into account whether a…
DCupello1 Apr 22, 2026
ee44ae1
Undep: the wfness filter now checks the entire expression for a type …
DCupello1 May 4, 2026
96b907f
Undep: the wfness filter now checks the entire expression for type fa…
DCupello1 May 4, 2026
6b3edff
Pat simp: Now uses a different name generation and moved it after sub…
DCupello1 May 4, 2026
bd64c60
Patsimp: Now utilizes a different naem gneeration, and moved pattern …
DCupello1 May 4, 2026
2302a91
Improved rendering for tuple projections
DCupello1 May 12, 2026
6f2ef13
Undep: Implemented three modes for wfness placement, all, none and mi…
DCupello1 May 12, 2026
c46c42b
Type family removal: Fixed a bug that made types of function calls no…
DCupello1 May 12, 2026
14d0cc5
Sideconditions: Only preserve the iteration of the generated premises…
DCupello1 May 12, 2026
7207e77
Undep: Implemented three modes for wfness placement, all, none and mi…
DCupello1 May 12, 2026
264470a
Type family removal: Fixed a bug that made types of function calls no…
DCupello1 May 12, 2026
ee15f54
Sideconditions: Only preserve the iteration of the generated premises…
DCupello1 May 12, 2026
5e30c1d
Ported deftorel pass
DCupello1 Nov 4, 2025
d612cfc
Added fallthrough semantics to converted defs, which conveniently han…
DCupello1 Nov 18, 2025
c769c77
Remove created relations out of recursive groups if they don't call t…
DCupello1 Dec 8, 2025
6f5792e
Added a filter to the prems from the generated fallthrough relations …
DCupello1 Dec 8, 2025
c5334cc
Made fallthrough only when otherwise is present. Refactored a bit usi…
DCupello1 Jan 20, 2026
8807e55
Removed subtyping matching check
DCupello1 Jan 20, 2026
b25aaba
reordering so generated deftorel relations get implicit sidecondition…
DCupello1 Jan 20, 2026
1e64ec4
Make recursive functions (at the current moment, only the ones with e…
DCupello1 Feb 26, 2026
33e3ac4
Made it so that functions with only else premises are allowed as func…
DCupello1 Apr 21, 2026
a615206
Fix tests
DCupello1 May 18, 2026
f93d7a4
Fix tests and ordering of premises (in anticipation of let)
DCupello1 May 18, 2026
dd919fd
Undep: Create wf lemmas for functions that construct a term that need…
DCupello1 May 21, 2026
4ebf89a
Improve ids: modify names for hints as well.
DCupello1 May 21, 2026
a9c44b7
Sideconditions: Don't error on relations with parameters.
DCupello1 May 21, 2026
2b3d494
Undep: Create wf lemmas for functions that construct a term that need…
DCupello1 May 21, 2026
c1f70aa
Improve ids: modify names for hints as well.
DCupello1 May 21, 2026
cbc0b56
Sideconditions: Don't error on relations with parameters.
DCupello1 May 21, 2026
27188a3
Merge branch 'main' into middlend-fixes
DCupello1 May 21, 2026
63cc556
Fix tests
DCupello1 May 21, 2026
6d5aaab
Rocq: now rendering wfness lemmas for functions.
DCupello1 May 21, 2026
296fa93
CR changes
DCupello1 May 26, 2026
40976f5
Fix on wfness lemmas with recursion scoping + representations of numb…
DCupello1 May 26, 2026
c3f36ba
Improved the documentation for improveids, and made term constructor …
DCupello1 May 27, 2026
c2821da
Fix tests
DCupello1 May 27, 2026
dcda467
Merge branch 'main' into middlend-fixes
DCupello1 May 27, 2026
67d45be
Fix tests (again)
DCupello1 May 27, 2026
5f7ed5c
Fix tests
DCupello1 May 27, 2026
5137611
Implement general mode hint.
DCupello1 May 31, 2026
e3185b9
Implement wfopt hint that enables minimal optimization for relations.…
DCupello1 May 31, 2026
a9adc39
Merge branch 'main' into deftorel-pass
DCupello1 May 31, 2026
62bff3b
Merge branch 'main' into pat-simp-pass
DCupello1 May 31, 2026
fc2cdef
Merge branch 'undep-wf-placement' into mech-backend
DCupello1 May 31, 2026
d0d98dd
Allow functions with only let to stay as functions, and added a hint …
DCupello1 May 31, 2026
bbcbb6e
Merge branch 'deftorel-pass' into mech-backend
DCupello1 May 31, 2026
c3f7550
Undep: allow fcalls wfness to be optimized out if in minimal placemen…
DCupello1 May 31, 2026
0291a58
fix tests
DCupello1 May 31, 2026
23e331c
Merge branch 'mech-backend' into rocq-backend
DCupello1 May 31, 2026
657ee0e
Allow let pass, allow functions that only have let. Handle new iter c…
DCupello1 May 31, 2026
e8ca325
Deftorel: convert lets back to if when converting def to rel. Filteri…
DCupello1 May 31, 2026
1c9b022
sub and subexp: convert subE into coercion when IterT encountered, an…
DCupello1 May 31, 2026
73ddc1c
Undep: expose wf_rel_id
DCupello1 May 31, 2026
fc306c4
Made rundata partial
DCupello1 May 31, 2026
038fa10
Merge branch 'mech-backend' into rocq-backend
DCupello1 May 31, 2026
dabebfb
Reduce type aliasing when checking if type needs wfness
DCupello1 Jun 1, 2026
1517270
Reduce type aliasing when checking if type needs wfness
DCupello1 Jun 1, 2026
f7a6bff
Return to original ordering due to let not being possible in relations
DCupello1 Jun 2, 2026
d3090f2
Return to original ordering due to let not being possible in relations
DCupello1 Jun 2, 2026
52c7222
Improve name generation to include iteration symbols.
DCupello1 Jun 2, 2026
0d7e051
added two isabelle-specific passes
maximelegoupil Jun 3, 2026
1e1fe31
Merge branch 'mech-backend' into rocq-backend
DCupello1 Jun 4, 2026
4ec1e9b
Improve ids - changed ordering of id improvement following the new ch…
DCupello1 Jun 4, 2026
096c2a9
Improve ids - changed ordering of id improvement following the new ch…
DCupello1 Jun 4, 2026
2ec6419
Sub typo in soundness
DCupello1 Jun 8, 2026
155781e
Sub typo in soundness
DCupello1 Jun 8, 2026
de880a0
Limits typo on store extension
DCupello1 Jun 9, 2026
b38fd63
Meminst_ok and Tableinst_ok defined max fix
DCupello1 Jun 10, 2026
c29923e
Now removes terms that appear in the expression body of a relation.
DCupello1 Jun 16, 2026
eb8e60e
typo on config relation
DCupello1 Jun 16, 2026
a150108
Merge branch 'mech-backend' into rocq-backend
DCupello1 Jun 16, 2026
05c4743
holds_upto fix
DCupello1 Jun 16, 2026
1923973
port changes from 3.0 to wasm-latest, and add partial annotations
DCupello1 Jun 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions specification/wasm-1.0/B-soundness.spectec
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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'*|

Expand Down Expand Up @@ -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?
6 changes: 3 additions & 3 deletions specification/wasm-2.0/8-reduction.spectec
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
2 changes: 1 addition & 1 deletion specification/wasm-2.0/9-module.spectec
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
16 changes: 8 additions & 8 deletions specification/wasm-2.0/B-soundness.spectec
Original file line number Diff line number Diff line change
Expand Up @@ -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*
Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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'*|

Expand Down Expand Up @@ -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*
2 changes: 1 addition & 1 deletion specification/wasm-3.0/1.2-syntax.types.spectec
Original file line number Diff line number Diff line change
Expand Up @@ -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'*)
Expand Down
16 changes: 8 additions & 8 deletions specification/wasm-3.0/3.2-numerics.vector.spectec
Original file line number Diff line number Diff line change
Expand Up @@ -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)*

Expand All @@ -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*)
Expand Down Expand Up @@ -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)
Expand Down
12 changes: 6 additions & 6 deletions specification/wasm-3.0/7.1-soundness.configurations.spectec
Original file line number Diff line number Diff line change
Expand Up @@ -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)*

Expand Down Expand Up @@ -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'*|

Expand Down
2 changes: 1 addition & 1 deletion specification/wasm-latest/1.2-syntax.types.spectec
Original file line number Diff line number Diff line change
Expand Up @@ -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'*)
Expand Down
16 changes: 8 additions & 8 deletions specification/wasm-latest/3.2-numerics.vector.spectec
Original file line number Diff line number Diff line change
Expand Up @@ -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)*

Expand All @@ -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*)
Expand Down Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)*

Expand Down
Loading
Loading