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

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)
⊢ volumeForm (-positiveOrientation) = -↑AlternatingMap.constLinearEquivOfIsEmpty 1

tactic: apply if_neg
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.rec (motive := fun t => 0 = t → AlternatingMap ℝ E ℝ (Fin 0))
      (fun h =>
        if hp :
            -rayOfNeZero ℝ (↑AlternatingMap.constLinearEquivOfIsEmpty 1)
                  (_ :
                    ↑AlternatingMap.constLinearEquivOfIsEmpty 1 ≠
                      ↑AlternatingMap.constLinearEquivOfIsEmpty AddMonoid.toZero.1) =
              rayOfNeZero ℝ (↑AlternatingMap.constLinearEquivOfIsEmpty 1)
                (_ :
                  ↑AlternatingMap.constLinearEquivOfIsEmpty 1 ≠
                    ↑AlternatingMap.constLinearEquivOfIsEmpty AddMonoid.toZero.1) then
          AlternatingMap.constOfIsEmpty ℝ E (Fin 0) 1
        else -AlternatingMap.constOfIsEmpty ℝ E (Fin 0) 1)
      (fun n n_ih h =>
        Eq.rec (motive := fun x x_1 =>
          [_i : Fact (finrank ℝ E = x)] → Orientation ℝ E (Fin x) → AlternatingMap ℝ E ℝ (Fin x))
          (fun [Fact (finrank ℝ E = Nat.succ n)] o =>
            Basis.det
              (OrthonormalBasis.toBasis
                (Orientation.finOrthonormalBasis (_ : 0 < Nat.succ n) (_ : finrank ℝ E = Nat.succ n) o)))
          (_ : Nat.succ n = 0)
          (-rayOfNeZero ℝ (↑AlternatingMap.constLinearEquivOfIsEmpty 1)
              (_ :
                ↑AlternatingMap.constLinearEquivOfIsEmpty 1 ≠
                  ↑AlternatingMap.constLinearEquivOfIsEmpty AddMonoid.toZero.1)))
      0 (_ : 0 = 0) =
    -↑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)
          (_ :
            ↑AlternatingMap.constLinearEquivOfIsEmpty 1 ≠
              ↑AlternatingMap.constLinearEquivOfIsEmpty AddMonoid.toZero.1) =
      rayOfNeZero ℝ (↑AlternatingMap.constLinearEquivOfIsEmpty 1)
        (_ : ↑AlternatingMap.constLinearEquivOfIsEmpty 1 ≠ ↑AlternatingMap.constLinearEquivOfIsEmpty AddMonoid.toZero.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)
⊢ ¬rayOfNeZero ℝ (-↑AlternatingMap.constLinearEquivOfIsEmpty 1) (_ : -↑AlternatingMap.constLinearEquivOfIsEmpty 1 ≠ 0) =
      rayOfNeZero ℝ (↑AlternatingMap.constLinearEquivOfIsEmpty 1)
        (_ : ↑AlternatingMap.constLinearEquivOfIsEmpty 1 ≠ ↑AlternatingMap.constLinearEquivOfIsEmpty AddMonoid.toZero.1)

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)
⊢ ¬SameRay ℝ (↑AlternatingMap.constLinearEquivOfIsEmpty 1) (-↑AlternatingMap.constLinearEquivOfIsEmpty 1)

tactic: simpa using
  congr_arg AlternatingMap.constLinearEquivOfIsEmpty.symm (eq_zero_of_sameRay_self_neg 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