Documentation

Project.GR.Basic

def GRConstruction.rel (M : Type u) [CommMonoid M] :
M × MM × MProp
Equations
Instances For
    def AddGRConstruction.rel (M : Type u) [AddCommMonoid M] :
    M × MM × MProp
    Equations
    Instances For
      theorem GRConstruction.rel_symm (M : Type u) [CommMonoid M] {x y : M × M} :
      theorem GRConstruction.rel_trans (M : Type u) [CommMonoid M] {x y z : M × M} :
      def GRConstruction.con (M : Type u) [CommMonoid M] :
      Con (M × M)
      Equations
      Instances For
        Equations
        Instances For
          @[simp]
          theorem GRConstruction.con_r (M : Type u) [CommMonoid M] (a✝ a✝¹ : M × M) :
          (GRConstruction.con M).toSetoid a✝ a✝¹ = GRConstruction.rel M a✝ a✝¹
          @[simp]
          theorem AddGRConstruction.addCon_r (M : Type u) [AddCommMonoid M] (a✝ a✝¹ : M × M) :
          (AddGRConstruction.addCon M).toSetoid a✝ a✝¹ = AddGRConstruction.rel M a✝ a✝¹
          theorem GRConstruction.con_def (M : Type u) [CommMonoid M] (x y : M × M) :
          (GRConstruction.con M) x y = ∃ (z : M), x.1 * y.2 * z = y.1 * x.2 * z
          theorem AddGRConstruction.con_def (M : Type u) [AddCommMonoid M] (x y : M × M) :
          (AddGRConstruction.addCon M) x y = ∃ (z : M), x.1 + y.2 + z = y.1 + x.2 + z
          @[reducible, inline]
          abbrev GR (M : Type u_1) [CommMonoid M] :
          Type u_1
          Equations
          Instances For
            @[reducible, inline]
            abbrev AddGR (M : Type u_1) [AddCommMonoid M] :
            Type u_1
            Equations
            Instances For
              def GR.emb (M : Type u) [CommMonoid M] :
              M →* GR M
              Equations
              • GR.emb M = { toFun := fun (x : M) => (x, 1), map_one' := , map_mul' := }
              Instances For
                def AddGR.emb (M : Type u) [AddCommMonoid M] :
                Equations
                • AddGR.emb M = { toFun := fun (x : M) => (x, 0), map_zero' := , map_add' := }
                Instances For
                  theorem GR.recOn {M : Type u} [CommMonoid M] {motive : GR MProp} (x : GR M) (base : ∀ (x : M), motive (x, 1)) (inv : ∀ (x : M), motive (1, x)) (mul : ∀ (x y : GR M), motive xmotive ymotive (x * y)) :
                  motive x
                  theorem AddGR.recOn {M : Type u} [AddCommMonoid M] {motive : AddGR MProp} (x : AddGR M) (base : ∀ (x : M), motive (x, 0)) (inv : ∀ (x : M), motive (0, x)) (mul : ∀ (x y : AddGR M), motive xmotive ymotive (x + y)) :
                  motive x
                  instance GR.instInv {M : Type u} [CommMonoid M] :
                  Inv (GR M)
                  Equations
                  instance AddGR.instNeg {M : Type u} [AddCommMonoid M] :
                  Equations
                  @[simp]
                  theorem GR.inv_coe {M : Type u} [CommMonoid M] (x y : M) :
                  (↑(x, y))⁻¹ = (y, x)
                  @[simp]
                  theorem AddGR.neg_coe {M : Type u} [AddCommMonoid M] (x y : M) :
                  -(x, y) = (y, x)
                  @[simp]
                  theorem GR.coe_same {M : Type u} [CommMonoid M] (x : M) :
                  (x, x) = 1
                  @[simp]
                  theorem AddGR.coe_same {M : Type u} [AddCommMonoid M] (x : M) :
                  (x, x) = 0
                  instance GR.instGroup {M : Type u} [CommMonoid M] :
                  Group (GR M)
                  Equations
                  def GR.lift {M : Type u} [CommMonoid M] {G : Type v} [Group G] (f : M →* G) :
                  GR M →* G
                  Equations
                  Instances For
                    def AddGR.lift {M : Type u} [AddCommMonoid M] {G : Type v} [AddGroup G] (f : M →+ G) :
                    Equations
                    Instances For
                      @[simp]
                      theorem GR.lift_comp_emb {M : Type u} [CommMonoid M] {G : Type v} [Group G] (f : M →* G) :
                      (GR.lift f).comp (GR.emb M) = f
                      @[simp]
                      theorem AddGR.lift_comp_emb {M : Type u} [AddCommMonoid M] {G : Type v} [AddGroup G] (f : M →+ G) :
                      (AddGR.lift f).comp (AddGR.emb M) = f
                      @[simp]
                      theorem GR.lift_emb_apply {M : Type u} [CommMonoid M] {G : Type v} [Group G] (f : M →* G) (x : M) :
                      (GR.lift f) ((GR.emb M) x) = f x
                      @[simp]
                      theorem AddGR.lift_emb_apply {M : Type u} [AddCommMonoid M] {G : Type v} [AddGroup G] (f : M →+ G) (x : M) :
                      (AddGR.lift f) ((AddGR.emb M) x) = f x
                      @[simp]
                      theorem GR.lift_uniq {M : Type u} [CommMonoid M] {G : Type v} [Group G] (f : M →* G) (f' : GR M →* G) (h : f'.comp (GR.emb M) = f) :
                      f' = GR.lift f
                      @[simp]
                      theorem AddGR.lift_uniq {M : Type u} [AddCommMonoid M] {G : Type v} [AddGroup G] (f : M →+ G) (f' : AddGR M →+ G) (h : f'.comp (AddGR.emb M) = f) :
                      @[simp]
                      theorem GR.lift_apply_coe {M : Type u} [CommMonoid M] {G : Type v} [Group G] (f : M →* G) (a b : M) :
                      (GR.lift f) (a, b) = f a * (f b)⁻¹
                      @[simp]
                      theorem AddGR.lift_apply_coe {M : Type u} [AddCommMonoid M] {G : Type v} [AddGroup G] (f : M →+ G) (a b : M) :
                      (AddGR.lift f) (a, b) = f a + -f b
                      noncomputable def GR.equivAsSubgroup {M : Type u} [CommGroup M] (N : Submonoid M) :
                      GR N ≃* (Subgroup.closure N)
                      Equations
                      Instances For
                        @[simp]
                        theorem GR.equivAsSubgroup_apply {M : Type u} [CommGroup M] (N : Submonoid M) (a : GR N) :