Deterministic refinement by binary idempotents #
Split a component by a fixed idempotent and omit its zero children.
Equations
Instances For
theorem
MIPRE.LowDegree.splitComponent_factor
{R : Type u_1}
[CommRing R]
[DecidableEq R]
{e b x : R}
(hx : x ∈ splitComponent e b)
:
theorem
MIPRE.LowDegree.splitComponent_idempotent
{R : Type u_1}
[CommRing R]
[DecidableEq R]
{e b : R}
(he : e * e = e)
(hb : b * b = b)
{x : R}
(hx : x ∈ splitComponent e b)
:
theorem
MIPRE.LowDegree.splitComponent_pairwise
{R : Type u_1}
[CommRing R]
[DecidableEq R]
(e : R)
{b : R}
(hb : b * b = b)
:
List.Pairwise (fun (x y : R) => x * y = 0) (splitComponent e b)
A finite complete family of nonzero orthogonal idempotents.
- orthogonal : List.Pairwise (fun (e f : R) => e * f = 0) l
Instances For
def
MIPRE.LowDegree.splitComponents
{R : Type u_1}
[CommRing R]
[DecidableEq R]
(l : List R)
(b : R)
:
List R
Refine all current components in the fixed input order.
Equations
- MIPRE.LowDegree.splitComponents l b = List.flatMap (fun (e : R) => MIPRE.LowDegree.splitComponent e b) l
Instances For
theorem
MIPRE.LowDegree.ComponentFamily.split
{R : Type u_1}
[CommRing R]
[DecidableEq R]
{l : List R}
(hl : ComponentFamily l)
{b : R}
(hb : b * b = b)
:
theorem
MIPRE.LowDegree.splitComponent_decides
{R : Type u_1}
[CommRing R]
[DecidableEq R]
{e b x : R}
(hb : b * b = b)
(hx : x ∈ splitComponent e b)
:
DecidesComponent x b
theorem
MIPRE.LowDegree.splitComponent_preserves
{R : Type u_1}
[CommRing R]
[DecidableEq R]
{e b c x : R}
(hc : DecidesComponent e c)
(hx : x ∈ splitComponent e b)
:
DecidesComponent x c
def
MIPRE.LowDegree.splitAllComponents
{R : Type u_1}
[CommRing R]
[DecidableEq R]
(l bs : List R)
:
List R
Iterate the deterministic refinement over a fixed generating family.
Equations
Instances For
theorem
MIPRE.LowDegree.ComponentFamily.splitAll
{R : Type u_1}
[CommRing R]
[DecidableEq R]
{l bs : List R}
(hl : ComponentFamily l)
(hb : ∀ b ∈ bs, b * b = b)
:
theorem
MIPRE.LowDegree.splitAllComponents_preserves
{R : Type u_1}
[CommRing R]
[DecidableEq R]
{l bs : List R}
{c : R}
(hc : ∀ e ∈ l, DecidesComponent e c)
(e : R)
:
e ∈ splitAllComponents l bs → DecidesComponent e c
theorem
MIPRE.LowDegree.splitAllComponents_decides
{R : Type u_1}
[CommRing R]
[DecidableEq R]
{l bs : List R}
(hb : ∀ b ∈ bs, b * b = b)
(e : R)
:
e ∈ splitAllComponents l bs → ∀ b ∈ bs, DecidesComponent e b
theorem
MIPRE.LowDegree.decidesComponent_of_mem_span
{R : Type u_1}
[CommRing R]
[DecidableEq R]
[Algebra (ZMod 2) R]
(e : R)
(bs : List R)
(hb : ∀ b ∈ bs, DecidesComponent e b)
(z : R)
(hz : z ∈ Submodule.span (ZMod 2) {b : R | b ∈ bs})
:
DecidesComponent e z
Deciding each generator means deciding every binary linear combination.
theorem
MIPRE.LowDegree.splitAllComponents_primitive
{R : Type u_1}
[CommRing R]
[DecidableEq R]
[Algebra (ZMod 2) R]
{l bs : List R}
(hl : ComponentFamily l)
(hb : ∀ b ∈ bs, b * b = b)
(hspan : ∀ (z : R), z * z = z → z ∈ Submodule.span (ZMod 2) {b : R | b ∈ bs})
(e : R)
:
e ∈ splitAllComponents l bs → PrimitiveBinaryComponent e
Separating a spanning family of fixed vectors makes every remaining component primitive.
theorem
MIPRE.LowDegree.ComponentFamily.linearIndependent
{R : Type u_1}
[CommRing R]
[DecidableEq R]
[Algebra (ZMod 2) R]
{l : List R}
(hl : ComponentFamily l)
:
LinearIndependent (ZMod 2) fun (i : Fin l.length) => l.get i
Nonzero orthogonal idempotents are linearly independent over the binary base field.
theorem
MIPRE.LowDegree.ComponentFamily.length_le_finrank
{R : Type u_1}
[CommRing R]
[DecidableEq R]
[Algebra (ZMod 2) R]
[Module.Finite (ZMod 2) R]
{l : List R}
(hl : ComponentFamily l)
:
Thus refinement can retain at most the ambient vector-space dimension.