Theorem: Orientation.rotation_eq_matrix_toLin
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Rotation.lean

tactic: apply (o.basisRightAngleRotation x hx).ext
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
θ : Real.Angle
x : V
hx : x ≠ 0
⊢ ↑(o.rotation θ).toLinearEquiv =
    (Matrix.toLin (o.basisRightAngleRotation x hx) (o.basisRightAngleRotation x hx))
      (Matrix.of ![![θ.cos, -θ.sin], ![θ.sin, θ.cos]])
state_after: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
θ : Real.Angle
x : V
hx : x ≠ 0
⊢ ∀ (i : Fin 2),
    ↑(o.rotation θ).toLinearEquiv ((o.basisRightAngleRotation x hx) i) =
      ((Matrix.toLin (o.basisRightAngleRotation x hx) (o.basisRightAngleRotation x hx))
          (Matrix.of ![![θ.cos, -θ.sin], ![θ.sin, θ.cos]]))
        ((o.basisRightAngleRotation x hx) i)

tactic: intro i
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
θ : Real.Angle
x : V
hx : x ≠ 0
⊢ ∀ (i : Fin 2),
    ↑(o.rotation θ).toLinearEquiv ((o.basisRightAngleRotation x hx) i) =
      ((Matrix.toLin (o.basisRightAngleRotation x hx) (o.basisRightAngleRotation x hx))
          (Matrix.of ![![θ.cos, -θ.sin], ![θ.sin, θ.cos]]))
        ((o.basisRightAngleRotation x hx) i)
state_after: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
θ : Real.Angle
x : V
hx : x ≠ 0
i : Fin 2
⊢ ↑(o.rotation θ).toLinearEquiv ((o.basisRightAngleRotation x hx) i) =
    ((Matrix.toLin (o.basisRightAngleRotation x hx) (o.basisRightAngleRotation x hx))
        (Matrix.of ![![θ.cos, -θ.sin], ![θ.sin, θ.cos]]))
      ((o.basisRightAngleRotation x hx) i)

tactic: fin_cases i
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
θ : Real.Angle
x : V
hx : x ≠ 0
i : Fin 2
⊢ ↑(o.rotation θ).toLinearEquiv ((o.basisRightAngleRotation x hx) i) =
    ((Matrix.toLin (o.basisRightAngleRotation x hx) (o.basisRightAngleRotation x hx))
        (Matrix.of ![![θ.cos, -θ.sin], ![θ.sin, θ.cos]]))
      ((o.basisRightAngleRotation x hx) i)
state_after: case head
V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
θ : Real.Angle
x : V
hx : x ≠ 0
⊢ ↑(o.rotation θ).toLinearEquiv ((o.basisRightAngleRotation x hx) ⟨0, ⋯⟩) =
    ((Matrix.toLin (o.basisRightAngleRotation x hx) (o.basisRightAngleRotation x hx))
        (Matrix.of ![![θ.cos, -θ.sin], ![θ.sin, θ.cos]]))
      ((o.basisRightAngleRotation x hx) ⟨0, ⋯⟩)

case tail.head
V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
θ : Real.Angle
x : V
hx : x ≠ 0
⊢ ↑(o.rotation θ).toLinearEquiv ((o.basisRightAngleRotation x hx) ⟨1, ⋯⟩) =
    ((Matrix.toLin (o.basisRightAngleRotation x hx) (o.basisRightAngleRotation x hx))
        (Matrix.of ![![θ.cos, -θ.sin], ![θ.sin, θ.cos]]))
      ((o.basisRightAngleRotation x hx) ⟨1, ⋯⟩)

tactic: rw [Matrix.toLin_self]
state_before: case head
V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
θ : Real.Angle
x : V
hx : x ≠ 0
⊢ ↑(o.rotation θ).toLinearEquiv ((o.basisRightAngleRotation x hx) ⟨0, ⋯⟩) =
    ((Matrix.toLin (o.basisRightAngleRotation x hx) (o.basisRightAngleRotation x hx))
        (Matrix.of ![![θ.cos, -θ.sin], ![θ.sin, θ.cos]]))
      ((o.basisRightAngleRotation x hx) ⟨0, ⋯⟩)
state_after: case head
V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
θ : Real.Angle
x : V
hx : x ≠ 0
⊢ ↑(o.rotation θ).toLinearEquiv ((o.basisRightAngleRotation x hx) ⟨0, ⋯⟩) =
    ∑ j : Fin 2, Matrix.of ![![θ.cos, -θ.sin], ![θ.sin, θ.cos]] j ⟨0, ⋯⟩ • (o.basisRightAngleRotation x hx) j

tactic: simp [rotation_apply, Fin.sum_univ_succ]
state_before: case head
V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
θ : Real.Angle
x : V
hx : x ≠ 0
⊢ ↑(o.rotation θ).toLinearEquiv ((o.basisRightAngleRotation x hx) ⟨0, ⋯⟩) =
    ∑ j : Fin 2, Matrix.of ![![θ.cos, -θ.sin], ![θ.sin, θ.cos]] j ⟨0, ⋯⟩ • (o.basisRightAngleRotation x hx) j
state_after: no goals

tactic: rw [Matrix.toLin_self]
state_before: case tail.head
V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
θ : Real.Angle
x : V
hx : x ≠ 0
⊢ ↑(o.rotation θ).toLinearEquiv ((o.basisRightAngleRotation x hx) ⟨1, ⋯⟩) =
    ((Matrix.toLin (o.basisRightAngleRotation x hx) (o.basisRightAngleRotation x hx))
        (Matrix.of ![![θ.cos, -θ.sin], ![θ.sin, θ.cos]]))
      ((o.basisRightAngleRotation x hx) ⟨1, ⋯⟩)
state_after: case tail.head
V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
θ : Real.Angle
x : V
hx : x ≠ 0
⊢ ↑(o.rotation θ).toLinearEquiv ((o.basisRightAngleRotation x hx) ⟨1, ⋯⟩) =
    ∑ j : Fin 2, Matrix.of ![![θ.cos, -θ.sin], ![θ.sin, θ.cos]] j ⟨1, ⋯⟩ • (o.basisRightAngleRotation x hx) j

tactic: simp [rotation_apply, Fin.sum_univ_succ, add_comm]
state_before: case tail.head
V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
θ : Real.Angle
x : V
hx : x ≠ 0
⊢ ↑(o.rotation θ).toLinearEquiv ((o.basisRightAngleRotation x hx) ⟨1, ⋯⟩) =
    ∑ j : Fin 2, Matrix.of ![![θ.cos, -θ.sin], ![θ.sin, θ.cos]] j ⟨1, ⋯⟩ • (o.basisRightAngleRotation x hx) j
state_after: no goals