Concrete binary tower field construction interface #
Compatibility entry point for the executable arithmetic, together with the law records,
finite-field utilities, and field-instance assembly used by the recursive construction.
Arithmetic-only clients can import CompPoly.Fields.Binary.Tower.Concrete.Arithmetic;
canonical field clients use CompPoly.Fields.Binary.Tower.Concrete.Field.
@[instance_reducible]
noncomputable instance
ConcreteBinaryTower.instDecidableEqGaloisFieldOfNatNat_compPoly :
DecidableEq (GF(2))
Instances For
Instances For
structure
ConcreteBinaryTower.ConcreteBTFRingProps
(k : ℕ)
extends ConcreteBinaryTower.ConcreteBTFAddCommGroupProps k :
- mul_eq (a b : ConcreteBTField k) (h_k : k > 0) {a₁ a₀ b₁ b₀ : ConcreteBTField (k - 1)} (_h_a : (a₁, a₀) = split h_k a) (_h_b : (b₁, b₀) = split h_k b) : concrete_mul a b = join h_k (concrete_mul a₀ b₁ + concrete_mul b₀ a₁ + concrete_mul (concrete_mul a₁ b₁) (Z (k - 1))) (concrete_mul a₀ b₀ + concrete_mul a₁ b₁)
- mul_assoc (a b c : ConcreteBTField k) : concrete_mul (concrete_mul a b) c = concrete_mul a (concrete_mul b c)
- mul_left_distrib (a b c : ConcreteBTField k) : concrete_mul a (b + c) = concrete_mul a b + concrete_mul a c
- mul_right_distrib (a b c : ConcreteBTField k) : concrete_mul (a + b) c = concrete_mul a c + concrete_mul b c
Instances For
structure
ConcreteBinaryTower.ConcreteBTFDivisionRingProps
(k : ℕ)
extends ConcreteBinaryTower.ConcreteBTFRingProps k :
- mul_eq (a b : ConcreteBTField k) (h_k : k > 0) {a₁ a₀ b₁ b₀ : ConcreteBTField (k - 1)} (_h_a : (a₁, a₀) = split h_k a) (_h_b : (b₁, b₀) = split h_k b) : concrete_mul a b = join h_k (concrete_mul a₀ b₁ + concrete_mul b₀ a₁ + concrete_mul (concrete_mul a₁ b₁) (Z (k - 1))) (concrete_mul a₀ b₀ + concrete_mul a₁ b₁)
- mul_assoc (a b c : ConcreteBTField k) : concrete_mul (concrete_mul a b) c = concrete_mul a (concrete_mul b c)
- mul_left_distrib (a b c : ConcreteBTField k) : concrete_mul a (b + c) = concrete_mul a b + concrete_mul a c
- mul_right_distrib (a b c : ConcreteBTField k) : concrete_mul (a + b) c = concrete_mul a c + concrete_mul b c
- mul_inv_cancel (a : ConcreteBTField k) : a ≠ zero → concrete_mul a (concrete_inv a) = one
Instances For
structure
ConcreteBinaryTower.ConcreteBTFieldProps
(k : ℕ)
extends ConcreteBinaryTower.ConcreteBTFDivisionRingProps k :
- mul_eq (a b : ConcreteBTField k) (h_k : k > 0) {a₁ a₀ b₁ b₀ : ConcreteBTField (k - 1)} (_h_a : (a₁, a₀) = split h_k a) (_h_b : (b₁, b₀) = split h_k b) : concrete_mul a b = join h_k (concrete_mul a₀ b₁ + concrete_mul b₀ a₁ + concrete_mul (concrete_mul a₁ b₁) (Z (k - 1))) (concrete_mul a₀ b₀ + concrete_mul a₁ b₁)
- mul_assoc (a b c : ConcreteBTField k) : concrete_mul (concrete_mul a b) c = concrete_mul a (concrete_mul b c)
- mul_left_distrib (a b c : ConcreteBTField k) : concrete_mul a (b + c) = concrete_mul a b + concrete_mul a c
- mul_right_distrib (a b c : ConcreteBTField k) : concrete_mul (a + b) c = concrete_mul a c + concrete_mul b c
Instances For
@[reducible]
def
ConcreteBinaryTower.mkRingInstance
{k : ℕ}
(props : ConcreteBTFieldProps k)
:
Ring (ConcreteBTField k)
Instances For
@[reducible]
Instances For
@[reducible]
def
ConcreteBinaryTower.mkFieldInstance
{k : ℕ}
(props : ConcreteBTFieldProps k)
:
Field (ConcreteBTField k)
Instances For
structure
ConcreteBinaryTower.ConcreteBTFStepResult
(k : ℕ)
extends ConcreteBinaryTower.ConcreteBTFieldProps k :
- mul_eq (a b : ConcreteBTField k) (h_k : k > 0) {a₁ a₀ b₁ b₀ : ConcreteBTField (k - 1)} (_h_a : (a₁, a₀) = split h_k a) (_h_b : (b₁, b₀) = split h_k b) : concrete_mul a b = join h_k (concrete_mul a₀ b₁ + concrete_mul b₀ a₁ + concrete_mul (concrete_mul a₁ b₁) (Z (k - 1))) (concrete_mul a₀ b₀ + concrete_mul a₁ b₁)
- mul_assoc (a b c : ConcreteBTField k) : concrete_mul (concrete_mul a b) c = concrete_mul a (concrete_mul b c)
- mul_left_distrib (a b c : ConcreteBTField k) : concrete_mul a (b + c) = concrete_mul a b + concrete_mul a c
- mul_right_distrib (a b c : ConcreteBTField k) : concrete_mul (a + b) c = concrete_mul a c + concrete_mul b c
- instFintype : Fintype (ConcreteBTField k)
- traceMapEvalAtRootsIs1 : TraceMapProperty (ConcreteBTField k) (Z k) k
- instIrreduciblePoly : Irreducible (definingPoly (Z k))