A normal element from primitive Frobenius projections #
Deterministically select the first nonzero element, with zero as the empty default.
Equations
- MIPRE.SAT.firstNonzero [] = 0
- MIPRE.SAT.firstNonzero (a :: l) = if a = 0 then MIPRE.SAT.firstNonzero l else a
Instances For
theorem
MIPRE.SAT.firstNonzero_property
{E : Type u_1}
[Zero E]
[DecidableEq E]
(P : E → Prop)
(hzero : P 0)
(l : List E)
(hl : ∀ a ∈ l, P a)
:
P (firstNonzero l)
noncomputable def
MIPRE.SAT.shoupProjectedVector
(k : ℕ)
(hk : 1 ≤ k)
[NeZero k]
(e : AddMonoidAlgebra (ZMod 2) (Fin k))
:
(shoupBinField k hk).carrier
Scan the polynomial basis for the first nonzero image of a cyclic operator.
Equations
- MIPRE.SAT.shoupProjectedVector k hk e = MIPRE.SAT.firstNonzero (List.ofFn fun (j : Fin k) => ((MIPRE.SAT.shoupFrobeniusAction k hk) e) ((MIPRE.SAT.shoupPowerBasis k hk) j))
Instances For
theorem
MIPRE.SAT.shoupProjectedVector_ne_zero
(k : ℕ)
(hk : 1 ≤ k)
[NeZero k]
(e : AddMonoidAlgebra (ZMod 2) (Fin k))
(he : e ≠ 0)
:
theorem
MIPRE.SAT.shoupProjectedVector_supported
(k : ℕ)
(hk : 1 ≤ k)
[NeZero k]
(e : AddMonoidAlgebra (ZMod 2) (Fin k))
(he : e * e = e)
:
noncomputable def
MIPRE.SAT.shoupNormalElement
(k : ℕ)
(hk : 1 ≤ k)
[NeZero k]
:
(shoupBinField k hk).carrier
Sum the selected nonzero projected vectors, in the computed component order.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
MIPRE.SAT.shoupNormalElement_projection
(k : ℕ)
(hk : 1 ≤ k)
[NeZero k]
(j : Fin (LowDegree.BinaryLinear.groupComponents k).length)
:
((shoupFrobeniusAction k hk) ((LowDegree.BinaryLinear.groupComponents k).get j)) (shoupNormalElement k hk) = shoupProjectedVector k hk ((LowDegree.BinaryLinear.groupComponents k).get j)
Evaluation at the constructed element is a linear map from the cyclic algebra.
Equations
- One or more equations did not get rendered due to their size.
Instances For
No nonzero cyclic operator kills the sum: each primitive component has its own nonzero image.
theorem
MIPRE.SAT.shoupNormalElement_linearIndependent
(k : ℕ)
(hk : 1 ≤ k)
[NeZero k]
(hodd : Odd k)
:
LinearIndependent (ZMod 2) fun (i : Fin k) => shoupNormalElement k hk ^ 2 ^ ↑i
The orbit of the computed normal element is linearly independent.
noncomputable def
MIPRE.SAT.shoupNormalBasis
(k : ℕ)
(hk : 1 ≤ k)
[NeZero k]
(hodd : Odd k)
:
Module.Basis (Fin k) (ZMod 2) (shoupBinField k hk).carrier
The explicitly constructed Frobenius orbit as a basis.
Equations
Instances For
theorem
MIPRE.SAT.shoupNormalBasis_normal
(k : ℕ)
(hk : 1 ≤ k)
[NeZero k]
(hodd : Odd k)
:
LowDegree.IsNormalBasis (shoupNormalBasis k hk hodd)