Theorem: RCLike.complexRingEquiv_symm_apply
File: Mathlib/Analysis/Complex/Basic.lean

Proof steps:
state_before: z : ℂ
E : Type u_1
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
𝕜 : Type u_2
inst✝ : RCLike 𝕜
h : RCLike.im RCLike.I = 1
x : 𝕜
⊢ (fun x => ↑x.re + ↑x.im * RCLike.I) ((fun x => ↑(RCLike.re x) + ↑(RCLike.im x) * I) x) = x
state_after: no goals
tactic: simp
state_before: z : ℂ
E : Type u_1
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
𝕜 : Type u_2
inst✝ : RCLike 𝕜
h : RCLike.im RCLike.I = 1
x : ℂ
⊢ (fun x => ↑(RCLike.re x) + ↑(RCLike.im x) * I) ((fun x => ↑x.re + ↑x.im * RCLike.I) x) = x
state_after: no goals
tactic: simp [h]
state_before: z : ℂ
E : Type u_1
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
𝕜 : Type u_2
inst✝ : RCLike 𝕜
h : RCLike.im RCLike.I = 1
x y : 𝕜
⊢ { toFun := fun x => ↑(RCLike.re x) + ↑(RCLike.im x) * I, invFun := fun x => ↑x.re + ↑x.im * RCLike.I, left_inv := ⋯,
          right_inv := ⋯ }.toFun
      (x + y) =
    { toFun := fun x => ↑(RCLike.re x) + ↑(RCLike.im x) * I, invFun := fun x => ↑x.re + ↑x.im * RCLike.I, left_inv := ⋯,
            right_inv := ⋯ }.toFun
        x +
      { toFun := fun x => ↑(RCLike.re x) + ↑(RCLike.im x) * I, invFun := fun x => ↑x.re + ↑x.im * RCLike.I,
            left_inv := ⋯, right_inv := ⋯ }.toFun
        y
state_after: z : ℂ
E : Type u_1
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
𝕜 : Type u_2
inst✝ : RCLike 𝕜
h : RCLike.im RCLike.I = 1
x y : 𝕜
⊢ ↑(RCLike.re x) + ↑(RCLike.re y) + (↑(RCLike.im x) + ↑(RCLike.im y)) * I =
    ↑(RCLike.re x) + ↑(RCLike.im x) * I + (↑(RCLike.re y) + ↑(RCLike.im y) * I)
tactic: simp only [map_add, ofReal_add]
state_before: z : ℂ
E : Type u_1
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
𝕜 : Type u_2
inst✝ : RCLike 𝕜
h : RCLike.im RCLike.I = 1
x y : 𝕜
⊢ ↑(RCLike.re x) + ↑(RCLike.re y) + (↑(RCLike.im x) + ↑(RCLike.im y)) * I =
    ↑(RCLike.re x) + ↑(RCLike.im x) * I + (↑(RCLike.re y) + ↑(RCLike.im y) * I)
state_after: no goals
tactic: ring
state_before: z : ℂ
E : Type u_1
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
𝕜 : Type u_2
inst✝ : RCLike 𝕜
h : RCLike.im RCLike.I = 1
x y : 𝕜
⊢ { toFun := fun x => ↑(RCLike.re x) + ↑(RCLike.im x) * I, invFun := fun x => ↑x.re + ↑x.im * RCLike.I, left_inv := ⋯,
          right_inv := ⋯ }.toFun
      (x * y) =
    { toFun := fun x => ↑(RCLike.re x) + ↑(RCLike.im x) * I, invFun := fun x => ↑x.re + ↑x.im * RCLike.I, left_inv := ⋯,
            right_inv := ⋯ }.toFun
        x *
      { toFun := fun x => ↑(RCLike.re x) + ↑(RCLike.im x) * I, invFun := fun x => ↑x.re + ↑x.im * RCLike.I,
            left_inv := ⋯, right_inv := ⋯ }.toFun
        y
state_after: z : ℂ
E : Type u_1
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
𝕜 : Type u_2
inst✝ : RCLike 𝕜
h : RCLike.im RCLike.I = 1
x y : 𝕜
⊢ ↑(RCLike.re x) * ↑(RCLike.re y) - ↑(RCLike.im x) * ↑(RCLike.im y) +
      (↑(RCLike.re x) * ↑(RCLike.im y) + ↑(RCLike.im x) * ↑(RCLike.re y)) * I =
    (↑(RCLike.re x) + ↑(RCLike.im x) * I) * (↑(RCLike.re y) + ↑(RCLike.im y) * I)
tactic: simp only [RCLike.mul_re, ofReal_sub, ofReal_mul, RCLike.mul_im, ofReal_add]
state_before: z : ℂ
E : Type u_1
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
𝕜 : Type u_2
inst✝ : RCLike 𝕜
h : RCLike.im RCLike.I = 1
x y : 𝕜
⊢ ↑(RCLike.re x) * ↑(RCLike.re y) - ↑(RCLike.im x) * ↑(RCLike.im y) +
      (↑(RCLike.re x) * ↑(RCLike.im y) + ↑(RCLike.im x) * ↑(RCLike.re y)) * I =
    (↑(RCLike.re x) + ↑(RCLike.im x) * I) * (↑(RCLike.re y) + ↑(RCLike.im y) * I)
state_after: z : ℂ
E : Type u_1
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
𝕜 : Type u_2
inst✝ : RCLike 𝕜
h : RCLike.im RCLike.I = 1
x y : 𝕜
⊢ ↑(RCLike.re x) * ↑(RCLike.re y) + ↑(RCLike.re x) * ↑(RCLike.im y) * I +
      (↑(RCLike.re y) * ↑(RCLike.im x) * I - ↑(RCLike.im x) * ↑(RCLike.im y)) =
    ↑(RCLike.re x) * ↑(RCLike.re y) + ↑(RCLike.re x) * ↑(RCLike.im y) * I + ↑(RCLike.re y) * ↑(RCLike.im x) * I +
      ↑(RCLike.im x) * ↑(RCLike.im y) * I ^ 2
tactic: ring_nf
state_before: z : ℂ
E : Type u_1
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
𝕜 : Type u_2
inst✝ : RCLike 𝕜
h : RCLike.im RCLike.I = 1
x y : 𝕜
⊢ ↑(RCLike.re x) * ↑(RCLike.re y) + ↑(RCLike.re x) * ↑(RCLike.im y) * I +
      (↑(RCLike.re y) * ↑(RCLike.im x) * I - ↑(RCLike.im x) * ↑(RCLike.im y)) =
    ↑(RCLike.re x) * ↑(RCLike.re y) + ↑(RCLike.re x) * ↑(RCLike.im y) * I + ↑(RCLike.re y) * ↑(RCLike.im x) * I +
      ↑(RCLike.im x) * ↑(RCLike.im y) * I ^ 2
state_after: z : ℂ
E : Type u_1
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
𝕜 : Type u_2
inst✝ : RCLike 𝕜
h : RCLike.im RCLike.I = 1
x y : 𝕜
⊢ ↑(RCLike.re x) * ↑(RCLike.re y) + ↑(RCLike.re x) * ↑(RCLike.im y) * I +
      (↑(RCLike.re y) * ↑(RCLike.im x) * I - ↑(RCLike.im x) * ↑(RCLike.im y)) =
    ↑(RCLike.re x) * ↑(RCLike.re y) + ↑(RCLike.re x) * ↑(RCLike.im y) * I + ↑(RCLike.re y) * ↑(RCLike.im x) * I +
      ↑(RCLike.im x) * ↑(RCLike.im y) * -1
tactic: rw [I_sq]
state_before: z : ℂ
E : Type u_1
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
𝕜 : Type u_2
inst✝ : RCLike 𝕜
h : RCLike.im RCLike.I = 1
x y : 𝕜
⊢ ↑(RCLike.re x) * ↑(RCLike.re y) + ↑(RCLike.re x) * ↑(RCLike.im y) * I +
      (↑(RCLike.re y) * ↑(RCLike.im x) * I - ↑(RCLike.im x) * ↑(RCLike.im y)) =
    ↑(RCLike.re x) * ↑(RCLike.re y) + ↑(RCLike.re x) * ↑(RCLike.im y) * I + ↑(RCLike.re y) * ↑(RCLike.im x) * I +
      ↑(RCLike.im x) * ↑(RCLike.im y) * -1
state_after: no goals
tactic: ring