@@ -143,7 +143,7 @@ variable [EquivLike F α β]
143143/-- Turn an element of a type `F` satisfying `AddEquivClass F α β` into an actual
144144`AddEquiv`. This is declared as the default coercion from `F` to `α ≃+ β`. -/ ]
145145def MulEquivClass.toMulEquiv [Mul α] [Mul β] [MulEquivClass F α β] (f : F) : α ≃* β :=
146- { (f : α ≃ β), (f : α →ₙ* β) with }
146+ { (.ofClass f : α ≃ β), (.ofClass f : α →ₙ* β) with }
147147
148148/-- Any type satisfying `MulEquivClass` can be cast into `MulEquiv` via
149149`MulEquivClass.toMulEquiv`. -/
@@ -201,20 +201,20 @@ theorem mk_coe (e : M ≃* N) (e' h₁ h₂ h₃) : (⟨⟨e, e', h₁, h₂⟩,
201201 ext fun _ => rfl
202202
203203@ [to_additive (attr := simp)]
204- theorem toEquiv_eq_coe (f : M ≃* N) : f.toEquiv = f :=
204+ theorem toEquiv_eq_ofClass (f : M ≃* N) : f.toEquiv = .ofClass f :=
205205 rfl
206206
207207/-- The `simp`-normal form to turn something into a `MulHom` is via `MulHomClass.toMulHom`. -/
208208@ [to_additive (attr := simp)]
209- theorem toMulHom_eq_coe (f : M ≃* N) : f.toMulHom = ↑ f :=
209+ theorem toMulHom_eq_ofClass (f : M ≃* N) : f.toMulHom = .ofClass f :=
210210 rfl
211211
212212@[to_additive]
213213theorem toFun_eq_coe (f : M ≃* N) : f.toFun = f := rfl
214214
215215/-- `simp`-normal form of `toFun_eq_coe`. -/
216216@ [to_additive (attr := simp)]
217- theorem coe_toEquiv (f : M ≃* N) : ⇑(f : M ≃ N) = f := rfl
217+ theorem coe_toEquiv (f : M ≃* N) : ⇑(.ofClass f : M ≃ N) = f := rfl
218218
219219@ [to_additive (attr := simp)]
220220theorem coe_toMulHom {f : M ≃* N} : (f.toMulHom : M → N) = f := rfl
@@ -292,13 +292,13 @@ theorem invFun_eq_symm {f : M ≃* N} : f.invFun = f.symm := rfl
292292
293293/-- `simp`-normal form of `invFun_eq_symm`. -/
294294@ [to_additive (attr := simp)]
295- theorem coe_toEquiv_symm (f : M ≃* N) : ((f : M ≃ N).symm : N → M) = f.symm := rfl
295+ theorem symm_ofClass (f : M ≃* N) : ((.ofClass f : M ≃ N).symm : N → M) = f.symm := rfl
296296
297297@ [to_additive (attr := simp)]
298298theorem equivLike_inv_eq_symm (f : M ≃* N) : EquivLike.inv f = f.symm := rfl
299299
300300@ [to_additive (attr := simp)]
301- theorem toEquiv_symm (f : M ≃* N) : (f.symm : N ≃ M) = (f : M ≃ N).symm := rfl
301+ theorem ofClass_symm (f : M ≃* N) : (.ofClass f.symm : N ≃ M) = (.ofClass f : M ≃ N).symm := rfl
302302
303303@ [to_additive (attr := simp)]
304304theorem symm_symm (f : M ≃* N) : f.symm.symm = f := rfl
@@ -458,29 +458,6 @@ protected def cast {ι : Type*} {M : ι → Type*} [∀ i, Mul (M i)] {i j : ι}
458458section MulOneClass
459459variable [MulOneClass M] [MulOneClass N] [MulOneClass P]
460460
461- @ [to_additive (attr := simp)]
462- theorem coe_monoidHom_refl : (refl M : M →* M) = MonoidHom.id M := rfl
463-
464- @ [to_additive (attr := simp)]
465- lemma coe_monoidHom_trans (e₁ : M ≃* N) (e₂ : N ≃* P) :
466- (e₁.trans e₂ : M →* P) = (e₂ : N →* P).comp ↑e₁ := rfl
467-
468- @ [to_additive (attr := simp)]
469- lemma coe_monoidHom_comp_coe_monoidHom_symm (e : M ≃* N) :
470- (e : M →* N).comp e.symm = MonoidHom.id _ := by ext; simp
471-
472- @ [to_additive (attr := simp)]
473- lemma coe_monoidHom_symm_comp_coe_monoidHom (e : M ≃* N) :
474- (e.symm : N →* M).comp e = MonoidHom.id _ := by ext; simp
475-
476- @[to_additive]
477- lemma comp_left_injective (e : M ≃* N) : Injective fun f : N →* P ↦ f.comp (e : M →* N) :=
478- LeftInverse.injective (g := fun f ↦ f.comp e.symm) fun f ↦ by simp [MonoidHom.comp_assoc]
479-
480- @[to_additive]
481- lemma comp_right_injective (e : M ≃* N) : Injective fun f : P →* M ↦ (e : M →* N).comp f :=
482- LeftInverse.injective (g := (e.symm : N →* M).comp) fun f ↦ by simp [← MonoidHom.comp_assoc]
483-
484461/-- A multiplicative isomorphism of monoids sends `1` to `1` (and is hence a monoid isomorphism). -/
485462@ [to_additive
486463 /-- An additive isomorphism of additive monoids sends `0` to `0`
@@ -514,17 +491,41 @@ as a multiplication-preserving function.
514491def toMonoidHom (h : M ≃* N) : M →* N :=
515492 { h with map_one' := h.map_one }
516493
494+ instance : Coe (M ≃* N) (M →* N) := ⟨toMonoidHom⟩
495+
517496@ [to_additive (attr := simp)]
518497theorem coe_toMonoidHom (e : M ≃* N) : ⇑e.toMonoidHom = e := rfl
519498
520- @ [to_additive (attr := simp)]
521- theorem toMonoidHom_eq_coe (f : M ≃* N) : f.toMonoidHom = (f : M →* N) :=
522- rfl
499+ @ [to_additive (attr := deprecated "No replacement" (since := "2025-04-14" ))]
500+ theorem toMonoidHom_eq_ofClass (f : M ≃* N) : f.toMonoidHom = (.ofClass f : M →* N) := rfl
523501
524502@[to_additive]
525503theorem toMonoidHom_injective : Injective (toMonoidHom : M ≃* N → M →* N) :=
526504 Injective.of_comp (f := DFunLike.coe) DFunLike.coe_injective
527505
506+ @ [to_additive (attr := simp)]
507+ theorem refl_toMonoidHom : (refl M).toMonoidHom = .id M := rfl
508+
509+ @ [to_additive (attr := simp)]
510+ lemma trans_toMonoidHom (e₁ : M ≃* N) (e₂ : N ≃* P) :
511+ (e₁.trans e₂).toMonoidHom = e₂.toMonoidHom.comp e₁.toMonoidHom := rfl
512+
513+ @ [to_additive (attr := simp)]
514+ lemma toMonoidHom_comp_toMonoidHom_symm (e : M ≃* N) : e.toMonoidHom.comp e.symm = .id _ := by
515+ ext; simp
516+
517+ @ [to_additive (attr := simp)]
518+ lemma toMonoidHom_symm_comp_toMonoidHom (e : M ≃* N) : e.symm.toMonoidHom.comp e = .id _ := by
519+ ext; simp
520+
521+ @[to_additive]
522+ lemma comp_left_injective (e : M ≃* N) : Injective fun f : N →* P ↦ f.comp (e : M →* N) :=
523+ LeftInverse.injective (g := fun f ↦ f.comp e.symm) fun f ↦ by simp [MonoidHom.comp_assoc]
524+
525+ @[to_additive]
526+ lemma comp_right_injective (e : M ≃* N) : Injective fun f : P →* M ↦ (e : M →* N).comp f :=
527+ LeftInverse.injective (g := (e.symm : N →* M).comp) fun f ↦ by simp [← MonoidHom.comp_assoc]
528+
528529end MulOneClass
529530
530531/-!
0 commit comments