PhysLean Documentation

PhysLean.SpaceAndTime.Space.Basic

Space #

In this module, we define the the type Space d which corresponds to a d-dimensional Euclidean space and prove some properties about it.

PhysLean sits downstream of Mathlib, and above we import the necessary Mathlib modules which contain (perhaps transitively through imports) the definitions and theorems we need.

The Space type #

structure Space (d : β„• := 3) :

The type Space d represents d dimensional Euclidean space. The default value of d is 3. Thus Space = Space 3.

  • val : Fin d β†’ ℝ

    The underlying map Fin d β†’ ℝ associated with a point in Space.

Instances For
    theorem Space.eq_of_val {d : β„•} {p q : Space d} (h : p.val = q.val) :
    p = q
    @[simp]
    theorem Space.val_eq_iff {d : β„•} {p q : Space d} :
    p.val = q.val ↔ p = q

    B. Instances on Space #

    B.1. Instance of coercion to functions #

    instance Space.instCoeFunForallFinReal {d : β„•} :
    CoeFun (Space d) fun (x : Space d) => Fin d β†’ ℝ
    Equations
    theorem Space.eq_of_apply {d : β„•} {p q : Space d} (h : βˆ€ (i : Fin d), p.val i = q.val i) :
    p = q
    theorem Space.eq_of_apply_iff {d : β„•} {p q : Space d} :
    p = q ↔ βˆ€ (i : Fin d), p.val i = q.val i

    B.1. Instance of an additive commutative monoid #

    instance Space.instAdd {d : β„•} :
    Equations
    @[simp]
    theorem Space.add_val {d : β„•} (x y : Space d) :
    (x + y).val = x.val + y.val
    @[simp]
    theorem Space.add_apply {d : β„•} (x y : Space d) (i : Fin d) :
    (x + y).val i = x.val i + y.val i
    instance Space.instZero {d : β„•} :
    Equations
    @[simp]
    theorem Space.zero_val {d : β„•} :
    val 0 = fun (x : Fin d) => 0
    @[simp]
    theorem Space.zero_apply {d : β„•} (i : Fin d) :
    val 0 i = 0
    Equations
    • One or more equations did not get rendered due to their size.
    @[simp]
    theorem Space.nsmul_val {d : β„•} (n : β„•) (a : Space d) :
    (n β€’ a).val = fun (i : Fin d) => n β€’ a.val i
    @[simp]
    theorem Space.nsmul_apply {d : β„•} (n : β„•) (a : Space d) (i : Fin d) :
    (n β€’ a).val i = n β€’ a.val i

    B.2. Instance of a module over ℝ #

    Equations
    @[simp]
    theorem Space.smul_val {d : β„•} (c : ℝ) (p : Space d) :
    (c β€’ p).val = fun (i : Fin d) => c * p.val i
    @[simp]
    theorem Space.smul_apply {d : β„•} (c : ℝ) (p : Space d) (i : Fin d) :
    (c β€’ p).val i = c * p.val i
    Equations

    B.3. Addition of Euclidean spaces #

    Equations
    @[simp]
    theorem Space.vadd_val {d : β„•} (v : EuclideanSpace ℝ (Fin d)) (s : Space d) :
    (v +α΅₯ s).val = fun (i : Fin d) => v.ofLp i + s.val i
    @[simp]
    theorem Space.vadd_apply {d : β„•} (v : EuclideanSpace ℝ (Fin d)) (s : Space d) (i : Fin d) :
    (v +α΅₯ s).val i = v.ofLp i + s.val i
    theorem Space.vadd_transitive {d : β„•} (s1 s2 : Space d) :
    βˆƒ (v : EuclideanSpace ℝ (Fin d)), v +α΅₯ s1 = s2
    theorem Space.eq_vadd_zero {d : β„•} (s : Space d) :
    βˆƒ (v : EuclideanSpace ℝ (Fin d)), s = v +α΅₯ 0
    @[simp]
    Equations
    @[simp]
    theorem Space.add_vadd_zero {d : β„•} (v1 v2 : EuclideanSpace ℝ (Fin d)) :
    (v1 +α΅₯ 0) + (v2 +α΅₯ 0) = (v1 + v2) +α΅₯ 0

    B.3. Instance of an inner product space #

    noncomputable instance Space.instNorm {d : β„•} :
    Equations
    theorem Space.norm_eq {d : β„•} (p : Space d) :
    β€–pβ€– = √(βˆ‘ i : Fin d, p.val i ^ 2)
    @[simp]
    theorem Space.abs_eval_le_norm {d : β„•} (p : Space d) (i : Fin d) :
    theorem Space.norm_sq_eq {d : β„•} (p : Space d) :
    β€–pβ€– ^ 2 = βˆ‘ i : Fin d, p.val i ^ 2
    instance Space.instNeg {d : β„•} :
    Equations
    @[simp]
    theorem Space.neg_val {d : β„•} (p : Space d) :
    (-p).val = fun (i : Fin d) => -p.val i
    @[simp]
    theorem Space.neg_apply {d : β„•} (p : Space d) (i : Fin d) :
    (-p).val i = -p.val i
    noncomputable instance Space.instAddCommGroup {d : β„•} :
    Equations
    • One or more equations did not get rendered due to their size.
    @[simp]
    theorem Space.sub_apply {d : β„•} (p q : Space d) (i : Fin d) :
    (p - q).val i = p.val i - q.val i
    @[simp]
    theorem Space.sub_val {d : β„•} (p q : Space d) :
    (p - q).val = fun (i : Fin d) => p.val i - q.val i
    @[simp]
    theorem Space.vadd_zero_sub_vadd_zero {d : β„•} (v1 v2 : EuclideanSpace ℝ (Fin d)) :
    (v1 +α΅₯ 0) - (v2 +α΅₯ 0) = (v1 - v2) +α΅₯ 0
    Equations
    • One or more equations did not get rendered due to their size.
    @[simp]
    theorem Space.dist_eq {d : β„•} (p q : Space d) :
    Equations
    • One or more equations did not get rendered due to their size.
    Equations
    @[simp]
    theorem Space.inner_vadd_zero {d : β„•} (v1 v2 : EuclideanSpace ℝ (Fin d)) :
    inner ℝ (v1 +α΅₯ 0) (v2 +α΅₯ 0) = inner ℝ v1 v2
    theorem Space.inner_apply {d : β„•} (p q : Space d) :
    inner ℝ p q = βˆ‘ i : Fin d, p.val i * q.val i
    Equations
    • One or more equations did not get rendered due to their size.

    B.4. Instance of a measurable space #

    The norm on Space #

    Inner product #

    theorem Space.inner_eq_sum {d : β„•} (p q : Space d) :
    inner ℝ p q = βˆ‘ i : Fin d, p.val i * q.val i
    @[simp]
    theorem Space.sum_apply {d : β„•} {ΞΉ : Type} [Fintype ΞΉ] (f : ΞΉ β†’ Space d) (i : Fin d) :
    (βˆ‘ x : ΞΉ, f x).val i = βˆ‘ x : ΞΉ, (f x).val i

    Basis #

    noncomputable def Space.basis {d : β„•} :

    The standard basis of Space based on Fin d.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      theorem Space.apply_eq_basis_repr_apply {d : β„•} (p : Space d) (i : Fin d) :
      p.val i = (basis.repr p).ofLp i
      @[simp]
      theorem Space.basis_repr_apply {d : β„•} (p : Space d) (i : Fin d) :
      (basis.repr p).ofLp i = p.val i
      @[simp]
      theorem Space.basis_repr_symm_apply {d : β„•} (v : EuclideanSpace ℝ (Fin d)) (i : Fin d) :
      (basis.repr.symm v).val i = v.ofLp i
      theorem Space.basis_apply {d : β„•} (i j : Fin d) :
      (basis i).val j = if i = j then 1 else 0
      @[simp]
      theorem Space.basis_self {d : β„•} (i : Fin d) :
      (basis i).val i = 1
      @[simp]
      theorem Space.inner_basis {d : β„•} (p : Space d) (i : Fin d) :
      inner ℝ p (basis i) = p.val i
      @[simp]
      theorem Space.basis_inner {d : β„•} (i : Fin d) (p : Space d) :
      inner ℝ (basis i) p = p.val i
      @[simp]
      theorem Space.rank_eq_dim {d : β„•} :

      Coordinates #

      noncomputable def Space.coord {d : β„•} (ΞΌ : Fin d) (p : Space d) :

      The standard coordinate functions of Space based on Fin d.

      The notation 𝔁 ΞΌ p can be used for this.

      Equations
      Instances For
        theorem Space.coord_apply {d : β„•} (ΞΌ : Fin d) (p : Space d) :
        coord ΞΌ p = p.val ΞΌ
        noncomputable def Space.coordCLM {d : β„•} (ΞΌ : Fin d) :

        The standard coordinate functions of Space based on Fin d, as a continuous linear map.

        Equations
        Instances For
          theorem Space.coord_contDiff {d : β„•} {i : Fin d} :
          ContDiff ℝ β†‘βŠ€ fun (x : Space d) => coord i x
          theorem Space.coordCLM_apply {d : β„•} (ΞΌ : Fin d) (p : Space d) :
          (coordCLM ΞΌ) p = coord ΞΌ p

          The standard coordinate functions of Space based on Fin d.

          The notation 𝔁 ΞΌ p can be used for this.

          Equations
          Instances For
            theorem Space.eval_continuous {d : β„•} (i : Fin d) :
            Continuous fun (p : Space d) => p.val i
            theorem Space.eval_differentiable {d : β„•} (i : Fin d) :
            Differentiable ℝ fun (p : Space d) => p.val i
            theorem Space.eval_contDiff {d : β„•} {n : WithTop β„•βˆž} (i : Fin d) :
            ContDiff ℝ n fun (p : Space d) => p.val i

            The continous linear equivalence between Space d and the corresponding Pi type.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              theorem Space.mk_continuous {d : β„•} :
              Continuous fun (f : Fin d β†’ ℝ) => { val := f }
              theorem Space.mk_differentiable {d : β„•} :
              Differentiable ℝ fun (f : Fin d β†’ ℝ) => { val := f }
              theorem Space.mk_contDiff {d n : β„•} :
              ContDiff ℝ ↑n fun (f : Fin d β†’ ℝ) => { val := f }
              @[simp]
              theorem Space.fderiv_mk {d : β„•} (f : Fin d β†’ ℝ) :
              @[simp]
              theorem Space.fderiv_val {d : β„•} (p : Space d) :
              fderiv ℝ val p = ↑(equivPi d)

              Directions #

              structure Space.Direction (d : β„• := 3) :

              Notion of direction where unit returns a unit vector in the direction specified.

              Instances For
                noncomputable def Space.toDirection {d : β„•} (x : Space d) (h : x β‰  0) :

                Direction of a Space value with respect to the origin.

                Equations
                Instances For
                  @[simp]
                  theorem Space.direction_unit_sq_sum {d : β„•} (s : Direction d) :
                  βˆ‘ i : Fin d, s.unit.val i ^ 2 = 1

                  One equiv #

                  The linear isometric equivalence between Space 1 and ℝ.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    theorem Space.oneEquiv_coe :
                    ⇑oneEquiv = fun (x : Space 1) => x.val 0
                    theorem Space.oneEquiv_symm_coe :
                    ⇑oneEquiv.symm = fun (x : ℝ) => { val := fun (x_1 : Fin 1) => x }

                    The continuous linear equivalence between Space 1 and ℝ.

                    Equations
                    Instances For