PolyXOR128: the checked statement

Source: proofs/PolyXORCheck.lean at orlp/polyxor@3123eb6. The printed signature below is copied verbatim from lake env lean (see lean/AUDIT.txt).

PolyXOR.polyxor128_axu : ∀ (F : Type) [inst : Field F] [inst_1 : Fintype F] [inst_2 : Module PolyXOR.F4 F],
  Fintype.card F = 2 ^ 128 →
    ∀ (ι : Polynomial (ZMod 2) →+ F),
      (∀ (x : Polynomial (ZMod 2)), x.degree < 128 → ι x = 0 → x = 0) →
        ∀ (L : ℕ) (m m' : List PolyXOR.Byte),
          m ≠ m' →
            m.length ≤ L →
              m'.length ≤ L →
                L < 2 ^ 64 →
                  ∀ (γ : F),
                    ↑(Nat.card { k // PolyXOR.polyxor128 ι k m + PolyXOR.polyxor128 ι k m' = γ }) /
                        ↑(Nat.card (PolyXOR.Key F)) ≤
                      (↑L / 4096 + 3) / 2 ^ 128

Key F = (Fin 32 → Fin 16 → Word) × F × F × F: the 4096-byte block key and z, u, y. polyxor128 (in PolyXORFull.lean) is finalize_raw:

The companion PolyXOR.compress_axu128_is_axu states that the keyed compression function is 2⁻¹²⁸-almost-XOR-universal over a uniform 64-byte key.

Reading it in the post's model

The statement quantifies over every field of size 2¹²⁸, every F4-module structure and every ι injective below degree 128. It therefore covers the instantiation the code uses, which difftest/model.py spells out: POLYVAL's Montgomery product, the bit layout, and w acting as (lo, hi) ↦ (hi, lo+hi) on 32-bit subwords.