Instances For
Instances For
theorem
AddGRConstruction.rel_refl
(M : Type u)
[AddCommMonoid M]
(x : M × M)
:
AddGRConstruction.rel M x x
theorem
GRConstruction.rel_symm
(M : Type u)
[CommMonoid M]
{x y : M × M}
:
GRConstruction.rel M x y → GRConstruction.rel M y x
theorem
AddGRConstruction.rel_symm
(M : Type u)
[AddCommMonoid M]
{x y : M × M}
:
AddGRConstruction.rel M x y → AddGRConstruction.rel M y x
theorem
GRConstruction.rel_trans
(M : Type u)
[CommMonoid M]
{x y z : M × M}
:
GRConstruction.rel M x y → GRConstruction.rel M y z → GRConstruction.rel M x z
theorem
AddGRConstruction.rel_trans
(M : Type u)
[AddCommMonoid M]
{x y z : M × M}
:
AddGRConstruction.rel M x y → AddGRConstruction.rel M y z → AddGRConstruction.rel M x z
Equations
- GRConstruction.con M = { r := GRConstruction.rel M, iseqv := ⋯, mul' := ⋯ }
Instances For
Equations
- AddGRConstruction.addCon M = { r := AddGRConstruction.rel M, iseqv := ⋯, add' := ⋯ }
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✝¹
Equations
- GR.«term_ᵍʳ» = Lean.ParserDescr.trailingNode `GR.«term_ᵍʳ» 1024 1024 (Lean.ParserDescr.symbol "ᵍʳ")
Instances For
Equations
- GR.«term_ᵃᵍʳ» = Lean.ParserDescr.trailingNode `GR.«term_ᵃᵍʳ» 1024 1024 (Lean.ParserDescr.symbol "ᵃᵍʳ")
Instances For
theorem
GR.emb_injective
(M : Type u)
[CommMonoid M]
[IsCancelMul M]
:
Function.Injective ⇑(GR.emb M)
theorem
AddGR.recOn
{M : Type u}
[AddCommMonoid M]
{motive : AddGR M → Prop}
(x : AddGR M)
(base : ∀ (x : M), motive ↑(x, 0))
(inv : ∀ (x : M), motive ↑(0, x))
(mul : ∀ (x y : AddGR M), motive x → motive y → motive (x + y))
:
motive x
Equations
- GR.instInv = { inv := ⇑((GRConstruction.con M).lift ((GRConstruction.con M).mk'.comp { toFun := Prod.swap, map_one' := ⋯, map_mul' := ⋯ }) ⋯) }
Equations
- AddGR.instNeg = { neg := ⇑((AddGRConstruction.addCon M).lift ((AddGRConstruction.addCon M).mk'.comp { toFun := Prod.swap, map_zero' := ⋯, map_add' := ⋯ }) ⋯) }
Equations
Equations
Equations
- AddGR.lift f = (AddGRConstruction.addCon M).lift { toFun := fun (p : M × M) => f p.1 + -f p.2, map_zero' := ⋯, map_add' := ⋯ } ⋯
Instances For
@[simp]
@[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]
@[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
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)
:
f' = AddGR.lift f
@[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
instance
GR.instIsCancelMulSubtypeMemSubmonoid
{M : Type u}
[CommGroup M]
(N : Submonoid M)
:
IsCancelMul ↥N
noncomputable def
GR.equivAsSubgroup
{M : Type u}
[CommGroup M]
(N : Submonoid M)
:
GR ↥N ≃* ↥(Subgroup.closure ↑N)
Equations
Instances For
noncomputable def
AddGR.equivAsAddSubgroup
{M : Type u}
[AddCommGroup M]
(N : AddSubmonoid M)
:
AddGR ↥N ≃+ ↥(AddSubgroup.closure ↑N)
Equations
Instances For
@[simp]
theorem
AddGR.equivAsAddSubgroup_apply
{M : Type u}
[AddCommGroup M]
(N : AddSubmonoid M)
(a : AddGR ↥N)
:
(AddGR.equivAsAddSubgroup N) a = (AddGR.lift (AddSubmonoid.inclusion ⋯)) a
@[simp]
theorem
GR.equivAsSubgroup_apply
{M : Type u}
[CommGroup M]
(N : Submonoid M)
(a : GR ↥N)
:
(GR.equivAsSubgroup N) a = (GR.lift (Submonoid.inclusion ⋯)) a