Documentation

CompPoly.Fields.Binary.Tower.Concrete.Algebra

Concrete Binary Tower Algebra #

Algebra maps and embeddings for the concrete bitvector binary tower.

@[simp]

Z(k+1) is the adjoined root of poly k to ConcreteBTField (k+1), so it is not lifted to ConcreteBTField (k+1) by canonicalAlgMap

@[simp]
@[simp]
@[irreducible]

Auxiliary definition for concreteTowerAlgebraMap using structural recursion. This is easier to reason about in proofs than the Nat.rec version.

Instances For

    Right associativity of the Tower Map

    Left associativity of the Tower Map

    @[simp]

    Cast of composition of ConcreteBTField ring homomorphism is composition of casted ConcreteBTField ring homomorphism. Note that this assumes the SAME underlying instances (e.g. NonAssocSemiring) for both the input and output ring homs.

    theorem ConcreteBinaryTower.concreteTowerAlgebraMap_assoc (r mid l : ) (h_l_le_mid : l mid) (h_mid_le_r : mid r) :
    concreteTowerAlgebraMap l r = (concreteTowerAlgebraMap mid r h_mid_le_r).comp (concreteTowerAlgebraMap l mid h_l_le_mid)
    @[implicit_reducible]

    Formalization of Cross - Level Algebra : For any k ≤ τ, ConcreteBTField τ is an algebra over ConcreteBTField k.

    @[reducible, inline]
    Instances For
      def ConcreteBinaryTower.join_via_add_smul (k : ) (h_pos : k > 0) (hi_btf lo_btf : ConcreteBTField (k - 1)) :
      Instances For
        theorem ConcreteBinaryTower.split_algebraMap_eq_zero_x {k : } (h_pos : k > 0) (x : ConcreteBTField (k - 1)) :

        An element x lifted from the base field ConcreteBTField (k-1) has (0, x) as its split representation in ConcreteBTField k.

        theorem ConcreteBinaryTower.split_smul_Z_eq_zero_x {k : } (h_pos : k > 0) (x : ConcreteBTField (k - 1)) :
        split h_pos (x Z k) = (x, 0)
        theorem ConcreteBinaryTower.smul_Z_eq_zero_x {k : } (h_pos : k > 0) (x : ConcreteBTField (k - 1)) :
        x Z k = join h_pos x 0
        @[simp]
        theorem ConcreteBinaryTower.join_eq_join_via_add_smul {k : } (h_pos : k > 0) (hi_btf lo_btf : ConcreteBTField (k - 1)) :
        join h_pos hi_btf lo_btf = join_via_add_smul k h_pos hi_btf lo_btf
        theorem ConcreteBinaryTower.split_join_via_add_smul_eq_iff_split {k : } (h_pos : k > 0) (hi_btf lo_btf : ConcreteBTField (k - 1)) :
        split h_pos (join_via_add_smul k h_pos hi_btf lo_btf) = (hi_btf, lo_btf)
        @[reducible, inline]

        This also provides the corresponding Module instance.

        Instances For