Effective trace Gram matrices #
theorem
MIPRE.SAT.shoupBinField_oneBits
(k : ℕ)
(hk : 1 ≤ k)
(v : Cost.BitStr)
(hv : List.length v = k)
:
The actual coefficient-vector representation of the unit.
Output the trace as one base-field bit, rather than an extension-field vector.
Equations
Instances For
theorem
MIPRE.SAT.shoupTraceBitProg_correct
(k : ℕ)
(hk : 1 ≤ k)
(a : (shoupBinField k hk).carrier)
:
shoupTraceBitProg.toFun (Cost.unary k, (shoupBinField k hk).toBits a) = LowDegree.BinaryLinear.bit ((Algebra.trace (ZMod 2) (shoupBinField k hk).carrier) a)
noncomputable def
MIPRE.SAT.shoupTraceGram
(k : ℕ)
(hk : 1 ≤ k)
{n : ℕ}
(v : Fin n → (shoupBinField k hk).carrier)
:
The binary trace Gram matrix of any finite field-vector family.
Equations
- MIPRE.SAT.shoupTraceGram k hk v i j = (Algebra.trace (ZMod 2) (MIPRE.SAT.shoupBinField k hk).carrier) (v i * v j)
Instances For
Construct the full trace Gram matrix of a supplied family.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
MIPRE.SAT.shoupTraceGramProg_correct
(k : ℕ)
(hk : 1 ≤ k)
{n : ℕ}
(v : Fin n → (shoupBinField k hk).carrier)
:
shoupTraceGramProg.toFun (Cost.unary k, List.ofFn fun (i : Fin n) => (shoupBinField k hk).toBits (v i)) = LowDegree.BinaryLinear.matrixBits (shoupTraceGram k hk v)
Every printed entry is the algebraic trace of the corresponding product.
theorem
MIPRE.SAT.shoupTraceGram_surjective
(k : ℕ)
(hk : 1 ≤ k)
(b : Module.Basis (Fin k) (ZMod 2) (shoupBinField k hk).carrier)
:
Function.Surjective (shoupTraceGram k hk ⇑b).mulVec
A basis has a nonsingular trace Gram matrix.
Compute the inverse trace Gram matrix of a basis.
Equations
Instances For
theorem
MIPRE.SAT.shoupInverseGramProg_correct
(k : ℕ)
(hk : 1 ≤ k)
(b : Module.Basis (Fin k) (ZMod 2) (shoupBinField k hk).carrier)
:
LowDegree.BinaryLinear.mulBits k (LowDegree.BinaryLinear.matrixBits (shoupTraceGram k hk ⇑b))
(shoupInverseGramProg.toFun (Cost.unary k, List.ofFn fun (i : Fin k) => (shoupBinField k hk).toBits (b i))) = LowDegree.BinaryLinear.identityBits k ∧ LowDegree.BinaryLinear.mulBits k
(shoupInverseGramProg.toFun (Cost.unary k, List.ofFn fun (i : Fin k) => (shoupBinField k hk).toBits (b i)))
(LowDegree.BinaryLinear.matrixBits (shoupTraceGram k hk ⇑b)) = LowDegree.BinaryLinear.identityBits k