Documentation

Mathlib.GroupTheory.MonoidLocalization.Maps

Mapping properties of monoid localizations #

Given an S-localization map f : M โ†’* N, we can define Submonoid.LocalizationMap.lift, the homomorphism from N induced by a homomorphism from M which maps elements of S to invertible elements of the codomain. Similarly, given commutative monoids P, Q, a submonoid T of P and a localization map for T from P to Q, then a homomorphism g : M โ†’* P such that g(S) โІ T induces a homomorphism of localizations, LocalizationMap.map, from N to Q.

Tags #

localization, monoid localization, quotient monoid, congruence relation, characteristic predicate, commutative monoid, grothendieck group

theorem Submonoid.LocalizationMap.eq_of_eq {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} (hg : โˆ€ (y : โ†ฅS), IsUnit (g โ†‘y)) {x y : M} (h : f x = f y) :
g x = g y

Given a Localization map f : M โ†’* N for a Submonoid S โІ M and a map of CommMonoids g : M โ†’* P such that g(S) โІ Units P, f x = f y โ†’ g x = g y for all x y : M.

theorem AddSubmonoid.LocalizationMap.eq_of_eq {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} (hg : โˆ€ (y : โ†ฅS), IsAddUnit (g โ†‘y)) {x y : M} (h : f x = f y) :
g x = g y

Given a Localization map f : M โ†’+ N for an AddSubmonoid S โІ M and a map of AddCommMonoids g : M โ†’+ P such that g(S) โІ AddUnits P, f x = f y โ†’ g x = g y for all x y : M.

theorem Submonoid.LocalizationMap.comp_eq_of_eq {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} {T : Submonoid P} {Q : Type u_4} [CommMonoid Q] (hg : โˆ€ (y : โ†ฅS), g โ†‘y โˆˆ T) (k : T.LocalizationMap Q) {x y : M} (h : f x = f y) :
k (g x) = k (g y)

Given CommMonoids M, P, Localization maps f : M โ†’* N, k : P โ†’* Q for Submonoids S, T respectively, and g : M โ†’* P such that g(S) โІ T, f x = f y implies k (g x) = k (g y).

theorem AddSubmonoid.LocalizationMap.comp_eq_of_eq {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} {T : AddSubmonoid P} {Q : Type u_4} [AddCommMonoid Q] (hg : โˆ€ (y : โ†ฅS), g โ†‘y โˆˆ T) (k : T.LocalizationMap Q) {x y : M} (h : f x = f y) :
k (g x) = k (g y)

Given AddCommMonoids M, P, Localization maps f : M โ†’+ N, k : P โ†’+ Q for AddSubmonoids S, T respectively, and g : M โ†’+ P such that g(S) โІ T, f x = f y implies k (g x) = k (g y).

noncomputable def Submonoid.LocalizationMap.lift {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} (hg : โˆ€ (y : โ†ฅS), IsUnit (g โ†‘y)) :

Given a Localization map f : M โ†’* N for a Submonoid S โІ M and a map of CommMonoids g : M โ†’* P such that g y is invertible for all y : S, the homomorphism induced from N to P sending z : N to g x * (g y)โปยน, where (x, y) : M ร— S are such that z = f x * (f y)โปยน.

Instances For
    noncomputable def AddSubmonoid.LocalizationMap.lift {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} (hg : โˆ€ (y : โ†ฅS), IsAddUnit (g โ†‘y)) :

    Given a localization map f : M โ†’+ N for a submonoid S โІ M and a map of AddCommMonoids g : M โ†’+ P such that g y is invertible for all y : S, the homomorphism induced from N to P sending z : N to g x - g y, where (x, y) : M ร— S are such that z = f x - f y.

    Instances For
      theorem Submonoid.LocalizationMap.lift_apply {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} (hg : โˆ€ (y : โ†ฅS), IsUnit (g โ†‘y)) (z : N) :
      (f.lift hg) z = g (f.sec z).1 * โ†‘((IsUnit.liftRight (g.restrict S) hg) (f.sec z).2)โปยน
      theorem AddSubmonoid.LocalizationMap.lift_apply {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} (hg : โˆ€ (y : โ†ฅS), IsAddUnit (g โ†‘y)) (z : N) :
      (f.lift hg) z = g (f.sec z).1 + โ†‘(-(IsAddUnit.liftRight (g.restrict S) hg) (f.sec z).2)
      theorem Submonoid.LocalizationMap.lift_mk' {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} (hg : โˆ€ (y : โ†ฅS), IsUnit (g โ†‘y)) (x : M) (y : โ†ฅS) :
      (f.lift hg) (f.mk' x y) = g x * โ†‘((IsUnit.liftRight (g.restrict S) hg) y)โปยน

      Given a Localization map f : M โ†’* N for a Submonoid S โІ M and a map of CommMonoids g : M โ†’* P such that g y is invertible for all y : S, the homomorphism induced from N to P maps f x * (f y)โปยน to g x * (g y)โปยน for all x : M, y โˆˆ S.

      theorem AddSubmonoid.LocalizationMap.lift_mk' {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} (hg : โˆ€ (y : โ†ฅS), IsAddUnit (g โ†‘y)) (x : M) (y : โ†ฅS) :
      (f.lift hg) (f.mk' x y) = g x + โ†‘(-(IsAddUnit.liftRight (g.restrict S) hg) y)

      Given a Localization map f : M โ†’+ N for an AddSubmonoid S โІ M and a map of AddCommMonoids g : M โ†’+ P such that g y is invertible for all y : S, the homomorphism induced from N to P maps f x - f y to g x - g y for all x : M, y โˆˆ S.

      @[simp]
      theorem Submonoid.LocalizationMap.lift_localizationMap_mk' {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) (g : S.LocalizationMap P) (x : M) (y : โ†ฅS) :
      (f.lift โ‹ฏ) (f.mk' x y) = g.mk' x y

      Given a Localization map f : M โ†’* N for a Submonoid S โІ M and a localization map g : M โ†’* P for the same submonoid, the homomorphism induced from N to P maps f x * (f y)โปยน to g x * (g y)โปยน for all x : M, y โˆˆ S.

      @[simp]
      theorem AddSubmonoid.LocalizationMap.lift_localizationMap_mk' {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) (g : S.LocalizationMap P) (x : M) (y : โ†ฅS) :
      (f.lift โ‹ฏ) (f.mk' x y) = g.mk' x y

      Given a Localization map f : M โ†’+ N for an AddSubmonoid S โІ M and a localization map g : M โ†’+ P for the same submonoid, the homomorphism induced from N to P maps f x - f y to g x - g y for all x : M, y โˆˆ S.

      theorem Submonoid.LocalizationMap.lift_spec {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} (hg : โˆ€ (y : โ†ฅS), IsUnit (g โ†‘y)) (z : N) (v : P) :
      (f.lift hg) z = v โ†” g (f.sec z).1 = g โ†‘(f.sec z).2 * v

      Given a Localization map f : M โ†’* N for a Submonoid S โІ M, if a CommMonoid map g : M โ†’* P induces a map f.lift hg : N โ†’* P then for all z : N, v : P, we have f.lift hg z = v โ†” g x = g y * v, where x : M, y โˆˆ S are such that z * f y = f x.

      theorem AddSubmonoid.LocalizationMap.lift_spec {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} (hg : โˆ€ (y : โ†ฅS), IsAddUnit (g โ†‘y)) (z : N) (v : P) :
      (f.lift hg) z = v โ†” g (f.sec z).1 = g โ†‘(f.sec z).2 + v

      Given a Localization map f : M โ†’+ N for an AddSubmonoid S โІ M, if an AddCommMonoid map g : M โ†’+ P induces a map f.lift hg : N โ†’+ P then for all z : N, v : P, we have f.lift hg z = v โ†” g x = g y + v, where x : M, y โˆˆ S are such that z + f y = f x.

      theorem Submonoid.LocalizationMap.lift_spec_mul {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} (hg : โˆ€ (y : โ†ฅS), IsUnit (g โ†‘y)) (z : N) (w v : P) :
      (f.lift hg) z * w = v โ†” g (f.sec z).1 * w = g โ†‘(f.sec z).2 * v

      Given a Localization map f : M โ†’* N for a Submonoid S โІ M, if a CommMonoid map g : M โ†’* P induces a map f.lift hg : N โ†’* P then for all z : N, v w : P, we have f.lift hg z * w = v โ†” g x * w = g y * v, where x : M, y โˆˆ S are such that z * f y = f x.

      theorem AddSubmonoid.LocalizationMap.lift_spec_add {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} (hg : โˆ€ (y : โ†ฅS), IsAddUnit (g โ†‘y)) (z : N) (w v : P) :
      (f.lift hg) z + w = v โ†” g (f.sec z).1 + w = g โ†‘(f.sec z).2 + v

      Given a Localization map f : M โ†’+ N for an AddSubmonoid S โІ M, if an AddCommMonoid map g : M โ†’+ P induces a map f.lift hg : N โ†’+ P then for all z : N, v w : P, we have f.lift hg z + w = v โ†” g x + w = g y + v, where x : M, y โˆˆ S are such that z + f y = f x.

      theorem Submonoid.LocalizationMap.lift_mk'_spec {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} (hg : โˆ€ (y : โ†ฅS), IsUnit (g โ†‘y)) (x : M) (v : P) (y : โ†ฅS) :
      (f.lift hg) (f.mk' x y) = v โ†” g x = g โ†‘y * v
      theorem AddSubmonoid.LocalizationMap.lift_mk'_spec {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} (hg : โˆ€ (y : โ†ฅS), IsAddUnit (g โ†‘y)) (x : M) (v : P) (y : โ†ฅS) :
      (f.lift hg) (f.mk' x y) = v โ†” g x = g โ†‘y + v
      theorem Submonoid.LocalizationMap.lift_mul_right {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} (hg : โˆ€ (y : โ†ฅS), IsUnit (g โ†‘y)) (z : N) :
      (f.lift hg) z * g โ†‘(f.sec z).2 = g (f.sec z).1

      Given a Localization map f : M โ†’* N for a Submonoid S โІ M, if a CommMonoid map g : M โ†’* P induces a map f.lift hg : N โ†’* P then for all z : N, we have f.lift hg z * g y = g x, where x : M, y โˆˆ S are such that z * f y = f x.

      theorem AddSubmonoid.LocalizationMap.lift_add_right {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} (hg : โˆ€ (y : โ†ฅS), IsAddUnit (g โ†‘y)) (z : N) :
      (f.lift hg) z + g โ†‘(f.sec z).2 = g (f.sec z).1

      Given a Localization map f : M โ†’+ N for an AddSubmonoid S โІ M, if an AddCommMonoid map g : M โ†’+ P induces a map f.lift hg : N โ†’+ P then for all z : N, we have f.lift hg z + g y = g x, where x : M, y โˆˆ S are such that z + f y = f x.

      theorem Submonoid.LocalizationMap.lift_mul_left {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} (hg : โˆ€ (y : โ†ฅS), IsUnit (g โ†‘y)) (z : N) :
      g โ†‘(f.sec z).2 * (f.lift hg) z = g (f.sec z).1

      Given a Localization map f : M โ†’* N for a Submonoid S โІ M, if a CommMonoid map g : M โ†’* P induces a map f.lift hg : N โ†’* P then for all z : N, we have g y * f.lift hg z = g x, where x : M, y โˆˆ S are such that z * f y = f x.

      theorem AddSubmonoid.LocalizationMap.lift_add_left {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} (hg : โˆ€ (y : โ†ฅS), IsAddUnit (g โ†‘y)) (z : N) :
      g โ†‘(f.sec z).2 + (f.lift hg) z = g (f.sec z).1

      Given a Localization map f : M โ†’+ N for an AddSubmonoid S โІ M, if an AddCommMonoid map g : M โ†’+ P induces a map f.lift hg : N โ†’+ P then for all z : N, we have g y + f.lift hg z = g x, where x : M, y โˆˆ S are such that z + f y = f x.

      @[simp]
      theorem Submonoid.LocalizationMap.lift_eq {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} (hg : โˆ€ (y : โ†ฅS), IsUnit (g โ†‘y)) (x : M) :
      (f.lift hg) (f x) = g x
      @[simp]
      theorem AddSubmonoid.LocalizationMap.lift_eq {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} (hg : โˆ€ (y : โ†ฅS), IsAddUnit (g โ†‘y)) (x : M) :
      (f.lift hg) (f x) = g x
      theorem Submonoid.LocalizationMap.lift_eq_iff {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} (hg : โˆ€ (y : โ†ฅS), IsUnit (g โ†‘y)) {x y : M ร— โ†ฅS} :
      (f.lift hg) (f.mk' x.1 x.2) = (f.lift hg) (f.mk' y.1 y.2) โ†” g (x.1 * โ†‘y.2) = g (y.1 * โ†‘x.2)
      theorem AddSubmonoid.LocalizationMap.lift_eq_iff {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} (hg : โˆ€ (y : โ†ฅS), IsAddUnit (g โ†‘y)) {x y : M ร— โ†ฅS} :
      (f.lift hg) (f.mk' x.1 x.2) = (f.lift hg) (f.mk' y.1 y.2) โ†” g (x.1 + โ†‘y.2) = g (y.1 + โ†‘x.2)
      @[simp]
      theorem Submonoid.LocalizationMap.lift_comp {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} (hg : โˆ€ (y : โ†ฅS), IsUnit (g โ†‘y)) :
      (f.lift hg).comp f.toMonoidHom = g
      @[simp]
      theorem AddSubmonoid.LocalizationMap.lift_comp {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} (hg : โˆ€ (y : โ†ฅS), IsAddUnit (g โ†‘y)) :
      (f.lift hg).comp f.toAddMonoidHom = g
      @[simp]
      theorem Submonoid.LocalizationMap.lift_of_comp {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) (j : N โ†’* P) :
      f.lift โ‹ฏ = j
      @[simp]
      theorem AddSubmonoid.LocalizationMap.lift_of_comp {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) (j : N โ†’+ P) :
      f.lift โ‹ฏ = j
      theorem Submonoid.LocalizationMap.lift_unique {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} (hg : โˆ€ (y : โ†ฅS), IsUnit (g โ†‘y)) {j : N โ†’* P} (hj : โˆ€ (x : M), j (f x) = g x) :
      f.lift hg = j
      theorem AddSubmonoid.LocalizationMap.lift_unique {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} (hg : โˆ€ (y : โ†ฅS), IsAddUnit (g โ†‘y)) {j : N โ†’+ P} (hj : โˆ€ (x : M), j (f x) = g x) :
      f.lift hg = j
      @[simp]
      theorem Submonoid.LocalizationMap.lift_id {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] (f : S.LocalizationMap N) (x : N) :
      (f.lift โ‹ฏ) x = x
      @[simp]
      theorem AddSubmonoid.LocalizationMap.lift_id {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] (f : S.LocalizationMap N) (x : N) :
      (f.lift โ‹ฏ) x = x
      theorem Submonoid.LocalizationMap.lift_comp_lift {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] (f : S.LocalizationMap N) {T : Submonoid M} (hST : S โ‰ค T) {Q : Type u_4} [CommMonoid Q] (k : T.LocalizationMap Q) {A : Type u_5} [CommMonoid A] {l : M โ†’* A} (hl : โˆ€ (w : โ†ฅT), IsUnit (l โ†‘w)) :
      (k.lift hl).comp (f.lift โ‹ฏ) = f.lift โ‹ฏ

      Given Localization maps f : M โ†’* N for a Submonoid S โІ M and k : M โ†’* Q for a Submonoid T โІ M, such that S โ‰ค T, and we have l : M โ†’* A, the composition of the induced map f.lift for k with the induced map k.lift for l is equal to the induced map f.lift for l.

      theorem AddSubmonoid.LocalizationMap.lift_comp_lift {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] (f : S.LocalizationMap N) {T : AddSubmonoid M} (hST : S โ‰ค T) {Q : Type u_4} [AddCommMonoid Q] (k : T.LocalizationMap Q) {A : Type u_5} [AddCommMonoid A] {l : M โ†’+ A} (hl : โˆ€ (w : โ†ฅT), IsAddUnit (l โ†‘w)) :
      (k.lift hl).comp (f.lift โ‹ฏ) = f.lift โ‹ฏ

      Given Localization maps f : M โ†’+ N for a Submonoid S โІ M and k : M โ†’+ Q for a Submonoid T โІ M, such that S โ‰ค T, and we have l : M โ†’+ A, the composition of the induced map f.lift for k with the induced map k.lift for l is equal to the induced map f.lift for l

      theorem Submonoid.LocalizationMap.lift_comp_lift_eq {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] (f : S.LocalizationMap N) {Q : Type u_4} [CommMonoid Q] (k : S.LocalizationMap Q) {A : Type u_5} [CommMonoid A] {l : M โ†’* A} (hl : โˆ€ (w : โ†ฅS), IsUnit (l โ†‘w)) :
      (k.lift hl).comp (f.lift โ‹ฏ) = f.lift hl
      theorem AddSubmonoid.LocalizationMap.lift_comp_lift_eq {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] (f : S.LocalizationMap N) {Q : Type u_4} [AddCommMonoid Q] (k : S.LocalizationMap Q) {A : Type u_5} [AddCommMonoid A] {l : M โ†’+ A} (hl : โˆ€ (w : โ†ฅS), IsAddUnit (l โ†‘w)) :
      (k.lift hl).comp (f.lift โ‹ฏ) = f.lift hl
      @[simp]
      theorem Submonoid.LocalizationMap.lift_left_inverse {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {k : S.LocalizationMap P} (z : N) :
      (k.lift โ‹ฏ) ((f.lift โ‹ฏ) z) = z

      Given two Localization maps f : M โ†’* N, k : M โ†’* P for a Submonoid S โІ M, the hom from P to N induced by f is left inverse to the hom from N to P induced by k.

      @[simp]
      theorem AddSubmonoid.LocalizationMap.lift_left_inverse {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {k : S.LocalizationMap P} (z : N) :
      (k.lift โ‹ฏ) ((f.lift โ‹ฏ) z) = z

      Given two Localization maps f : M โ†’+ N, k : M โ†’+ P for a Submonoid S โІ M, the hom from P to N induced by f is left inverse to the hom from N to P induced by k.

      theorem Submonoid.LocalizationMap.lift_surjective_iff {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} (hg : โˆ€ (y : โ†ฅS), IsUnit (g โ†‘y)) :
      Function.Surjective โ‡‘(f.lift hg) โ†” โˆ€ (v : P), โˆƒ (x : M ร— โ†ฅS), v * g โ†‘x.2 = g x.1
      theorem AddSubmonoid.LocalizationMap.lift_surjective_iff {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} (hg : โˆ€ (y : โ†ฅS), IsAddUnit (g โ†‘y)) :
      Function.Surjective โ‡‘(f.lift hg) โ†” โˆ€ (v : P), โˆƒ (x : M ร— โ†ฅS), v + g โ†‘x.2 = g x.1
      theorem Submonoid.LocalizationMap.lift_injective_iff {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} (hg : โˆ€ (y : โ†ฅS), IsUnit (g โ†‘y)) :
      Function.Injective โ‡‘(f.lift hg) โ†” โˆ€ (x y : M), f x = f y โ†” g x = g y
      theorem AddSubmonoid.LocalizationMap.lift_injective_iff {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} (hg : โˆ€ (y : โ†ฅS), IsAddUnit (g โ†‘y)) :
      Function.Injective โ‡‘(f.lift hg) โ†” โˆ€ (x y : M), f x = f y โ†” g x = g y
      noncomputable def Submonoid.LocalizationMap.map {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} {T : Submonoid P} (hy : โˆ€ (y : โ†ฅS), g โ†‘y โˆˆ T) {Q : Type u_4} [CommMonoid Q] (k : T.LocalizationMap Q) :

      Given a CommMonoid homomorphism g : M โ†’* P where for Submonoids S โІ M, T โІ P we have g(S) โІ T, the induced Monoid homomorphism from the Localization of M at S to the Localization of P at T: if f : M โ†’* N and k : P โ†’* Q are Localization maps for S and T respectively, we send z : N to k (g x) * (k (g y))โปยน, where (x, y) : M ร— S are such that z = f x * (f y)โปยน.

      Instances For
        noncomputable def AddSubmonoid.LocalizationMap.map {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} {T : AddSubmonoid P} (hy : โˆ€ (y : โ†ฅS), g โ†‘y โˆˆ T) {Q : Type u_4} [AddCommMonoid Q] (k : T.LocalizationMap Q) :

        Given an AddCommMonoid homomorphism g : M โ†’+ P where for AddSubmonoids S โІ M, T โІ P we have g(S) โІ T, the induced AddMonoid homomorphism from the Localization of M at S to the Localization of P at T: if f : M โ†’+ N and k : P โ†’+ Q are Localization maps for S and T respectively, we send z : N to k (g x) - k (g y), where (x, y) : M ร— S are such that z = f x - f y.

        Instances For
          @[simp]
          theorem Submonoid.LocalizationMap.map_eq {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} {T : Submonoid P} (hy : โˆ€ (y : โ†ฅS), g โ†‘y โˆˆ T) {Q : Type u_4} [CommMonoid Q] {k : T.LocalizationMap Q} (x : M) :
          (f.map hy k) (f x) = k (g x)
          @[simp]
          theorem AddSubmonoid.LocalizationMap.map_eq {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} {T : AddSubmonoid P} (hy : โˆ€ (y : โ†ฅS), g โ†‘y โˆˆ T) {Q : Type u_4} [AddCommMonoid Q] {k : T.LocalizationMap Q} (x : M) :
          (f.map hy k) (f x) = k (g x)
          @[simp]
          theorem Submonoid.LocalizationMap.map_comp {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} {T : Submonoid P} (hy : โˆ€ (y : โ†ฅS), g โ†‘y โˆˆ T) {Q : Type u_4} [CommMonoid Q] {k : T.LocalizationMap Q} :
          @[simp]
          theorem AddSubmonoid.LocalizationMap.map_comp {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} {T : AddSubmonoid P} (hy : โˆ€ (y : โ†ฅS), g โ†‘y โˆˆ T) {Q : Type u_4} [AddCommMonoid Q] {k : T.LocalizationMap Q} :
          @[simp]
          theorem Submonoid.LocalizationMap.map_mk' {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} {T : Submonoid P} (hy : โˆ€ (y : โ†ฅS), g โ†‘y โˆˆ T) {Q : Type u_4} [CommMonoid Q] {k : T.LocalizationMap Q} (x : M) (y : โ†ฅS) :
          (f.map hy k) (f.mk' x y) = k.mk' (g x) โŸจg โ†‘y, โ‹ฏโŸฉ
          @[simp]
          theorem AddSubmonoid.LocalizationMap.map_mk' {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} {T : AddSubmonoid P} (hy : โˆ€ (y : โ†ฅS), g โ†‘y โˆˆ T) {Q : Type u_4} [AddCommMonoid Q] {k : T.LocalizationMap Q} (x : M) (y : โ†ฅS) :
          (f.map hy k) (f.mk' x y) = k.mk' (g x) โŸจg โ†‘y, โ‹ฏโŸฉ
          theorem Submonoid.LocalizationMap.map_spec {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} {T : Submonoid P} (hy : โˆ€ (y : โ†ฅS), g โ†‘y โˆˆ T) {Q : Type u_4} [CommMonoid Q] {k : T.LocalizationMap Q} (z : N) (u : Q) :
          (f.map hy k) z = u โ†” k (g (f.sec z).1) = k (g โ†‘(f.sec z).2) * u

          Given Localization maps f : M โ†’* N, k : P โ†’* Q for Submonoids S, T respectively, if a CommMonoid homomorphism g : M โ†’* P induces a f.map hy k : N โ†’* Q, then for all z : N, u : Q, we have f.map hy k z = u โ†” k (g x) = k (g y) * u where x : M, y โˆˆ S are such that z * f y = f x.

          theorem AddSubmonoid.LocalizationMap.map_spec {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} {T : AddSubmonoid P} (hy : โˆ€ (y : โ†ฅS), g โ†‘y โˆˆ T) {Q : Type u_4} [AddCommMonoid Q] {k : T.LocalizationMap Q} (z : N) (u : Q) :
          (f.map hy k) z = u โ†” k (g (f.sec z).1) = k (g โ†‘(f.sec z).2) + u

          Given Localization maps f : M โ†’+ N, k : P โ†’+ Q for AddSubmonoids S, T respectively, if an AddCommMonoid homomorphism g : M โ†’+ P induces a f.map hy k : N โ†’+ Q, then for all z : N, u : Q, we have f.map hy k z = u โ†” k (g x) = k (g y) + u where x : M, y โˆˆ S are such that z + f y = f x.

          theorem Submonoid.LocalizationMap.map_mul_right {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} {T : Submonoid P} (hy : โˆ€ (y : โ†ฅS), g โ†‘y โˆˆ T) {Q : Type u_4} [CommMonoid Q] {k : T.LocalizationMap Q} (z : N) :
          (f.map hy k) z * k (g โ†‘(f.sec z).2) = k (g (f.sec z).1)

          Given Localization maps f : M โ†’* N, k : P โ†’* Q for Submonoids S, T respectively, if a CommMonoid homomorphism g : M โ†’* P induces a f.map hy k : N โ†’* Q, then for all z : N, we have f.map hy k z * k (g y) = k (g x) where x : M, y โˆˆ S are such that z * f y = f x.

          theorem AddSubmonoid.LocalizationMap.map_add_right {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} {T : AddSubmonoid P} (hy : โˆ€ (y : โ†ฅS), g โ†‘y โˆˆ T) {Q : Type u_4} [AddCommMonoid Q] {k : T.LocalizationMap Q} (z : N) :
          (f.map hy k) z + k (g โ†‘(f.sec z).2) = k (g (f.sec z).1)

          Given Localization maps f : M โ†’+ N, k : P โ†’+ Q for AddSubmonoids S, T respectively, if an AddCommMonoid homomorphism g : M โ†’+ P induces a f.map hy k : N โ†’+ Q, then for all z : N, we have f.map hy k z + k (g y) = k (g x) where x : M, y โˆˆ S are such that z + f y = f x.

          theorem Submonoid.LocalizationMap.map_mul_left {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} {T : Submonoid P} (hy : โˆ€ (y : โ†ฅS), g โ†‘y โˆˆ T) {Q : Type u_4} [CommMonoid Q] {k : T.LocalizationMap Q} (z : N) :
          k (g โ†‘(f.sec z).2) * (f.map hy k) z = k (g (f.sec z).1)

          Given Localization maps f : M โ†’* N, k : P โ†’* Q for Submonoids S, T respectively, if a CommMonoid homomorphism g : M โ†’* P induces a f.map hy k : N โ†’* Q, then for all z : N, we have k (g y) * f.map hy k z = k (g x) where x : M, y โˆˆ S are such that z * f y = f x.

          theorem AddSubmonoid.LocalizationMap.map_add_left {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} {T : AddSubmonoid P} (hy : โˆ€ (y : โ†ฅS), g โ†‘y โˆˆ T) {Q : Type u_4} [AddCommMonoid Q] {k : T.LocalizationMap Q} (z : N) :
          k (g โ†‘(f.sec z).2) + (f.map hy k) z = k (g (f.sec z).1)

          Given Localization maps f : M โ†’+ N, k : P โ†’+ Q for AddSubmonoids S, T respectively if an AddCommMonoid homomorphism g : M โ†’+ P induces a f.map hy k : N โ†’+ Q, then for all z : N, we have k (g y) + f.map hy k z = k (g x) where x : M, y โˆˆ S are such that z + f y = f x.

          @[simp]
          theorem Submonoid.LocalizationMap.map_id {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] (f : S.LocalizationMap N) (z : N) :
          (f.map โ‹ฏ f) z = z
          @[simp]
          theorem AddSubmonoid.LocalizationMap.map_id {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] (f : S.LocalizationMap N) (z : N) :
          (f.map โ‹ฏ f) z = z
          theorem Submonoid.LocalizationMap.map_comp_map {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} {T : Submonoid P} (hy : โˆ€ (y : โ†ฅS), g โ†‘y โˆˆ T) {Q : Type u_4} [CommMonoid Q] {k : T.LocalizationMap Q} {A : Type u_5} [CommMonoid A] {U : Submonoid A} {R : Type u_6} [CommMonoid R] (j : U.LocalizationMap R) {l : P โ†’* A} (hl : โˆ€ (w : โ†ฅT), l โ†‘w โˆˆ U) :
          (k.map hl j).comp (f.map hy k) = f.map โ‹ฏ j

          If CommMonoid homs g : M โ†’* P, l : P โ†’* A induce maps of localizations, the composition of the induced maps equals the map of localizations induced by l โˆ˜ g.

          theorem AddSubmonoid.LocalizationMap.map_comp_map {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} {T : AddSubmonoid P} (hy : โˆ€ (y : โ†ฅS), g โ†‘y โˆˆ T) {Q : Type u_4} [AddCommMonoid Q] {k : T.LocalizationMap Q} {A : Type u_5} [AddCommMonoid A] {U : AddSubmonoid A} {R : Type u_6} [AddCommMonoid R] (j : U.LocalizationMap R) {l : P โ†’+ A} (hl : โˆ€ (w : โ†ฅT), l โ†‘w โˆˆ U) :
          (k.map hl j).comp (f.map hy k) = f.map โ‹ฏ j

          If AddCommMonoid homs g : M โ†’+ P, l : P โ†’+ A induce maps of localizations, the composition of the induced maps equals the map of localizations induced by l โˆ˜ g.

          theorem Submonoid.LocalizationMap.map_map {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} {T : Submonoid P} (hy : โˆ€ (y : โ†ฅS), g โ†‘y โˆˆ T) {Q : Type u_4} [CommMonoid Q] {k : T.LocalizationMap Q} {A : Type u_5} [CommMonoid A] {U : Submonoid A} {R : Type u_6} [CommMonoid R] (j : U.LocalizationMap R) {l : P โ†’* A} (hl : โˆ€ (w : โ†ฅT), l โ†‘w โˆˆ U) (x : N) :
          (k.map hl j) ((f.map hy k) x) = (f.map โ‹ฏ j) x

          If CommMonoid homs g : M โ†’* P, l : P โ†’* A induce maps of localizations, the composition of the induced maps equals the map of localizations induced by l โˆ˜ g.

          theorem AddSubmonoid.LocalizationMap.map_map {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} {T : AddSubmonoid P} (hy : โˆ€ (y : โ†ฅS), g โ†‘y โˆˆ T) {Q : Type u_4} [AddCommMonoid Q] {k : T.LocalizationMap Q} {A : Type u_5} [AddCommMonoid A] {U : AddSubmonoid A} {R : Type u_6} [AddCommMonoid R] (j : U.LocalizationMap R) {l : P โ†’+ A} (hl : โˆ€ (w : โ†ฅT), l โ†‘w โˆˆ U) (x : N) :
          (k.map hl j) ((f.map hy k) x) = (f.map โ‹ฏ j) x

          If AddCommMonoid homs g : M โ†’+ P, l : P โ†’+ A induce maps of localizations, the composition of the induced maps equals the map of localizations induced by l โˆ˜ g.

          theorem Submonoid.LocalizationMap.map_injective_of_surjOn_or_injective {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} {T : Submonoid P} (hy : โˆ€ (y : โ†ฅS), g โ†‘y โˆˆ T) {Q : Type u_4} [CommMonoid Q] {k : T.LocalizationMap Q} (or : Set.SurjOn โ‡‘g โ†‘S โ†‘T โˆจ Function.Injective โ‡‘k) (hg : Function.Injective โ‡‘g) :
          Function.Injective โ‡‘(f.map hy k)
          theorem AddSubmonoid.LocalizationMap.map_injective_of_surjOn_or_injective {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} {T : AddSubmonoid P} (hy : โˆ€ (y : โ†ฅS), g โ†‘y โˆˆ T) {Q : Type u_4} [AddCommMonoid Q] {k : T.LocalizationMap Q} (or : Set.SurjOn โ‡‘g โ†‘S โ†‘T โˆจ Function.Injective โ‡‘k) (hg : Function.Injective โ‡‘g) :
          Function.Injective โ‡‘(f.map hy k)
          theorem Submonoid.LocalizationMap.map_surjective_of_surjOn {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} {T : Submonoid P} (hy : โˆ€ (y : โ†ฅS), g โ†‘y โˆˆ T) {Q : Type u_4} [CommMonoid Q] {k : T.LocalizationMap Q} (surj : Set.SurjOn โ‡‘g โ†‘S โ†‘T) (hg : Function.Surjective โ‡‘g) :
          Function.Surjective โ‡‘(f.map hy k)
          theorem AddSubmonoid.LocalizationMap.map_surjective_of_surjOn {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} {T : AddSubmonoid P} (hy : โˆ€ (y : โ†ฅS), g โ†‘y โˆˆ T) {Q : Type u_4} [AddCommMonoid Q] {k : T.LocalizationMap Q} (surj : Set.SurjOn โ‡‘g โ†‘S โ†‘T) (hg : Function.Surjective โ‡‘g) :
          Function.Surjective โ‡‘(f.map hy k)
          theorem Submonoid.LocalizationMap.map_injective_of_injective {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} {Q : Type u_4} [CommMonoid Q] (hg : Function.Injective โ‡‘g) (k : (Submonoid.map g S).LocalizationMap Q) :
          Function.Injective โ‡‘(f.map โ‹ฏ k)

          Given an injective CommMonoid homomorphism g : M โ†’* P, and a submonoid S โІ M, the induced monoid homomorphism from the localization of M at S to the localization of P at g S, is injective.

          theorem AddSubmonoid.LocalizationMap.map_injective_of_injective {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} {Q : Type u_4} [AddCommMonoid Q] (hg : Function.Injective โ‡‘g) (k : (AddSubmonoid.map g S).LocalizationMap Q) :
          Function.Injective โ‡‘(f.map โ‹ฏ k)

          Given an injective AddCommMonoid homomorphism g : M โ†’+ P, and a submonoid S โІ M, the induced monoid homomorphism from the localization of M at S to the localization of P at g S, is injective.

          theorem Submonoid.LocalizationMap.map_surjective_of_surjective {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {g : M โ†’* P} {Q : Type u_4} [CommMonoid Q] (hg : Function.Surjective โ‡‘g) (k : (Submonoid.map g S).LocalizationMap Q) :
          Function.Surjective โ‡‘(f.map โ‹ฏ k)

          Given a surjective CommMonoid homomorphism g : M โ†’* P, and a submonoid S โІ M, the induced monoid homomorphism from the localization of M at S to the localization of P at g S, is surjective.

          theorem AddSubmonoid.LocalizationMap.map_surjective_of_surjective {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {g : M โ†’+ P} {Q : Type u_4} [AddCommMonoid Q] (hg : Function.Surjective โ‡‘g) (k : (AddSubmonoid.map g S).LocalizationMap Q) :
          Function.Surjective โ‡‘(f.map โ‹ฏ k)

          Given a surjective AddCommMonoid homomorphism g : M โ†’+ P, and a submonoid S โІ M, the induced monoid homomorphism from the localization of M at S to the localization of P at g S, is surjective.

          noncomputable def Submonoid.LocalizationMap.mulEquivOfLocalizations {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) (k : S.LocalizationMap P) :

          If f : M โ†’* N and k : M โ†’* P are Localization maps for a Submonoid S, we get an isomorphism of N and P.

          Instances For
            noncomputable def AddSubmonoid.LocalizationMap.addEquivOfLocalizations {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) (k : S.LocalizationMap P) :

            If f : M โ†’+ N and k : M โ†’+ R are Localization maps for an AddSubmonoid S, we get an isomorphism of N and R.

            Instances For
              @[simp]
              theorem Submonoid.LocalizationMap.mulEquivOfLocalizations_apply {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {k : S.LocalizationMap P} {x : N} :
              (f.mulEquivOfLocalizations k) x = (f.lift โ‹ฏ) x
              @[simp]
              theorem Submonoid.LocalizationMap.mulEquivOfLocalizations_symm_apply {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {k : S.LocalizationMap P} {x : P} :
              (f.mulEquivOfLocalizations k).symm x = (k.lift โ‹ฏ) x

              If f : M โ†’* N is a Localization map for a Submonoid S and k : N โ‰ƒ* P is an isomorphism of CommMonoids, k โˆ˜ f is a Localization map for M at S.

              Instances For

                If f : M โ†’+ N is a Localization map for a Submonoid S and k : N โ‰ƒ+ P is an isomorphism of AddCommMonoids, k โˆ˜ f is a Localization map for M at S.

                Instances For
                  @[simp]
                  theorem Submonoid.LocalizationMap.ofMulEquivOfLocalizations_apply {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {k : N โ‰ƒ* P} (x : M) :
                  (f.ofMulEquivOfLocalizations k) x = k (f x)
                  theorem Submonoid.LocalizationMap.ofMulEquivOfLocalizations_eq_iff_eq {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {k : N โ‰ƒ* P} {x : M} {y : P} :
                  (f.ofMulEquivOfLocalizations k) x = y โ†” f x = k.symm y
                  theorem AddSubmonoid.LocalizationMap.ofAddEquivOfLocalizations_eq_iff_eq {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {k : N โ‰ƒ+ P} {x : M} {y : P} :
                  (f.ofAddEquivOfLocalizations k) x = y โ†” f x = k.symm y
                  def Submonoid.LocalizationMap.ofMulEquivOfDom {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {T : Submonoid P} {k : P โ‰ƒ* M} (H : Submonoid.map k.toMonoidHom T = S) :

                  Given CommMonoids M, P and Submonoids S โІ M, T โІ P, if f : M โ†’* N is a Localization map for S and k : P โ‰ƒ* M is an isomorphism of CommMonoids such that k(T) = S, f โˆ˜ k is a Localization map for T.

                  Instances For

                    Given AddCommMonoids M, P and AddSubmonoids S โІ M, T โІ P, if f : M โ†’* N is a Localization map for S and k : P โ‰ƒ+ M is an isomorphism of AddCommMonoids such that k(T) = S, f โˆ˜ k is a Localization map for T.

                    Instances For
                      @[simp]
                      theorem Submonoid.LocalizationMap.ofMulEquivOfDom_apply {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {T : Submonoid P} {k : P โ‰ƒ* M} (H : Submonoid.map k.toMonoidHom T = S) (x : P) :
                      (f.ofMulEquivOfDom H) x = f (k x)
                      @[simp]
                      theorem AddSubmonoid.LocalizationMap.ofAddEquivOfDom_apply {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {T : AddSubmonoid P} {k : P โ‰ƒ+ M} (H : AddSubmonoid.map k.toAddMonoidHom T = S) (x : P) :
                      (f.ofAddEquivOfDom H) x = f (k x)
                      theorem Submonoid.LocalizationMap.ofMulEquivOfDom_comp_symm {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {T : Submonoid P} {k : P โ‰ƒ* M} (H : Submonoid.map k.toMonoidHom T = S) (x : M) :
                      (f.ofMulEquivOfDom H) (k.symm x) = f x
                      theorem Submonoid.LocalizationMap.ofMulEquivOfDom_comp {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {T : Submonoid P} {k : M โ‰ƒ* P} (H : Submonoid.map k.symm.toMonoidHom T = S) (x : M) :
                      (f.ofMulEquivOfDom H) (k x) = f x
                      @[simp]
                      theorem Submonoid.LocalizationMap.ofMulEquivOfDom_id {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] (f : S.LocalizationMap N) :
                      f.ofMulEquivOfDom โ‹ฏ = f

                      A special case of f โˆ˜ id = f, f a Localization map.

                      @[simp]

                      A special case of f โˆ˜ id = f, f a Localization map.

                      noncomputable def Submonoid.LocalizationMap.mulEquivOfMulEquiv {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {T : Submonoid P} {Q : Type u_4} [CommMonoid Q] (k : T.LocalizationMap Q) {j : M โ‰ƒ* P} (H : Submonoid.map j.toMonoidHom S = T) :

                      Given Localization maps f : M โ†’* N, k : P โ†’* U for Submonoids S, T respectively, an isomorphism j : M โ‰ƒ* P such that j(S) = T induces an isomorphism of localizations N โ‰ƒ* U.

                      Instances For
                        noncomputable def AddSubmonoid.LocalizationMap.addEquivOfAddEquiv {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {T : AddSubmonoid P} {Q : Type u_4} [AddCommMonoid Q] (k : T.LocalizationMap Q) {j : M โ‰ƒ+ P} (H : AddSubmonoid.map j.toAddMonoidHom S = T) :

                        Given Localization maps f : M โ†’+ N, k : P โ†’+ U for Submonoids S, T respectively, an isomorphism j : M โ‰ƒ+ P such that j(S) = T induces an isomorphism of localizations N โ‰ƒ+ U.

                        Instances For
                          @[simp]
                          theorem Submonoid.LocalizationMap.mulEquivOfMulEquiv_eq_map_apply {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {T : Submonoid P} {Q : Type u_4} [CommMonoid Q] {k : T.LocalizationMap Q} {j : M โ‰ƒ* P} (H : Submonoid.map j.toMonoidHom S = T) (x : N) :
                          (f.mulEquivOfMulEquiv k H) x = (f.map โ‹ฏ k) x
                          @[simp]
                          theorem AddSubmonoid.LocalizationMap.addEquivOfAddEquiv_eq_map_apply {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {T : AddSubmonoid P} {Q : Type u_4} [AddCommMonoid Q] {k : T.LocalizationMap Q} {j : M โ‰ƒ+ P} (H : AddSubmonoid.map j.toAddMonoidHom S = T) (x : N) :
                          (f.addEquivOfAddEquiv k H) x = (f.map โ‹ฏ k) x
                          theorem Submonoid.LocalizationMap.mulEquivOfMulEquiv_eq_map {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {T : Submonoid P} {Q : Type u_4} [CommMonoid Q] {k : T.LocalizationMap Q} {j : M โ‰ƒ* P} (H : Submonoid.map j.toMonoidHom S = T) :
                          (f.mulEquivOfMulEquiv k H).toMonoidHom = f.map โ‹ฏ k
                          theorem Submonoid.LocalizationMap.mulEquivOfMulEquiv_eq {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {T : Submonoid P} {Q : Type u_4} [CommMonoid Q] {k : T.LocalizationMap Q} {j : M โ‰ƒ* P} (H : Submonoid.map j.toMonoidHom S = T) (x : M) :
                          (f.mulEquivOfMulEquiv k H) (f x) = k (j x)
                          theorem AddSubmonoid.LocalizationMap.addEquivOfAddEquiv_eq {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {T : AddSubmonoid P} {Q : Type u_4} [AddCommMonoid Q] {k : T.LocalizationMap Q} {j : M โ‰ƒ+ P} (H : AddSubmonoid.map j.toAddMonoidHom S = T) (x : M) :
                          (f.addEquivOfAddEquiv k H) (f x) = k (j x)
                          theorem Submonoid.LocalizationMap.mulEquivOfMulEquiv_mk' {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {T : Submonoid P} {Q : Type u_4} [CommMonoid Q] {k : T.LocalizationMap Q} {j : M โ‰ƒ* P} (H : Submonoid.map j.toMonoidHom S = T) (x : M) (y : โ†ฅS) :
                          (f.mulEquivOfMulEquiv k H) (f.mk' x y) = k.mk' (j x) โŸจj โ†‘y, โ‹ฏโŸฉ
                          theorem AddSubmonoid.LocalizationMap.addEquivOfAddEquiv_mk' {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {P : Type u_3} [AddCommMonoid P] (f : S.LocalizationMap N) {T : AddSubmonoid P} {Q : Type u_4} [AddCommMonoid Q] {k : T.LocalizationMap Q} {j : M โ‰ƒ+ P} (H : AddSubmonoid.map j.toAddMonoidHom S = T) (x : M) (y : โ†ฅS) :
                          (f.addEquivOfAddEquiv k H) (f.mk' x y) = k.mk' (j x) โŸจj โ†‘y, โ‹ฏโŸฉ
                          theorem Submonoid.LocalizationMap.of_mulEquivOfMulEquiv_apply {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {P : Type u_3} [CommMonoid P] (f : S.LocalizationMap N) {T : Submonoid P} {Q : Type u_4} [CommMonoid Q] {k : T.LocalizationMap Q} {j : M โ‰ƒ* P} (H : Submonoid.map j.toMonoidHom S = T) (x : M) :
                          noncomputable def Localization.mulEquivOfQuotient {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] (f : S.LocalizationMap N) :

                          Given a Localization map f : M โ†’* N for a Submonoid S, we get an isomorphism between the Localization of M at S as a quotient type and N.

                          Instances For

                            Given a Localization map f : M โ†’+ N for a Submonoid S, we get an isomorphism between the Localization of M at S as a quotient type and N.

                            Instances For
                              @[simp]
                              theorem Localization.mulEquivOfQuotient_apply {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {f : S.LocalizationMap N} (x : Localization S) :
                              (mulEquivOfQuotient f) x = ((monoidOf S).lift โ‹ฏ) x
                              theorem Localization.mulEquivOfQuotient_mk' {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {f : S.LocalizationMap N} (x : M) (y : โ†ฅS) :
                              (mulEquivOfQuotient f) ((monoidOf S).mk' x y) = f.mk' x y
                              theorem AddLocalization.addEquivOfQuotient_mk' {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {f : S.LocalizationMap N} (x : M) (y : โ†ฅS) :
                              (addEquivOfQuotient f) ((addMonoidOf S).mk' x y) = f.mk' x y
                              theorem Localization.mulEquivOfQuotient_mk {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {f : S.LocalizationMap N} (x : M) (y : โ†ฅS) :
                              (mulEquivOfQuotient f) (mk x y) = f.mk' x y
                              theorem AddLocalization.addEquivOfQuotient_mk {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {f : S.LocalizationMap N} (x : M) (y : โ†ฅS) :
                              (addEquivOfQuotient f) (mk x y) = f.mk' x y
                              @[simp]
                              theorem Localization.mulEquivOfQuotient_symm_mk' {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {f : S.LocalizationMap N} (x : M) (y : โ†ฅS) :
                              (mulEquivOfQuotient f).symm (f.mk' x y) = (monoidOf S).mk' x y
                              @[simp]
                              theorem AddLocalization.addEquivOfQuotient_symm_mk' {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {f : S.LocalizationMap N} (x : M) (y : โ†ฅS) :
                              (addEquivOfQuotient f).symm (f.mk' x y) = (addMonoidOf S).mk' x y
                              theorem Localization.mulEquivOfQuotient_symm_mk {M : Type u_1} [CommMonoid M] {S : Submonoid M} {N : Type u_2} [CommMonoid N] {f : S.LocalizationMap N} (x : M) (y : โ†ฅS) :
                              (mulEquivOfQuotient f).symm (f.mk' x y) = mk x y
                              theorem AddLocalization.addEquivOfQuotient_symm_mk {M : Type u_1} [AddCommMonoid M] {S : AddSubmonoid M} {N : Type u_2} [AddCommMonoid N] {f : S.LocalizationMap N} (x : M) (y : โ†ฅS) :
                              (addEquivOfQuotient f).symm (f.mk' x y) = mk x y