Documentation

Mathlib.Topology.Algebra.Category.ProfiniteGrp

Category of Profinite Groups #

We say G is a profinite group if it is a topological group which is compact and totally disconnected.

Main definitions and results #

structure ProfiniteGrp :
Type (u_1 + 1)

The category of profinite groups. A term of this type consists of a profinite set with a topological group structure.

  • toProfinite : Profinite

    The underlying profinite topological space.

  • group : Group self.toProfinite.toTop

    The group structure.

  • topologicalGroup : TopologicalGroup self.toProfinite.toTop

    The above data together form a topological group.

Instances For
    theorem ProfiniteGrp.topologicalGroup (self : ProfiniteGrp.{u_1}) :
    TopologicalGroup self.toProfinite.toTop

    The above data together form a topological group.

    structure ProfiniteAddGrp :
    Type (u_1 + 1)

    The category of profinite additive groups. A term of this type consists of a profinite set with a topological additive group structure.

    • toProfinite : Profinite

      The underlying profinite topological space.

    • addGroup : AddGroup self.toProfinite.toTop

      The additive group structure.

    • topologicalAddGroup : TopologicalAddGroup self.toProfinite.toTop

      The above data together form a topological additive group.

    Instances For

      The above data together form a topological additive group.

      Equations
      Equations
      • One or more equations did not get rendered due to their size.
      Equations
      • One or more equations did not get rendered due to their size.
      theorem ProfiniteAddGrp.instConcreteCategory.proof_3 :
      { obj := fun (G : ProfiniteAddGrp.{u_1}) => G.toProfinite.toTop, map := fun {X Y : ProfiniteAddGrp.{u_1}} (f : X Y) => f, map_id := , map_comp := }.Faithful
      theorem ProfiniteAddGrp.instConcreteCategory.proof_1 (X : ProfiniteAddGrp.{u_1}) :
      { obj := fun (G : ProfiniteAddGrp.{u_1}) => G.toProfinite.toTop, map := fun {X Y : ProfiniteAddGrp.{u_1}} (f : X Y) => f }.map (CategoryTheory.CategoryStruct.id X) = CategoryTheory.CategoryStruct.id ({ obj := fun (G : ProfiniteAddGrp.{u_1}) => G.toProfinite.toTop, map := fun {X Y : ProfiniteAddGrp.{u_1}} (f : X Y) => f }.obj X)
      theorem ProfiniteAddGrp.instConcreteCategory.proof_2 {X : ProfiniteAddGrp.{u_1}} {Y : ProfiniteAddGrp.{u_1}} {Z : ProfiniteAddGrp.{u_1}} (f : X Y) (g : Y Z) :
      { obj := fun (G : ProfiniteAddGrp.{u_1}) => G.toProfinite.toTop, map := fun {X Y : ProfiniteAddGrp.{u_1}} (f : X Y) => f }.map (CategoryTheory.CategoryStruct.comp f g) = CategoryTheory.CategoryStruct.comp ({ obj := fun (G : ProfiniteAddGrp.{u_1}) => G.toProfinite.toTop, map := fun {X Y : ProfiniteAddGrp.{u_1}} (f : X Y) => f }.map f) ({ obj := fun (G : ProfiniteAddGrp.{u_1}) => G.toProfinite.toTop, map := fun {X Y : ProfiniteAddGrp.{u_1}} (f : X Y) => f }.map g)
      Equations
      • One or more equations did not get rendered due to their size.
      Equations
      • One or more equations did not get rendered due to their size.

      Construct a term of ProfiniteAddGrp from a type endowed with the structure of a compact and totally disconnected topological additive group. (The condition of being Hausdorff can be omitted here because totally disconnected implies that {0} is a closed set, thus implying Hausdorff in a topological additive group.)

      Equations
      Instances For

        Construct a term of ProfiniteGrp from a type endowed with the structure of a compact and totally disconnected topological group. (The condition of being Hausdorff can be omitted here because totally disconnected implies that {1} is a closed set, thus implying Hausdorff in a topological group.)

        Equations
        Instances For
          @[simp]
          theorem ProfiniteAddGrp.coe_of (X : ProfiniteAddGrp.{u_1}) :
          (ProfiniteAddGrp.of X.toProfinite.toTop).toProfinite.toTop = X.toProfinite.toTop
          @[simp]
          theorem ProfiniteGrp.coe_of (X : ProfiniteGrp.{u_1}) :
          (ProfiniteGrp.of X.toProfinite.toTop).toProfinite.toTop = X.toProfinite.toTop
          @[reducible, inline]

          Construct a term of ProfiniteAddGrp from a type endowed with the structure of a profinite topological additive group.

          Equations
          Instances For
            @[reducible, inline]

            Construct a term of ProfiniteGrp from a type endowed with the structure of a profinite topological group.

            Equations
            Instances For
              theorem ProfiniteAddGrp.pi.proof_1 {α : Type u_2} (β : αProfiniteAddGrp.{u_1}) :
              TopologicalAddGroup ((b : α) → ((fun (a : α) => (β a).toProfinite) b).toTop)

              The pi-type of profinite additive groups is a profinite additive group.

              Equations
              Instances For

                The pi-type of profinite groups is a profinite group.

                Equations
                Instances For

                  A FiniteAddGrp when given the discrete topology can be considered as a profinite additive group.

                  Equations
                  Instances For

                    A FiniteGrp when given the discrete topology can be considered as a profinite group.

                    Equations
                    Instances For
                      theorem ProfiniteAddGrp.instHasForget₂FiniteAddGrp.proof_3 {X : FiniteAddGrp.{u_1}} {Y : FiniteAddGrp.{u_1}} {Z : FiniteAddGrp.{u_1}} (f : X Y) (g : Y Z) :
                      { obj := ProfiniteAddGrp.ofFiniteAddGrp, map := fun {X Y : FiniteAddGrp.{u_1}} (f : X Y) => { toAddMonoidHom := f, continuous_toFun := } }.map (CategoryTheory.CategoryStruct.comp f g) = CategoryTheory.CategoryStruct.comp ({ obj := ProfiniteAddGrp.ofFiniteAddGrp, map := fun {X Y : FiniteAddGrp.{u_1}} (f : X Y) => { toAddMonoidHom := f, continuous_toFun := } }.map f) ({ obj := ProfiniteAddGrp.ofFiniteAddGrp, map := fun {X Y : FiniteAddGrp.{u_1}} (f : X Y) => { toAddMonoidHom := f, continuous_toFun := } }.map g)
                      Equations
                      • One or more equations did not get rendered due to their size.
                      theorem ProfiniteAddGrp.instHasForget₂FiniteAddGrp.proof_4 :
                      { obj := ProfiniteAddGrp.ofFiniteAddGrp, map := fun {X Y : FiniteAddGrp.{u_1}} (f : X Y) => { toAddMonoidHom := f, continuous_toFun := }, map_id := , map_comp := }.comp (CategoryTheory.forget ProfiniteAddGrp.{u_1}) = { obj := ProfiniteAddGrp.ofFiniteAddGrp, map := fun {X Y : FiniteAddGrp.{u_1}} (f : X Y) => { toAddMonoidHom := f, continuous_toFun := }, map_id := , map_comp := }.comp (CategoryTheory.forget ProfiniteAddGrp.{u_1})
                      theorem ProfiniteAddGrp.instHasForget₂FiniteAddGrp.proof_2 (X : FiniteAddGrp.{u_1}) :
                      { obj := ProfiniteAddGrp.ofFiniteAddGrp, map := fun {X Y : FiniteAddGrp.{u_1}} (f : X Y) => { toAddMonoidHom := f, continuous_toFun := } }.map (CategoryTheory.CategoryStruct.id X) = CategoryTheory.CategoryStruct.id ({ obj := ProfiniteAddGrp.ofFiniteAddGrp, map := fun {X Y : FiniteAddGrp.{u_1}} (f : X Y) => { toAddMonoidHom := f, continuous_toFun := } }.obj X)
                      Equations
                      • One or more equations did not get rendered due to their size.
                      theorem ProfiniteAddGrp.instHasForget₂AddGrp.proof_3 :
                      { obj := fun (P : ProfiniteAddGrp.{u_1}) => { α := P.toProfinite.toTop, str := P.addGroup }, map := fun {X Y : ProfiniteAddGrp.{u_1}} (f : X Y) => f.toAddMonoidHom, map_id := , map_comp := }.comp (CategoryTheory.forget AddGrp) = { obj := fun (P : ProfiniteAddGrp.{u_1}) => { α := P.toProfinite.toTop, str := P.addGroup }, map := fun {X Y : ProfiniteAddGrp.{u_1}} (f : X Y) => f.toAddMonoidHom, map_id := , map_comp := }.comp (CategoryTheory.forget AddGrp)
                      Equations
                      • One or more equations did not get rendered due to their size.
                      theorem ProfiniteAddGrp.instHasForget₂AddGrp.proof_2 {X : ProfiniteAddGrp.{u_1}} {Y : ProfiniteAddGrp.{u_1}} {Z : ProfiniteAddGrp.{u_1}} (f : X Y) (g : Y Z) :
                      { obj := fun (P : ProfiniteAddGrp.{u_1}) => { α := P.toProfinite.toTop, str := P.addGroup }, map := fun {X Y : ProfiniteAddGrp.{u_1}} (f : X Y) => f.toAddMonoidHom }.map (CategoryTheory.CategoryStruct.comp f g) = CategoryTheory.CategoryStruct.comp ({ obj := fun (P : ProfiniteAddGrp.{u_1}) => { α := P.toProfinite.toTop, str := P.addGroup }, map := fun {X Y : ProfiniteAddGrp.{u_1}} (f : X Y) => f.toAddMonoidHom }.map f) ({ obj := fun (P : ProfiniteAddGrp.{u_1}) => { α := P.toProfinite.toTop, str := P.addGroup }, map := fun {X Y : ProfiniteAddGrp.{u_1}} (f : X Y) => f.toAddMonoidHom }.map g)
                      theorem ProfiniteAddGrp.instHasForget₂AddGrp.proof_1 (X : ProfiniteAddGrp.{u_1}) :
                      { obj := fun (P : ProfiniteAddGrp.{u_1}) => { α := P.toProfinite.toTop, str := P.addGroup }, map := fun {X Y : ProfiniteAddGrp.{u_1}} (f : X Y) => f.toAddMonoidHom }.map (CategoryTheory.CategoryStruct.id X) = CategoryTheory.CategoryStruct.id ({ obj := fun (P : ProfiniteAddGrp.{u_1}) => { α := P.toProfinite.toTop, str := P.addGroup }, map := fun {X Y : ProfiniteAddGrp.{u_1}} (f : X Y) => f.toAddMonoidHom }.obj X)
                      Equations
                      • One or more equations did not get rendered due to their size.