A nonzero field element cancels against its inverse on the right.
15.4. Key correctness theorems
The proof obligations that promote the wrapper from a ring to a field are the inverse-cancellation laws. For any nonzero element, the extended-GCD inverse is a genuine two-sided multiplicative inverse.
Hex.GFqField.mul_inv_cancel {p : Nat} [Hex.ZMod64.Bounds p] {hp : Hex.Nat.Prime p} {f : Hex.FpPoly p} {hf : 0 < f.degree} {hirr : f.Irreducible} {x : Hex.GFqField.FiniteField f hf hp hirr} (hx : x ≠ 0) : x * x⁻¹ = 1Hex.GFqField.mul_inv_cancel {p : Nat} [Hex.ZMod64.Bounds p] {hp : Hex.Nat.Prime p} {f : Hex.FpPoly p} {hf : 0 < f.degree} {hirr : f.Irreducible} {x : Hex.GFqField.FiniteField f hf hp hirr} (hx : x ≠ 0) : x * x⁻¹ = 1
Hex.GFqField.inv_mul_cancel {p : Nat} [Hex.ZMod64.Bounds p] {hp : Hex.Nat.Prime p} {f : Hex.FpPoly p} {hf : 0 < f.degree} {hirr : f.Irreducible} {x : Hex.GFqField.FiniteField f hf hp hirr} (hx : x ≠ 0) : x⁻¹ * x = 1Hex.GFqField.inv_mul_cancel {p : Nat} [Hex.ZMod64.Bounds p] {hp : Hex.Nat.Prime p} {f : Hex.FpPoly p} {hf : 0 < f.degree} {hirr : f.Irreducible} {x : Hex.GFqField.FiniteField f hf hp hirr} (hx : x ≠ 0) : x⁻¹ * x = 1
A nonzero field element cancels against its inverse on the left.
Division is definitionally multiplication by the inverse, and the field
is nontrivial (0 ≠ 1), which is where irreducibility (hence a
positive-degree modulus) is used.
Hex.GFqField.div_eq_mul_inv {p : Nat} [Hex.ZMod64.Bounds p] {hp : Hex.Nat.Prime p} {f : Hex.FpPoly p} {hf : 0 < f.degree} {hirr : f.Irreducible} (x y : Hex.GFqField.FiniteField f hf hp hirr) : x / y = x * y⁻¹Hex.GFqField.div_eq_mul_inv {p : Nat} [Hex.ZMod64.Bounds p] {hp : Hex.Nat.Prime p} {f : Hex.FpPoly p} {hf : 0 < f.degree} {hirr : f.Irreducible} (x y : Hex.GFqField.FiniteField f hf hp hirr) : x / y = x * y⁻¹
Division is field multiplication by inverse.
Hex.GFqField.zero_ne_one {p : Nat} [Hex.ZMod64.Bounds p] (f : Hex.FpPoly p) (hf : 0 < f.degree) (hp : Hex.Nat.Prime p) (hirr : f.Irreducible) : 0 ≠ 1Hex.GFqField.zero_ne_one {p : Nat} [Hex.ZMod64.Bounds p] (f : Hex.FpPoly p) (hf : 0 < f.degree) (hp : Hex.Nat.Prime p) (hirr : f.Irreducible) : 0 ≠ 1
The quotient-field wrapper is nontrivial.
The Frobenius endomorphism is definitionally the p-th power map, the
form downstream code uses.
Hex.GFqField.frob_eq_pow {p : Nat} [Hex.ZMod64.Bounds p] {hp : Hex.Nat.Prime p} {f : Hex.FpPoly p} {hf : 0 < f.degree} {hirr : f.Irreducible} (x : Hex.GFqField.FiniteField f hf hp hirr) : Hex.GFqField.frob x = x ^ pHex.GFqField.frob_eq_pow {p : Nat} [Hex.ZMod64.Bounds p] {hp : Hex.Nat.Prime p} {f : Hex.FpPoly p} {hf : 0 < f.degree} {hirr : f.Irreducible} (x : Hex.GFqField.FiniteField f hf hp hirr) : Hex.GFqField.frob x = x ^ p
Frobenius is definitionally the p-th power map.
These laws, together with the ring axioms inherited from HexGFqRing,
are bundled into a Lean.Grind.Field instance on
Hex.GFqField.FiniteField, plus a Lean.Grind.IsCharP instance
recording characteristic p. That instance is the entry point for
downstream proof automation over the executable finite field.