Range and refinement laws for packed two-limb boundaries #
The abstract theorems in this module let operation proofs reason about decoded options without unfolding the packed decoder. Re-encoding agrees with a model-valued operation whenever the NaR code and finite kernel agree separately.
A unary boundary is in range when both its NaR code and finite kernel are in range.
A binary boundary is in range when its NaR code and every finite result are in range.
A ternary boundary is in range when its NaR code and every finite result are in range.
Re-encoding a unary boundary agrees with its model-valued operation when the NaR code and finite kernel do. The decoded option remains abstract throughout the proof.
Unary refinement with separate encoded and semantic decoder results. Keeping their equality as an argument avoids rewriting inside a concrete packed-decoder expression in operation modules.
Re-encoding a binary boundary agrees with its model-valued operation when the NaR code and finite kernel do.
Binary refinement with separate encoded and semantic decoder results. The equalities are consumed by this small abstract theorem rather than by each packed operation proof.
Re-encoding a ternary boundary agrees with its model-valued operation when the NaR code and finite kernel do.
Ternary refinement with distinct packed and semantic decoder results.