Theorem: ContinuousLinearMap.to_ring_inverse
File: Mathlib/Topology/Algebra/Module/Basic.lean

tactic: by_cases h₁ : ∃ e' : M ≃L[R] M₂, e' = f
state_before: R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁷ : TopologicalSpace M
inst✝⁶ : TopologicalSpace M₂
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalAddGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₂
inst✝ : Module R M₂
e : M ≃L[R] M₂
f : M →L[R] M₂
⊢ inverse f = comp (Ring.inverse (comp (↑(ContinuousLinearEquiv.symm e)) f)) ↑(ContinuousLinearEquiv.symm e)

tactic: obtain ⟨e', he'⟩ := h₁
state_before: case pos
R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁷ : TopologicalSpace M
inst✝⁶ : TopologicalSpace M₂
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalAddGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₂
inst✝ : Module R M₂
e : M ≃L[R] M₂
f : M →L[R] M₂
h₁ : ∃ e', ↑e' = f
⊢ inverse f = comp (Ring.inverse (comp (↑(ContinuousLinearEquiv.symm e)) f)) ↑(ContinuousLinearEquiv.symm e)

tactic: rw [← he']
state_before: case pos.intro
R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁷ : TopologicalSpace M
inst✝⁶ : TopologicalSpace M₂
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalAddGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₂
inst✝ : Module R M₂
e : M ≃L[R] M₂
f : M →L[R] M₂
e' : M ≃L[R] M₂
he' : ↑e' = f
⊢ inverse f = comp (Ring.inverse (comp (↑(ContinuousLinearEquiv.symm e)) f)) ↑(ContinuousLinearEquiv.symm e)

tactic: change _ = Ring.inverse (e'.trans e.symm : M →L[R] M) ∘L (e.symm : M₂ →L[R] M)
state_before: case pos.intro
R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁷ : TopologicalSpace M
inst✝⁶ : TopologicalSpace M₂
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalAddGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₂
inst✝ : Module R M₂
e : M ≃L[R] M₂
f : M →L[R] M₂
e' : M ≃L[R] M₂
he' : ↑e' = f
⊢ inverse ↑e' = comp (Ring.inverse (comp ↑(ContinuousLinearEquiv.symm e) ↑e')) ↑(ContinuousLinearEquiv.symm e)

tactic: ext
state_before: case pos.intro
R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁷ : TopologicalSpace M
inst✝⁶ : TopologicalSpace M₂
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalAddGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₂
inst✝ : Module R M₂
e : M ≃L[R] M₂
f : M →L[R] M₂
e' : M ≃L[R] M₂
he' : ↑e' = f
⊢ inverse ↑e' =
    comp (Ring.inverse ↑(ContinuousLinearEquiv.trans e' (ContinuousLinearEquiv.symm e))) ↑(ContinuousLinearEquiv.symm e)

tactic: simp
state_before: case pos.intro.h
R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁷ : TopologicalSpace M
inst✝⁶ : TopologicalSpace M₂
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalAddGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₂
inst✝ : Module R M₂
e : M ≃L[R] M₂
f : M →L[R] M₂
e' : M ≃L[R] M₂
he' : ↑e' = f
x✝ : M₂
⊢ ↑(inverse ↑e') x✝ =
    ↑(comp (Ring.inverse ↑(ContinuousLinearEquiv.trans e' (ContinuousLinearEquiv.symm e)))
          ↑(ContinuousLinearEquiv.symm e))
      x✝

tactic: suffices ¬IsUnit ((e.symm : M₂ →L[R] M).comp f) by simp [this, h₁]
state_before: case neg
R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁷ : TopologicalSpace M
inst✝⁶ : TopologicalSpace M₂
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalAddGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₂
inst✝ : Module R M₂
e : M ≃L[R] M₂
f : M →L[R] M₂
h₁ : ¬∃ e', ↑e' = f
⊢ inverse f = comp (Ring.inverse (comp (↑(ContinuousLinearEquiv.symm e)) f)) ↑(ContinuousLinearEquiv.symm e)

tactic: contrapose! h₁
state_before: case neg
R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁷ : TopologicalSpace M
inst✝⁶ : TopologicalSpace M₂
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalAddGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₂
inst✝ : Module R M₂
e : M ≃L[R] M₂
f : M →L[R] M₂
h₁ : ¬∃ e', ↑e' = f
⊢ ¬IsUnit (comp (↑(ContinuousLinearEquiv.symm e)) f)

tactic: rcases h₁ with ⟨F, hF⟩
state_before: case neg
R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁷ : TopologicalSpace M
inst✝⁶ : TopologicalSpace M₂
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalAddGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₂
inst✝ : Module R M₂
e : M ≃L[R] M₂
f : M →L[R] M₂
h₁ : IsUnit (comp (↑(ContinuousLinearEquiv.symm e)) f)
⊢ ∃ e', ↑e' = f

tactic: use (ContinuousLinearEquiv.unitsEquiv _ _ F).trans e
state_before: case neg.intro
R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁷ : TopologicalSpace M
inst✝⁶ : TopologicalSpace M₂
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalAddGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₂
inst✝ : Module R M₂
e : M ≃L[R] M₂
f : M →L[R] M₂
F : (M →L[R] M)ˣ
hF : ↑F = comp (↑(ContinuousLinearEquiv.symm e)) f
⊢ ∃ e', ↑e' = f

tactic: ext
state_before: case neg.intro
R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁷ : TopologicalSpace M
inst✝⁶ : TopologicalSpace M₂
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalAddGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₂
inst✝ : Module R M₂
e : M ≃L[R] M₂
f : M →L[R] M₂
F : (M →L[R] M)ˣ
hF : ↑F = comp (↑(ContinuousLinearEquiv.symm e)) f
⊢ ↑(ContinuousLinearEquiv.trans (↑(ContinuousLinearEquiv.unitsEquiv R M) F) e) = f

tactic: dsimp
state_before: case neg.intro.h
R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁷ : TopologicalSpace M
inst✝⁶ : TopologicalSpace M₂
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalAddGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₂
inst✝ : Module R M₂
e : M ≃L[R] M₂
f : M →L[R] M₂
F : (M →L[R] M)ˣ
hF : ↑F = comp (↑(ContinuousLinearEquiv.symm e)) f
x✝ : M
⊢ ↑↑(ContinuousLinearEquiv.trans (↑(ContinuousLinearEquiv.unitsEquiv R M) F) e) x✝ = ↑f x✝

tactic: rw [hF]
state_before: case neg.intro.h
R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁷ : TopologicalSpace M
inst✝⁶ : TopologicalSpace M₂
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalAddGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₂
inst✝ : Module R M₂
e : M ≃L[R] M₂
f : M →L[R] M₂
F : (M →L[R] M)ˣ
hF : ↑F = comp (↑(ContinuousLinearEquiv.symm e)) f
x✝ : M
⊢ ↑e (↑↑F x✝) = ↑f x✝

tactic: simp
state_before: case neg.intro.h
R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁷ : TopologicalSpace M
inst✝⁶ : TopologicalSpace M₂
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalAddGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₂
inst✝ : Module R M₂
e : M ≃L[R] M₂
f : M →L[R] M₂
F : (M →L[R] M)ˣ
hF : ↑F = comp (↑(ContinuousLinearEquiv.symm e)) f
x✝ : M
⊢ ↑e (↑(comp (↑(ContinuousLinearEquiv.symm e)) f) x✝) = ↑f x✝

tactic: simp [this, h₁]
state_before: R : Type u_1
M : Type u_2
M₂ : Type u_3
inst✝⁷ : TopologicalSpace M
inst✝⁶ : TopologicalSpace M₂
inst✝⁵ : Ring R
inst✝⁴ : AddCommGroup M
inst✝³ : TopologicalAddGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup M₂
inst✝ : Module R M₂
e : M ≃L[R] M₂
f : M →L[R] M₂
h₁ : ¬∃ e', ↑e' = f
this : ¬IsUnit (comp (↑(ContinuousLinearEquiv.symm e)) f)
⊢ inverse f = comp (Ring.inverse (comp (↑(ContinuousLinearEquiv.symm e)) f)) ↑(ContinuousLinearEquiv.symm e)