Theorem: Orientation.abs_areaForm_of_orthogonal
File: Mathlib/Analysis/InnerProductSpace/TwoDim.lean

tactic: rw [o.areaForm_to_volumeForm, o.abs_volumeForm_apply_of_pairwise_orthogonal]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
h : ⟪x, y⟫_ℝ = 0
⊢ |(o.areaForm x) y| = ‖x‖ * ‖y‖
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
h : ⟪x, y⟫_ℝ = 0
⊢ ∏ i : Fin 2, ‖![x, y] i‖ = ‖x‖ * ‖y‖

E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
h : ⟪x, y⟫_ℝ = 0
⊢ Pairwise fun i j => ⟪![x, y] i, ![x, y] j⟫_ℝ = 0

tactic: intro i j hij
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
h : ⟪x, y⟫_ℝ = 0
⊢ Pairwise fun i j => ⟪![x, y] i, ![x, y] j⟫_ℝ = 0
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
h : ⟪x, y⟫_ℝ = 0
i j : Fin 2
hij : i ≠ j
⊢ ⟪![x, y] i, ![x, y] j⟫_ℝ = 0

tactic: fin_cases i <;> fin_cases j
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
h : ⟪x, y⟫_ℝ = 0
i j : Fin 2
hij : i ≠ j
⊢ ⟪![x, y] i, ![x, y] j⟫_ℝ = 0
state_after: case head.head
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
h : ⟪x, y⟫_ℝ = 0
hij : ⟨0, ⋯⟩ ≠ ⟨0, ⋯⟩
⊢ ⟪![x, y] ⟨0, ⋯⟩, ![x, y] ⟨0, ⋯⟩⟫_ℝ = 0

case head.tail.head
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
h : ⟪x, y⟫_ℝ = 0
hij : ⟨0, ⋯⟩ ≠ ⟨1, ⋯⟩
⊢ ⟪![x, y] ⟨0, ⋯⟩, ![x, y] ⟨1, ⋯⟩⟫_ℝ = 0

case tail.head.head
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
h : ⟪x, y⟫_ℝ = 0
hij : ⟨1, ⋯⟩ ≠ ⟨0, ⋯⟩
⊢ ⟪![x, y] ⟨1, ⋯⟩, ![x, y] ⟨0, ⋯⟩⟫_ℝ = 0

case tail.head.tail.head
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
h : ⟪x, y⟫_ℝ = 0
hij : ⟨1, ⋯⟩ ≠ ⟨1, ⋯⟩
⊢ ⟪![x, y] ⟨1, ⋯⟩, ![x, y] ⟨1, ⋯⟩⟫_ℝ = 0

tactic: simp [Fin.prod_univ_succ]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
h : ⟪x, y⟫_ℝ = 0
⊢ ∏ i : Fin 2, ‖![x, y] i‖ = ‖x‖ * ‖y‖
state_after: no goals

tactic: simp_all
state_before: case head.head
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
h : ⟪x, y⟫_ℝ = 0
hij : ⟨0, ⋯⟩ ≠ ⟨0, ⋯⟩
⊢ ⟪![x, y] ⟨0, ⋯⟩, ![x, y] ⟨0, ⋯⟩⟫_ℝ = 0
state_after: no goals

tactic: simpa using h
state_before: case head.tail.head
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
h : ⟪x, y⟫_ℝ = 0
hij : ⟨0, ⋯⟩ ≠ ⟨1, ⋯⟩
⊢ ⟪![x, y] ⟨0, ⋯⟩, ![x, y] ⟨1, ⋯⟩⟫_ℝ = 0
state_after: no goals

tactic: simpa [real_inner_comm] using h
state_before: case tail.head.head
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
h : ⟪x, y⟫_ℝ = 0
hij : ⟨1, ⋯⟩ ≠ ⟨0, ⋯⟩
⊢ ⟪![x, y] ⟨1, ⋯⟩, ![x, y] ⟨0, ⋯⟩⟫_ℝ = 0
state_after: no goals

tactic: simp_all
state_before: case tail.head.tail.head
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
h : ⟪x, y⟫_ℝ = 0
hij : ⟨1, ⋯⟩ ≠ ⟨1, ⋯⟩
⊢ ⟪![x, y] ⟨1, ⋯⟩, ![x, y] ⟨1, ⋯⟩⟫_ℝ = 0
state_after: no goals