Concrete Binary Tower Core #
Core definitions for the concrete bitvector model of the binary tower.
@[simp]
@[simp]
Instances For
@[implicit_reducible]
@[implicit_reducible]
@[implicit_reducible]
@[implicit_reducible]
instance
ConcreteBinaryTower.instHAddConcreteBTField
(k : ℕ)
:
HAdd (ConcreteBTField k) (ConcreteBTField k) (ConcreteBTField k)
@[implicit_reducible]
@[implicit_reducible]
noncomputable instance
ConcreteBinaryTower.instDecidableEqGaloisFieldOfNatNat_compPoly :
DecidableEq (GF(2))
@[implicit_reducible]
Instances For
Instances For
Instances For
Instances For
@[reducible]
Instances For
@[implicit_reducible]
theorem
ConcreteBinaryTower.BitVec.extractLsb_dcast_eq
{w w2 hi lo : ℕ}
(x : BitVec w)
(h : w = w2)
:
theorem
ConcreteBinaryTower.join_eq_dcast_append
{k : ℕ}
(h_pos : k > 0)
(hi lo : ConcreteBTField (k - 1))
:
theorem
ConcreteBinaryTower.eq_join_iff_dcast_eq_append
{k : ℕ}
(h_pos : k > 0)
(x : ConcreteBTField k)
(hi lo : ConcreteBTField (k - 1))
:
theorem
ConcreteBinaryTower.join_eq_iff_dcast_extractLsb
{k : ℕ}
(h_pos : k > 0)
(x : ConcreteBTField k)
(hi_btf lo_btf : ConcreteBTField (k - 1))
:
theorem
ConcreteBinaryTower.join_eq_bitvec_iff_fromNat
{k : ℕ}
(h_pos : k > 0)
(x : ConcreteBTField k)
(hi_btf lo_btf : ConcreteBTField (k - 1))
:
theorem
ConcreteBinaryTower.join_of_split
{k : ℕ}
(h_pos : k > 0)
(x : ConcreteBTField k)
(hi_btf lo_btf : ConcreteBTField (k - 1))
(h_split_eq : split h_pos x = (hi_btf, lo_btf))
:
theorem
ConcreteBinaryTower.split_of_join
{k : ℕ}
(h_pos : k > 0)
(x : ConcreteBTField k)
(hi_btf lo_btf : ConcreteBTField (k - 1))
(h_join : x = join h_pos hi_btf lo_btf)
:
Instances For
@[irreducible]
Instances For
@[implicit_reducible]
instance
ConcreteBinaryTower.instHMulConcreteBTField
(k : ℕ)
:
HMul (ConcreteBTField k) (ConcreteBTField k) (ConcreteBTField k)
@[irreducible]
Instances For
@[irreducible]
Instances For
@[implicit_reducible]
@[implicit_reducible]
@[implicit_reducible]
@[implicit_reducible]
theorem
ConcreteBinaryTower.concrete_eq_zero_or_eq_one
{k : ℕ}
{a : ConcreteBTField k}
(h_k_zero : k = 0)
:
@[implicit_reducible]
theorem
ConcreteBinaryTower.concrete_exists_pair_ne
{k : ℕ}
:
∃ (x : ConcreteBTField k) (y : ConcreteBTField k), x ≠ y
@[implicit_reducible]
@[implicit_reducible]
Instances For
@[implicit_reducible]
instance
ConcreteBinaryTower.instHDivConcreteBTF
{k : ℕ}
:
HDiv (ConcreteBTField k) (ConcreteBTField k) (ConcreteBTField k)
@[implicit_reducible]
instance
ConcreteBinaryTower.instHPowConcreteBTFℤ
{k : ℕ}
:
HPow (ConcreteBTField k) ℤ (ConcreteBTField k)
@[implicit_reducible]
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))