Documentation

Mathlib.Analysis.InnerProductSpace.Orientation

Orientations of real inner product spaces. #

This file provides definitions and proves lemmas about orientations of real inner product spaces.

Main definitions #

Main theorems #

The change-of-basis matrix between two orthonormal bases with the same orientation has determinant 1.

The change-of-basis matrix between two orthonormal bases with the opposite orientations has determinant -1.

Two orthonormal bases with the same orientation determine the same "determinant" top-dimensional form on E, and conversely.

Two orthonormal bases with opposite orientations determine opposite "determinant" top-dimensional forms on E.

OrthonormalBasis.adjustToOrientation, applied to an orthonormal basis, preserves the property of orthonormality.

Given an orthonormal basis and an orientation, return an orthonormal basis giving that orientation: either the original basis, or one constructed by negating a single (arbitrary) basis vector.

Equations
Instances For
    @[simp]

    adjustToOrientation gives an orthonormal basis with the required orientation.

    Every basis vector from adjustToOrientation is either that from the original basis or its negation.

    An orthonormal basis, indexed by Fin n, with the given orientation.

    Equations
    Instances For
      @[irreducible]

      The volume form on an oriented real inner product space, a nonvanishing top-dimensional alternating form uniquely defined by compatibility with the orientation and inner product structure.

      Equations
      Instances For
        theorem Orientation.volumeForm_def {E : Type u_2} [NormedAddCommGroup E] [InnerProductSpace E] {n : } [_i : Fact (FiniteDimensional.finrank E = n)] (o : Orientation E (Fin n)) :
        Orientation.volumeForm o = Nat.casesOn (motive := fun (t : ) => n = tE [⋀^Fin n]→ₗ[] ) n (fun (h : n = Nat.zero) => Eq.ndrec (motive := fun {n : } => [_i : Fact (FiniteDimensional.finrank E = n)] → Orientation E (Fin n)E [⋀^Fin n]→ₗ[] ) (fun [Fact (FiniteDimensional.finrank E = Nat.zero)] (o : Orientation E (Fin Nat.zero)) => let opos := AlternatingMap.constOfIsEmpty E (Fin 0) 1; Or.by_cases (fun (x : o = positiveOrientation) => opos) fun (x : o = -positiveOrientation) => -opos) o) (fun (n_1 : ) (h : n = Nat.succ n_1) => Eq.ndrec (motive := fun {n : } => [_i : Fact (FiniteDimensional.finrank E = n)] → Orientation E (Fin n)E [⋀^Fin n]→ₗ[] ) (fun [Fact (FiniteDimensional.finrank E = Nat.succ n_1)] (o : Orientation E (Fin (Nat.succ n_1))) => Basis.det (OrthonormalBasis.toBasis (Orientation.finOrthonormalBasis o))) o)
        @[simp]
        theorem Orientation.volumeForm_zero_pos {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace E] [_i : Fact (FiniteDimensional.finrank E = 0)] :
        Orientation.volumeForm positiveOrientation = AlternatingMap.constLinearEquivOfIsEmpty 1
        theorem Orientation.volumeForm_zero_neg {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace E] [_i : Fact (FiniteDimensional.finrank E = 0)] :
        Orientation.volumeForm (-positiveOrientation) = -AlternatingMap.constLinearEquivOfIsEmpty 1

        The volume form on an oriented real inner product space can be evaluated as the determinant with respect to any orthonormal basis of the space compatible with the orientation.

        The volume form on an oriented real inner product space can be evaluated as the determinant with respect to any orthonormal basis of the space compatible with the orientation.

        theorem Orientation.abs_volumeForm_apply_le {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace E] {n : } [_i : Fact (FiniteDimensional.finrank E = n)] (o : Orientation E (Fin n)) (v : Fin nE) :
        |(Orientation.volumeForm o) v| Finset.prod Finset.univ fun (i : Fin n) => v i

        Let v be an indexed family of n vectors in an oriented n-dimensional real inner product space E. The output of the volume form of E when evaluated on v is bounded in absolute value by the product of the norms of the vectors v i.

        theorem Orientation.volumeForm_apply_le {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace E] {n : } [_i : Fact (FiniteDimensional.finrank E = n)] (o : Orientation E (Fin n)) (v : Fin nE) :
        (Orientation.volumeForm o) v Finset.prod Finset.univ fun (i : Fin n) => v i
        theorem Orientation.abs_volumeForm_apply_of_pairwise_orthogonal {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace E] {n : } [_i : Fact (FiniteDimensional.finrank E = n)] (o : Orientation E (Fin n)) {v : Fin nE} (hv : Pairwise fun (i j : Fin n) => v i, v j⟫_ = 0) :
        |(Orientation.volumeForm o) v| = Finset.prod Finset.univ fun (i : Fin n) => v i

        Let v be an indexed family of n orthogonal vectors in an oriented n-dimensional real inner product space E. The output of the volume form of E when evaluated on v is, up to sign, the product of the norms of the vectors v i.

        The output of the volume form of an oriented real inner product space E when evaluated on an orthonormal basis is ±1.

        theorem Orientation.volumeForm_comp_linearIsometryEquiv {E : Type u_1} [NormedAddCommGroup E] [InnerProductSpace E] {n : } [_i : Fact (FiniteDimensional.finrank E = n)] (o : Orientation E (Fin n)) (φ : E ≃ₗᵢ[] E) (hφ : 0 < LinearMap.det φ.toLinearEquiv) (x : Fin nE) :

        The volume form is invariant under pullback by a positively-oriented isometric automorphism.