Theorem: ContinuousMap.val_unitsLift_symm_apply_apply
File: Mathlib/Topology/ContinuousFunction/Units.lean

Proof steps:
state_before: X : Type u_1
M : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝³ : TopologicalSpace X
inst✝² : Monoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
f : C(X, Mˣ)
⊢ (fun f => { toFun := fun x => { val := ↑f x, inv := ↑f⁻¹ x, val_inv := ⋯, inv_val := ⋯ }, continuous_toFun := ⋯ })
      ((fun f =>
          { val := { toFun := fun x => ↑(f x), continuous_toFun := ⋯ },
            inv := { toFun := fun x => ↑(f x)⁻¹, continuous_toFun := ⋯ }, val_inv := ⋯, inv_val := ⋯ })
        f) =
    f
state_after: case h.a
X : Type u_1
M : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝³ : TopologicalSpace X
inst✝² : Monoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
f : C(X, Mˣ)
a✝ : X
⊢ ↑(((fun f => { toFun := fun x => { val := ↑f x, inv := ↑f⁻¹ x, val_inv := ⋯, inv_val := ⋯ }, continuous_toFun := ⋯ })
          ((fun f =>
              { val := { toFun := fun x => ↑(f x), continuous_toFun := ⋯ },
                inv := { toFun := fun x => ↑(f x)⁻¹, continuous_toFun := ⋯ }, val_inv := ⋯, inv_val := ⋯ })
            f))
        a✝) =
    ↑(f a✝)
tactic: ext
state_before: case h.a
X : Type u_1
M : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝³ : TopologicalSpace X
inst✝² : Monoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
f : C(X, Mˣ)
a✝ : X
⊢ ↑(((fun f => { toFun := fun x => { val := ↑f x, inv := ↑f⁻¹ x, val_inv := ⋯, inv_val := ⋯ }, continuous_toFun := ⋯ })
          ((fun f =>
              { val := { toFun := fun x => ↑(f x), continuous_toFun := ⋯ },
                inv := { toFun := fun x => ↑(f x)⁻¹, continuous_toFun := ⋯ }, val_inv := ⋯, inv_val := ⋯ })
            f))
        a✝) =
    ↑(f a✝)
state_after: no goals
tactic: rfl
state_before: X : Type u_1
M : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝³ : TopologicalSpace X
inst✝² : Monoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
f : C(X, M)ˣ
⊢ (fun f =>
        { val := { toFun := fun x => ↑(f x), continuous_toFun := ⋯ },
          inv := { toFun := fun x => ↑(f x)⁻¹, continuous_toFun := ⋯ }, val_inv := ⋯, inv_val := ⋯ })
      ((fun f =>
          { toFun := fun x => { val := ↑f x, inv := ↑f⁻¹ x, val_inv := ⋯, inv_val := ⋯ }, continuous_toFun := ⋯ })
        f) =
    f
state_after: case a.h
X : Type u_1
M : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝³ : TopologicalSpace X
inst✝² : Monoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
f : C(X, M)ˣ
a✝ : X
⊢ ↑((fun f =>
            { val := { toFun := fun x => ↑(f x), continuous_toFun := ⋯ },
              inv := { toFun := fun x => ↑(f x)⁻¹, continuous_toFun := ⋯ }, val_inv := ⋯, inv_val := ⋯ })
          ((fun f =>
              { toFun := fun x => { val := ↑f x, inv := ↑f⁻¹ x, val_inv := ⋯, inv_val := ⋯ }, continuous_toFun := ⋯ })
            f))
      a✝ =
    ↑f a✝
tactic: ext
state_before: case a.h
X : Type u_1
M : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝³ : TopologicalSpace X
inst✝² : Monoid M
inst✝¹ : TopologicalSpace M
inst✝ : ContinuousMul M
f : C(X, M)ˣ
a✝ : X
⊢ ↑((fun f =>
            { val := { toFun := fun x => ↑(f x), continuous_toFun := ⋯ },
              inv := { toFun := fun x => ↑(f x)⁻¹, continuous_toFun := ⋯ }, val_inv := ⋯, inv_val := ⋯ })
          ((fun f =>
              { toFun := fun x => { val := ↑f x, inv := ↑f⁻¹ x, val_inv := ⋯, inv_val := ⋯ }, continuous_toFun := ⋯ })
            f))
      a✝ =
    ↑f a✝
state_after: no goals
tactic: rfl