Theorem: Orientation.volumeForm_zero_neg
File: Mathlib/Analysis/InnerProductSpace/Orientation.lean

Proof steps:
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace ℝ E
n : ℕ
_i✝ : Fact (finrank ℝ E = n)
o : Orientation ℝ E (Fin n)
_i : Fact (finrank ℝ E = 0)
⊢ (-positiveOrientation).volumeForm = -AlternatingMap.constLinearEquivOfIsEmpty 1
state_after: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace ℝ E
n : ℕ
_i✝ : Fact (finrank ℝ E = n)
o : Orientation ℝ E (Fin n)
_i : Fact (finrank ℝ E = 0)
⊢ Nat.casesAuxOn (motive := fun a => 0 = a → E [⋀^Fin 0]→ₗ[ℝ] ℝ) 0
      (fun h =>
        if hp :
            -rayOfNeZero ℝ (AlternatingMap.constLinearEquivOfIsEmpty 1) ⋯ =
              rayOfNeZero ℝ (AlternatingMap.constLinearEquivOfIsEmpty 1) ⋯ then
          AlternatingMap.constOfIsEmpty ℝ E (Fin 0) 1
        else -AlternatingMap.constOfIsEmpty ℝ E (Fin 0) 1)
      (fun n h =>
        Eq.rec (motive := fun x x_1 => [_i : Fact (finrank ℝ E = x)] → Orientation ℝ E (Fin x) → E [⋀^Fin x]→ₗ[ℝ] ℝ)
          (fun [Fact (finrank ℝ E = n + 1)] o => (Orientation.finOrthonormalBasis ⋯ ⋯ o).toBasis.det) ⋯
          (-rayOfNeZero ℝ (AlternatingMap.constLinearEquivOfIsEmpty 1) ⋯))
      ⋯ =
    -AlternatingMap.constLinearEquivOfIsEmpty 1
tactic: simp_rw [volumeForm, Or.by_cases, positiveOrientation]
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace ℝ E
n : ℕ
_i✝ : Fact (finrank ℝ E = n)
o : Orientation ℝ E (Fin n)
_i : Fact (finrank ℝ E = 0)
⊢ Nat.casesAuxOn (motive := fun a => 0 = a → E [⋀^Fin 0]→ₗ[ℝ] ℝ) 0
      (fun h =>
        if hp :
            -rayOfNeZero ℝ (AlternatingMap.constLinearEquivOfIsEmpty 1) ⋯ =
              rayOfNeZero ℝ (AlternatingMap.constLinearEquivOfIsEmpty 1) ⋯ then
          AlternatingMap.constOfIsEmpty ℝ E (Fin 0) 1
        else -AlternatingMap.constOfIsEmpty ℝ E (Fin 0) 1)
      (fun n h =>
        Eq.rec (motive := fun x x_1 => [_i : Fact (finrank ℝ E = x)] → Orientation ℝ E (Fin x) → E [⋀^Fin x]→ₗ[ℝ] ℝ)
          (fun [Fact (finrank ℝ E = n + 1)] o => (Orientation.finOrthonormalBasis ⋯ ⋯ o).toBasis.det) ⋯
          (-rayOfNeZero ℝ (AlternatingMap.constLinearEquivOfIsEmpty 1) ⋯))
      ⋯ =
    -AlternatingMap.constLinearEquivOfIsEmpty 1
state_after: case hnc
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace ℝ E
n : ℕ
_i✝ : Fact (finrank ℝ E = n)
o : Orientation ℝ E (Fin n)
_i : Fact (finrank ℝ E = 0)
⊢ ¬-rayOfNeZero ℝ (AlternatingMap.constLinearEquivOfIsEmpty 1) ⋯ =
      rayOfNeZero ℝ (AlternatingMap.constLinearEquivOfIsEmpty 1) ⋯
tactic: apply if_neg
state_before: case hnc
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace ℝ E
n : ℕ
_i✝ : Fact (finrank ℝ E = n)
o : Orientation ℝ E (Fin n)
_i : Fact (finrank ℝ E = 0)
⊢ ¬-rayOfNeZero ℝ (AlternatingMap.constLinearEquivOfIsEmpty 1) ⋯ =
      rayOfNeZero ℝ (AlternatingMap.constLinearEquivOfIsEmpty 1) ⋯
state_after: case hnc
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace ℝ E
n : ℕ
_i✝ : Fact (finrank ℝ E = n)
o : Orientation ℝ E (Fin n)
_i : Fact (finrank ℝ E = 0)
⊢ ¬rayOfNeZero ℝ (-AlternatingMap.constLinearEquivOfIsEmpty 1) ⋯ =
      rayOfNeZero ℝ (AlternatingMap.constLinearEquivOfIsEmpty 1) ⋯
tactic: simp only [neg_rayOfNeZero]
state_before: case hnc
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace ℝ E
n : ℕ
_i✝ : Fact (finrank ℝ E = n)
o : Orientation ℝ E (Fin n)
_i : Fact (finrank ℝ E = 0)
⊢ ¬rayOfNeZero ℝ (-AlternatingMap.constLinearEquivOfIsEmpty 1) ⋯ =
      rayOfNeZero ℝ (AlternatingMap.constLinearEquivOfIsEmpty 1) ⋯
state_after: case hnc
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace ℝ E
n : ℕ
_i✝ : Fact (finrank ℝ E = n)
o : Orientation ℝ E (Fin n)
_i : Fact (finrank ℝ E = 0)
⊢ ¬SameRay ℝ (AlternatingMap.constLinearEquivOfIsEmpty 1) (-AlternatingMap.constLinearEquivOfIsEmpty 1)
tactic: rw [ray_eq_iff, SameRay.sameRay_comm]
state_before: case hnc
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace ℝ E
n : ℕ
_i✝ : Fact (finrank ℝ E = n)
o : Orientation ℝ E (Fin n)
_i : Fact (finrank ℝ E = 0)
⊢ ¬SameRay ℝ (AlternatingMap.constLinearEquivOfIsEmpty 1) (-AlternatingMap.constLinearEquivOfIsEmpty 1)
state_after: case hnc
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace ℝ E
n : ℕ
_i✝ : Fact (finrank ℝ E = n)
o : Orientation ℝ E (Fin n)
_i : Fact (finrank ℝ E = 0)
h : SameRay ℝ (AlternatingMap.constLinearEquivOfIsEmpty 1) (-AlternatingMap.constLinearEquivOfIsEmpty 1)
⊢ False
tactic: intro h
state_before: case hnc
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace ℝ E
n : ℕ
_i✝ : Fact (finrank ℝ E = n)
o : Orientation ℝ E (Fin n)
_i : Fact (finrank ℝ E = 0)
h : SameRay ℝ (AlternatingMap.constLinearEquivOfIsEmpty 1) (-AlternatingMap.constLinearEquivOfIsEmpty 1)
⊢ False
state_after: no goals
tactic: simpa using
    congr_arg AlternatingMap.constLinearEquivOfIsEmpty.symm (eq_zero_of_sameRay_self_neg h)