Theorem: OrthonormalBasis.same_orientation_iff_det_eq_det
File: Mathlib/Analysis/InnerProductSpace/Orientation.lean

tactic: constructor
state_before: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace ℝ E
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
ne : Nonempty ι
e f : OrthonormalBasis ι ℝ E
x : Orientation ℝ E ι
⊢ e.toBasis.det = f.toBasis.det ↔ e.toBasis.orientation = f.toBasis.orientation
state_after: case mp
E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace ℝ E
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
ne : Nonempty ι
e f : OrthonormalBasis ι ℝ E
x : Orientation ℝ E ι
⊢ e.toBasis.det = f.toBasis.det → e.toBasis.orientation = f.toBasis.orientation

case mpr
E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace ℝ E
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
ne : Nonempty ι
e f : OrthonormalBasis ι ℝ E
x : Orientation ℝ E ι
⊢ e.toBasis.orientation = f.toBasis.orientation → e.toBasis.det = f.toBasis.det

tactic: intro h
state_before: case mp
E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace ℝ E
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
ne : Nonempty ι
e f : OrthonormalBasis ι ℝ E
x : Orientation ℝ E ι
⊢ e.toBasis.det = f.toBasis.det → e.toBasis.orientation = f.toBasis.orientation
state_after: case mp
E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace ℝ E
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
ne : Nonempty ι
e f : OrthonormalBasis ι ℝ E
x : Orientation ℝ E ι
h : e.toBasis.det = f.toBasis.det
⊢ e.toBasis.orientation = f.toBasis.orientation

tactic: dsimp [Basis.orientation]
state_before: case mp
E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace ℝ E
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
ne : Nonempty ι
e f : OrthonormalBasis ι ℝ E
x : Orientation ℝ E ι
h : e.toBasis.det = f.toBasis.det
⊢ e.toBasis.orientation = f.toBasis.orientation
state_after: case mp
E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace ℝ E
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
ne : Nonempty ι
e f : OrthonormalBasis ι ℝ E
x : Orientation ℝ E ι
h : e.toBasis.det = f.toBasis.det
⊢ rayOfNeZero ℝ e.toBasis.det ⋯ = rayOfNeZero ℝ f.toBasis.det ⋯

tactic: congr
state_before: case mp
E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace ℝ E
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
ne : Nonempty ι
e f : OrthonormalBasis ι ℝ E
x : Orientation ℝ E ι
h : e.toBasis.det = f.toBasis.det
⊢ rayOfNeZero ℝ e.toBasis.det ⋯ = rayOfNeZero ℝ f.toBasis.det ⋯
state_after: no goals

tactic: intro h
state_before: case mpr
E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace ℝ E
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
ne : Nonempty ι
e f : OrthonormalBasis ι ℝ E
x : Orientation ℝ E ι
⊢ e.toBasis.orientation = f.toBasis.orientation → e.toBasis.det = f.toBasis.det
state_after: case mpr
E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace ℝ E
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
ne : Nonempty ι
e f : OrthonormalBasis ι ℝ E
x : Orientation ℝ E ι
h : e.toBasis.orientation = f.toBasis.orientation
⊢ e.toBasis.det = f.toBasis.det

tactic: rw [e.toBasis.det.eq_smul_basis_det f.toBasis]
state_before: case mpr
E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace ℝ E
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
ne : Nonempty ι
e f : OrthonormalBasis ι ℝ E
x : Orientation ℝ E ι
h : e.toBasis.orientation = f.toBasis.orientation
⊢ e.toBasis.det = f.toBasis.det
state_after: case mpr
E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace ℝ E
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
ne : Nonempty ι
e f : OrthonormalBasis ι ℝ E
x : Orientation ℝ E ι
h : e.toBasis.orientation = f.toBasis.orientation
⊢ e.toBasis.det ⇑f.toBasis • f.toBasis.det = f.toBasis.det

tactic: simp [e.det_to_matrix_orthonormalBasis_of_same_orientation f h]
state_before: case mpr
E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace ℝ E
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
ne : Nonempty ι
e f : OrthonormalBasis ι ℝ E
x : Orientation ℝ E ι
h : e.toBasis.orientation = f.toBasis.orientation
⊢ e.toBasis.det ⇑f.toBasis • f.toBasis.det = f.toBasis.det
state_after: no goals