Skip to content

Commit e368f2a

Browse files
feat(*/Equiv/*): Add symm_bijective lemmas next to symm_symms (#8444)
Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: lines <34025592+linesthatinterlace@users.noreply.github.com>
1 parent 98e6de4 commit e368f2a

File tree

22 files changed

+76
-17
lines changed

22 files changed

+76
-17
lines changed

Mathlib/Algebra/Algebra/Equiv.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ theorem symm_symm (e : A₁ ≃ₐ[R] A₂) : e.symm.symm = e := by
362362
#align alg_equiv.symm_symm AlgEquiv.symm_symm
363363

364364
theorem symm_bijective : Function.Bijective (symm : (A₁ ≃ₐ[R] A₂) → A₂ ≃ₐ[R] A₁) :=
365-
Equiv.bijective ⟨symm, symm, symm_symm, symm_symm⟩
365+
Function.bijective_iff_has_inverse.mpr ⟨_, symm_symm, symm_symm⟩
366366
#align alg_equiv.symm_bijective AlgEquiv.symm_bijective
367367

368368
@[simp]

Mathlib/Algebra/Group/Equiv/Basic.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -343,8 +343,8 @@ theorem symm_symm (f : M ≃* N) : f.symm.symm = f := rfl
343343
#align add_equiv.symm_symm AddEquiv.symm_symm
344344

345345
@[to_additive]
346-
theorem symm_bijective : Function.Bijective (symm : M ≃* N → N ≃* M) :=
347-
Equiv.bijective ⟨symm, symm, symm_symm, symm_symm⟩
346+
theorem symm_bijective : Function.Bijective (symm : (M ≃* N) → N ≃* M) :=
347+
Function.bijective_iff_has_inverse.mpr ⟨_, symm_symm, symm_symm⟩
348348
#align mul_equiv.symm_bijective MulEquiv.symm_bijective
349349
#align add_equiv.symm_bijective AddEquiv.symm_bijective
350350

Mathlib/Algebra/Homology/ComplexShape.lean

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,10 @@ theorem symm_symm (c : ComplexShape ι) : c.symm.symm = c := by
102102
simp
103103
#align complex_shape.symm_symm ComplexShape.symm_symm
104104

105+
theorem symm_bijective :
106+
Function.Bijective (ComplexShape.symm : ComplexShape ι → ComplexShape ι) :=
107+
Function.bijective_iff_has_inverse.mpr ⟨_, symm_symm, symm_symm⟩
108+
105109
/-- The "composition" of two `ComplexShape`s.
106110
107111
We need this to define "related in k steps" later.

Mathlib/Algebra/Lie/Basic.lean

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -633,6 +633,9 @@ theorem symm_symm (e : L₁ ≃ₗ⁅R⁆ L₂) : e.symm.symm = e := by
633633
rfl
634634
#align lie_equiv.symm_symm LieEquiv.symm_symm
635635

636+
theorem symm_bijective : Function.Bijective (LieEquiv.symm : (L₁ ≃ₗ⁅R⁆ L₂) → L₂ ≃ₗ⁅R⁆ L₁) :=
637+
Function.bijective_iff_has_inverse.mpr ⟨_, symm_symm, symm_symm⟩
638+
636639
@[simp]
637640
theorem apply_symm_apply (e : L₁ ≃ₗ⁅R⁆ L₂) : ∀ x, e (e.symm x) = x :=
638641
e.toLinearEquiv.apply_symm_apply
@@ -1108,6 +1111,10 @@ theorem symm_symm (e : M ≃ₗ⁅R,L⁆ N) : e.symm.symm = e := by
11081111
rfl
11091112
#align lie_module_equiv.symm_symm LieModuleEquiv.symm_symm
11101113

1114+
theorem symm_bijective :
1115+
Function.Bijective (LieModuleEquiv.symm : (M ≃ₗ⁅R,L⁆ N) → N ≃ₗ⁅R,L⁆ M) :=
1116+
Function.bijective_iff_has_inverse.mpr ⟨_, symm_symm, symm_symm⟩
1117+
11111118
/-- Lie module equivalences are transitive. -/
11121119
@[trans]
11131120
def trans (e₁ : M ≃ₗ⁅R,L⁆ N) (e₂ : N ≃ₗ⁅R,L⁆ P) : M ≃ₗ⁅R,L⁆ P :=

Mathlib/Algebra/Module/Equiv.lean

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -519,9 +519,7 @@ theorem symm_symm (e : M ≃ₛₗ[σ] M₂) : e.symm.symm = e := by
519519

520520
theorem symm_bijective [Module R M] [Module S M₂] [RingHomInvPair σ' σ] [RingHomInvPair σ σ'] :
521521
Function.Bijective (symm : (M ≃ₛₗ[σ] M₂) → M₂ ≃ₛₗ[σ'] M) :=
522-
Equiv.bijective
523-
⟨(symm : (M ≃ₛₗ[σ] M₂) → M₂ ≃ₛₗ[σ'] M), (symm : (M₂ ≃ₛₗ[σ'] M) → M ≃ₛₗ[σ] M₂), symm_symm,
524-
symm_symm⟩
522+
Function.bijective_iff_has_inverse.mpr ⟨_, symm_symm, symm_symm⟩
525523
#align linear_equiv.symm_bijective LinearEquiv.symm_bijective
526524

527525
@[simp]

Mathlib/Algebra/Order/Hom/Ring.lean

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -505,9 +505,8 @@ theorem symm_trans_self (e : α ≃+*o β) : e.symm.trans e = OrderRingIso.refl
505505
ext e.right_inv
506506
#align order_ring_iso.symm_trans_self OrderRingIso.symm_trans_self
507507

508-
theorem symm_bijective : Bijective (OrderRingIso.symm : α ≃+*o β → β ≃+*o α) :=
509-
fun f g h => f.symm_symm.symm.trans <| (congr_arg OrderRingIso.symm h).trans g.symm_symm,
510-
fun f => ⟨f.symm, f.symm_symm⟩⟩
508+
theorem symm_bijective : Bijective (OrderRingIso.symm : (α ≃+*o β) → β ≃+*o α) :=
509+
Function.bijective_iff_has_inverse.mpr ⟨_, symm_symm, symm_symm⟩
511510
#align order_ring_iso.symm_bijective OrderRingIso.symm_bijective
512511

513512
end LE

Mathlib/Algebra/Ring/Equiv.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -295,8 +295,8 @@ theorem coe_toEquiv_symm (e : R ≃+* S) : (e.symm : S ≃ R) = (e : R ≃ S).sy
295295
rfl
296296
#align ring_equiv.coe_to_equiv_symm RingEquiv.coe_toEquiv_symm
297297

298-
theorem symm_bijective : Function.Bijective (RingEquiv.symm : R ≃+* S → S ≃+* R) :=
299-
Equiv.bijective ⟨RingEquiv.symm, RingEquiv.symm, symm_symm, symm_symm⟩
298+
theorem symm_bijective : Function.Bijective (RingEquiv.symm : (R ≃+* S) → S ≃+* R) :=
299+
Function.bijective_iff_has_inverse.mpr ⟨_, symm_symm, symm_symm⟩
300300
#align ring_equiv.symm_bijective RingEquiv.symm_bijective
301301

302302
@[simp]

Mathlib/Algebra/Star/StarAlgHom.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -867,7 +867,7 @@ theorem symm_symm (e : A ≃⋆ₐ[R] B) : e.symm.symm = e := by
867867
#align star_alg_equiv.symm_symm StarAlgEquiv.symm_symm
868868

869869
theorem symm_bijective : Function.Bijective (symm : (A ≃⋆ₐ[R] B) → B ≃⋆ₐ[R] A) :=
870-
Equiv.bijective ⟨symm, symm, symm_symm, symm_symm⟩
870+
Function.bijective_iff_has_inverse.mpr ⟨_, symm_symm, symm_symm⟩
871871
#align star_alg_equiv.symm_bijective StarAlgEquiv.symm_bijective
872872

873873
-- porting note: doesn't align with Mathlib 3 because `StarAlgEquiv.mk` has a new signature

Mathlib/AlgebraicTopology/FundamentalGroupoid/Basic.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ def reflTransSymm (p : Path x₀ x₁) : Homotopy (Path.refl x₀) (p.trans p.sy
114114
/-- For any path `p` from `x₀` to `x₁`, we have a homotopy from the constant path based at `x₁` to
115115
`p.symm.trans p`. -/
116116
def reflSymmTrans (p : Path x₀ x₁) : Homotopy (Path.refl x₁) (p.symm.trans p) :=
117-
(reflTransSymm p.symm).cast rfl <| congr_arg _ Path.symm_symm
117+
(reflTransSymm p.symm).cast rfl <| congr_arg _ (Path.symm_symm _)
118118
#align path.homotopy.refl_symm_trans Path.Homotopy.reflSymmTrans
119119

120120
end

Mathlib/Data/PEquiv.lean

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,11 @@ theorem symm_refl : (PEquiv.refl α).symm = PEquiv.refl α :=
135135
theorem symm_symm (f : α ≃. β) : f.symm.symm = f := by cases f; rfl
136136
#align pequiv.symm_symm PEquiv.symm_symm
137137

138+
theorem symm_bijective : Function.Bijective (PEquiv.symm : (α ≃. β) → β ≃. α) :=
139+
Function.bijective_iff_has_inverse.mpr ⟨_, symm_symm, symm_symm⟩
140+
138141
theorem symm_injective : Function.Injective (@PEquiv.symm α β) :=
139-
LeftInverse.injective symm_symm
142+
symm_bijective.injective
140143
#align pequiv.symm_injective PEquiv.symm_injective
141144

142145
theorem trans_assoc (f : α ≃. β) (g : β ≃. γ) (h : γ ≃. δ) :

0 commit comments

Comments
 (0)