Rupert Counterexample

3. Bounding Rotations🔗

Lemma3.1
groupuses 0used by 1✓L∃∀N

For any \alpha, \theta,\varphi \in \mathbb{R} and a \in \{x,y,z\} one has \| R(\alpha)\| = \| R_a(\alpha)\| =\| M(\theta, \phi)\| = 1.

Lean code for Lemma3.1●8 theorems
  • complete
    theorem Bounding.Rx_norm_one (α : ℝ) : ‖RxL α‖ = 1
    theorem Bounding.Rx_norm_one (α : ℝ) : ‖RxL α‖ = 1
  • complete
    theorem Bounding.Ry_norm_one (α : ℝ) : ‖RyL α‖ = 1
    theorem Bounding.Ry_norm_one (α : ℝ) : ‖RyL α‖ = 1
  • complete
    theorem Bounding.Rz_norm_one (α : ℝ) : ‖RzL α‖ = 1
    theorem Bounding.Rz_norm_one (α : ℝ) : ‖RzL α‖ = 1
  • complete
    theorem Bounding.rotR_norm_one (α : ℝ) : ‖rotR α‖ = 1
    theorem Bounding.rotR_norm_one (α : ℝ) :
      ‖rotR α‖ = 1
  • complete
    theorem Bounding.rotM_norm_one (θ φ : ℝ) : ‖rotM θ φ‖ = 1
    theorem Bounding.rotM_norm_one (θ φ : ℝ) :
      ‖rotM θ φ‖ = 1
  • complete
    theorem Bounding.rotR'_norm_one (α : ℝ) : ‖rotR' α‖ = 1
    theorem Bounding.rotR'_norm_one (α : ℝ) :
      ‖rotR' α‖ = 1
  • complete
    theorem Bounding.rotMθ_norm_le_one (θ φ : ℝ) : ‖rotMθ θ φ‖ ≤ 1
    theorem Bounding.rotMθ_norm_le_one (θ φ : ℝ) :
      ‖rotMθ θ φ‖ ≤ 1
  • complete
    theorem Bounding.rotMφ_norm_le_one (θ φ : ℝ) : ‖rotMφ θ φ‖ ≤ 1
    theorem Bounding.rotMφ_norm_le_one (θ φ : ℝ) :
      ‖rotMφ θ φ‖ ≤ 1
Proof for Lemma 3.1
uses 0

See polyhedron.without.rupert, Lemma 9.

Lean code for code:lem:RaRalphatheorem bp_Rx_norm_one (α : ℝ) : ‖RxL α‖ = 1 := α:ℝ⊢ ‖RxL α‖ = 1 All goals completed! 🐙 theorem bp_Ry_norm_one (α : ℝ) : ‖RyL α‖ = 1 := α:ℝ⊢ ‖RyL α‖ = 1 All goals completed! 🐙 theorem bp_Rz_norm_one (α : ℝ) : ‖RzL α‖ = 1 := α:ℝ⊢ ‖RzL α‖ = 1 All goals completed! 🐙 theorem bp_rotR_norm_one (α : ℝ) : ‖rotR α‖ = 1 := α:ℝ⊢ ‖rotR α‖ = 1 All goals completed! 🐙 theorem bp_rotM_norm_one (θ φ : ℝ) : ‖rotM θ φ‖ = 1 := θ:ℝφ:ℝ⊢ ‖rotM θ φ‖ = 1 All goals completed! 🐙
Lemma3.2
groupuses 0used by 0✓L∃∀N

Let \epsilon>0, |\alpha-\alphab|\leq\varepsilon and a \in \{x,y,z\} then \|R_a(\alpha)-R_a({\alphab})\|=\|R(\alpha)-R(\alphab)\| < \varepsilon.

Lean code for Lemma3.2●4 theorems
  • complete
    theorem Bounding.norm_rotR_sub_rotR_lt {ε α α_ : ℝ} (hε : 0 < ε)
      (hα : |α - α_| ≤ ε) : ‖rotR α - rotR α_‖ < ε
    theorem Bounding.norm_rotR_sub_rotR_lt
      {ε α α_ : ℝ} (hε : 0 < ε)
      (hα : |α - α_| ≤ ε) :
      ‖rotR α - rotR α_‖ < ε
  • complete
    theorem Bounding.norm_RxL_sub_RxL_eq {α α_ : ℝ} :
      ‖RxL α - RxL α_‖ = ‖rotR α - rotR α_‖
    theorem Bounding.norm_RxL_sub_RxL_eq {α α_ : ℝ} :
      ‖RxL α - RxL α_‖ = ‖rotR α - rotR α_‖
  • complete
    theorem Bounding.norm_RyL_sub_RyL_eq {α α_ : ℝ} :
      ‖RyL α - RyL α_‖ = ‖rotR α - rotR α_‖
    theorem Bounding.norm_RyL_sub_RyL_eq {α α_ : ℝ} :
      ‖RyL α - RyL α_‖ = ‖rotR α - rotR α_‖
  • complete
    theorem Bounding.norm_RzL_sub_RzL_eq {α α_ : ℝ} :
      ‖RzL α - RzL α_‖ = ‖rotR α - rotR α_‖
    theorem Bounding.norm_RzL_sub_RzL_eq {α α_ : ℝ} :
      ‖RzL α - RzL α_‖ = ‖rotR α - rotR α_‖
Proof for Lemma 3.2
uses 0

See polyhedron.without.rupert, Lemma 10.

Lean code for code:lem:RaRatheorem bp_norm_rotR_sub_rotR_lt {ε α α_ : ℝ} (hε : 0 < ε) (hα : |α - α_| ≤ ε) : ‖rotR α - rotR α_‖ < ε := ε:ℝα:ℝα_:ℝhε:0 < εhα:|α - α_| ≤ ε⊢ ‖rotR α - rotR α_‖ < ε All goals completed! 🐙 theorem bp_norm_RxL_sub_RxL_eq {α α_ : ℝ} : ‖RxL α - RxL α_‖ = ‖rotR α - rotR α_‖ := α:ℝα_:ℝ⊢ ‖RxL α - RxL α_‖ = ‖rotR α - rotR α_‖ All goals completed! 🐙 theorem bp_norm_RyL_sub_RyL_eq {α α_ : ℝ} : ‖RyL α - RyL α_‖ = ‖rotR α - rotR α_‖ := α:ℝα_:ℝ⊢ ‖RyL α - RyL α_‖ = ‖rotR α - rotR α_‖ All goals completed! 🐙 theorem bp_norm_RzL_sub_RzL_eq {α α_ : ℝ} : ‖RzL α - RzL α_‖ = ‖rotR α - rotR α_‖ := α:ℝα_:ℝ⊢ ‖RzL α - RzL α_‖ = ‖rotR α - rotR α_‖ All goals completed! 🐙
Lemma3.3
uses 0
Used by 2
Reverse dependency previews
Preview
Lemma 3.4
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
✓L∃∀N

For any \alpha,\beta\in \mathbb{R} one has \|R_x(\alpha)R_y(\beta)-\mathrm{id}\| \leq \sqrt{\alpha^2+\beta^2} with strict inequality unless \alpha = \beta = 0.

Lean code for Lemma3.3●2 theorems
  • theorem Bounding.lemma12 {d d' : Fin 3} {α β : ℝ} (d_ne_d' : d ≠ d') :
      ‖(rot3 d) α ∘SL (rot3 d') β - 1‖ ≤ √(α ^ 2 + β ^ 2)
    theorem Bounding.lemma12 {d d' : Fin 3} {α β : ℝ}
      (d_ne_d' : d ≠ d') :
      ‖(rot3 d) α ∘SL (rot3 d') β - 1‖ ≤
        √(α ^ 2 + β ^ 2)
  • theorem Bounding.lemma12_lt_of_ne {d d' : Fin 3} {α β : ℝ} (d_ne_d' : d ≠ d')
      (h : ¬(α = 0 ∧ β = 0)) :
      ‖(rot3 d) α ∘SL (rot3 d') β - 1‖ < √(α ^ 2 + β ^ 2)
    theorem Bounding.lemma12_lt_of_ne {d d' : Fin 3}
      {α β : ℝ} (d_ne_d' : d ≠ d')
      (h : ¬(α = 0 ∧ β = 0)) :
      ‖(rot3 d) α ∘SL (rot3 d') β - 1‖ <
        √(α ^ 2 + β ^ 2)
    The bound of `lemma12` is strict unless both angles vanish. 
Proof for Lemma 3.3
uses 0

The composition R_d(\alpha)R_{d'}(\beta) is a rotation, i.e. conjugate to some R_z(\gamma) by an isometry, which gives \|R_d(\alpha)R_{d'}(\beta)-\mathrm{id}\|^2 = 2(1-\cos\gamma) = 3 - \mathrm{tr}(R_d(\alpha)R_{d'}(\beta)) = 3 - (\cos\alpha + \cos\beta + \cos\alpha\cos\beta). Writing the right hand side as 2(1-\cos\alpha) + 2(1-\cos\beta) - (1-\cos\alpha)(1-\cos\beta) and using 2(1-\cos x) \leq x^2 (with equality only at x = 0) yields the bound and the equality condition. This is a direct route to polyhedron.without.rupert, Lemma 12, that avoids the Jensen-inequality argument of Lemma 11 and the doubling induction.

Lean code for code:lem:RxRytheorem bp_lemma12 {d d' : Fin 3} {α β : ℝ} (hd : d ≠ d') : ‖rot3 d α ∘L rot3 d' β - 1‖ ≤ √(α ^ 2 + β ^ 2) := d:Fin 3d':Fin 3α:ℝβ:ℝhd:d ≠ d'⊢ ‖(rot3 d) α ∘SL (rot3 d') β - 1‖ ≤ √(α ^ 2 + β ^ 2) All goals completed! 🐙 theorem bp_lemma12_lt_of_ne {d d' : Fin 3} {α β : ℝ} (hd : d ≠ d') (h : ¬ (α = 0 ∧ β = 0)) : ‖rot3 d α ∘L rot3 d' β - 1‖ < √(α ^ 2 + β ^ 2) := d:Fin 3d':Fin 3α:ℝβ:ℝhd:d ≠ d'h:¬(α = 0 ∧ β = 0)⊢ ‖(rot3 d) α ∘SL (rot3 d') β - 1‖ < √(α ^ 2 + β ^ 2) All goals completed! 🐙
Lemma3.4
Group: Perturbation bounds for projected points. (3)
Group member previews
Preview
Lemma 3.5
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
uses 0
Used by 5
Reverse dependency previews
Preview
Lemma 3.5
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
✓L∃∀N

Let \epsilon>0 and |\theta-\thetab|,|\varphi-\phib| \leq \varepsilon then \|M(\theta, \phi)-M(\thetab,\phib)\|, \|X(\theta, \varphi)-X(\thetab,\phib)\| < \sqrt{2}\varepsilon.

Lean code for Lemma3.4●2 theorems
  • theoremdefined in Noperthedron/Bounding.lean
    complete
    theorem Bounding.norm_M_sub_lt {ε θ θ_ φ φ_ : ℝ} (hε : 0 < ε)
      (hθ : |θ - θ_| ≤ ε) (hφ : |φ - φ_| ≤ ε) :
      ‖rotM θ φ - rotM θ_ φ_‖ < √2 * ε
    theorem Bounding.norm_M_sub_lt {ε θ θ_ φ φ_ : ℝ}
      (hε : 0 < ε) (hθ : |θ - θ_| ≤ ε)
      (hφ : |φ - φ_| ≤ ε) :
      ‖rotM θ φ - rotM θ_ φ_‖ < √2 * ε
    First half of [SY25] Lemma 13. 
  • theoremdefined in Noperthedron/Bounding.lean
    complete
    theorem Bounding.norm_X_sub_lt {ε θ θ_ φ φ_ : ℝ} (hε : 0 < ε)
      (hθ : |θ - θ_| ≤ ε) (hφ : |φ - φ_| ≤ ε) :
      ‖vecX θ φ - vecX θ_ φ_‖ < √2 * ε
    theorem Bounding.norm_X_sub_lt {ε θ θ_ φ φ_ : ℝ}
      (hε : 0 < ε) (hθ : |θ - θ_| ≤ ε)
      (hφ : |φ - φ_| ≤ ε) :
      ‖vecX θ φ - vecX θ_ φ_‖ < √2 * ε
    Second half of [SY25] Lemma 13. 
Proof for Lemma 3.4

See polyhedron.without.rupert, Lemma 13.

Lean code for code:lem:sqrt2theorem bp_norm_M_sub_lt {ε θ θ_ φ φ_ : ℝ} (hε : 0 < ε) (hθ : |θ - θ_| ≤ ε) (hφ : |φ - φ_| ≤ ε) : ‖rotM θ φ - rotM θ_ φ_‖ < √2 * ε := ε:ℝθ:ℝθ_:ℝφ:ℝφ_:ℝhε:0 < εhθ:|θ - θ_| ≤ εhφ:|φ - φ_| ≤ ε⊢ ‖rotM θ φ - rotM θ_ φ_‖ < √2 * ε All goals completed! 🐙 theorem bp_norm_X_sub_lt {ε θ θ_ φ φ_ : ℝ} (hε : 0 < ε) (hθ : |θ - θ_| ≤ ε) (hφ : |φ - φ_| ≤ ε) : ‖vecX θ φ - vecX θ_ φ_‖ < √2 * ε := ε:ℝθ:ℝθ_:ℝφ:ℝφ_:ℝhε:0 < εhθ:|θ - θ_| ≤ εhφ:|φ - φ_| ≤ ε⊢ ‖vecX θ φ - vecX θ_ φ_‖ < √2 * ε All goals completed! 🐙
Lemma3.5
Group: Perturbation bounds for projected points. (3)
Group member previews
Preview
Lemma 3.4
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
uses 0used by 1✓L∃∀N

Let P \in \mathbb{R}^3 with \|P\| \leq 1. Further, let \epsilon>0 and \thetab,\phib, \theta, \phi \in \mathbb{R} such that |\thetab-\theta|, |\phib - \phi| \leq \epsilon. If \langle X(\thetab,\phib),P \rangle>\sqrt{2}\varepsilon then \langle X(\theta, \phi),P \rangle>0.

Lean code for Lemma3.5●1 theorem
  • theoremdefined in Noperthedron/Bounding.lean
    complete
    theorem Bounding.XPgt0 {P : Euc(3)} {ε θ θ_ φ φ_ : ℝ} (hP : ‖P‖ ≤ 1)
      (hε : 0 < ε) (hθ : |θ - θ_| ≤ ε) (hφ : |φ - φ_| ≤ ε)
      (hX : √2 * ε < ⟪vecX θ_ φ_, P⟫) : 0 < ⟪vecX θ φ, P⟫
    theorem Bounding.XPgt0 {P : Euc(3)}
      {ε θ θ_ φ φ_ : ℝ} (hP : ‖P‖ ≤ 1)
      (hε : 0 < ε) (hθ : |θ - θ_| ≤ ε)
      (hφ : |φ - φ_| ≤ ε)
      (hX : √2 * ε < ⟪vecX θ_ φ_, P⟫) :
      0 < ⟪vecX θ φ, P⟫
    [SY25] Lemma 14
    
Proof for Lemma 3.5

See polyhedron.without.rupert, Lemma 14.

Lean code for code:lem:XPgt0theorem bp_XPgt0 {P : ℝ³} {ε θ θ_ φ φ_ : ℝ} (hP : ‖P‖ ≤ 1) (hε : 0 < ε) (hθ : |θ - θ_| ≤ ε) (hφ : |φ - φ_| ≤ ε) (hX : √2 * ε < ⟪vecX θ_ φ_, P⟫) : 0 < ⟪vecX θ φ, P⟫ := P:Euc(3)ε:ℝθ:ℝθ_:ℝφ:ℝφ_:ℝhP:‖P‖ ≤ 1hε:0 < εhθ:|θ - θ_| ≤ εhφ:|φ - φ_| ≤ εhX:√2 * ε < ⟪vecX θ_ φ_, P⟫⊢ 0 < ⟪vecX θ φ, P⟫ All goals completed! 🐙
Lemma3.6
Group: Perturbation bounds for projected points. (3)
Group member previews
Preview
Lemma 3.4
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
uses 0used by 1✓L∃∀N

Let P \in \mathbb{R}^3 with \|P\| \leq 1. Further, let \epsilon, r>0 and \thetab,\phib, \theta, \phi \in \mathbb{R} such that |\thetab-\theta|, |\phib - \phi| \leq \epsilon. If \| M(\thetab,\phib) P \| > r + \sqrt{2}\varepsilon then \| M(\theta,\phi) P \| > r.

Lean code for Lemma3.6●1 theorem
  • theoremdefined in Noperthedron/Bounding.lean
    complete
    theorem Bounding.norm_M_apply_gt {ε r θ θ_ φ φ_ : ℝ} {P : Euc(3)} (hP : ‖P‖ ≤ 1)
      (hε : 0 < ε) (hθ : |θ - θ_| ≤ ε) (hφ : |φ - φ_| ≤ ε)
      (hM : r + √2 * ε < ‖(rotM θ_ φ_) P‖) : r < ‖(rotM θ φ) P‖
    theorem Bounding.norm_M_apply_gt
      {ε r θ θ_ φ φ_ : ℝ} {P : Euc(3)}
      (hP : ‖P‖ ≤ 1) (hε : 0 < ε)
      (hθ : |θ - θ_| ≤ ε) (hφ : |φ - φ_| ≤ ε)
      (hM : r + √2 * ε < ‖(rotM θ_ φ_) P‖) :
      r < ‖(rotM θ φ) P‖
    [SY25] Lemma 15
    
Proof for Lemma 3.6

See polyhedron.without.rupert, Lemma 15. Corrigendum: the triangle inquality only implies greater than or equal to.

Lean code for code:lem:MPgtrtheorem bp_norm_M_apply_gt {ε r θ θ_ φ φ_ : ℝ} {P : ℝ³} (hP : ‖P‖ ≤ 1) (hε : 0 < ε) (hθ : |θ - θ_| ≤ ε) (hφ : |φ - φ_| ≤ ε) (hM : r + √2 * ε < ‖rotM θ_ φ_ P‖) : r < ‖rotM θ φ P‖ := ε:ℝr:ℝθ:ℝθ_:ℝφ:ℝφ_:ℝP:Euc(3)hP:‖P‖ ≤ 1hε:0 < εhθ:|θ - θ_| ≤ εhφ:|φ - φ_| ≤ εhM:r + √2 * ε < ‖(rotM θ_ φ_) P‖⊢ r < ‖(rotM θ φ) P‖ All goals completed! 🐙
Lemma3.7
Group: Perturbation bounds for projected points. (3)
Group member previews
Preview
Lemma 3.4
Loading preview
Group member preview content is loaded from the rendered-fragment cache.
uses 0used by 1✓L∃∀N

Let \epsilon>0 and |\theta-\thetab|,|\varphi-\phib|,|\alpha-\alphab|\leq\varepsilon then \|R(\alpha) M(\theta, \phi)-R(\alphab)M(\thetab,\phib)\| < \sqrt{5} \varepsilon.

Lean code for Lemma3.7●1 theorem
  • theoremdefined in Noperthedron/Bounding.lean
    complete
    theorem Bounding.norm_RM_sub_RM_le {ε θ θ_ φ φ_ α α_ : ℝ} (hε : 0 < ε)
      (hθ : |θ - θ_| ≤ ε) (hφ : |φ - φ_| ≤ ε) (hα : |α - α_| ≤ ε) :
      ‖rotprojRM θ φ α - rotprojRM θ_ φ_ α_‖ < √5 * ε
    theorem Bounding.norm_RM_sub_RM_le
      {ε θ θ_ φ φ_ α α_ : ℝ} (hε : 0 < ε)
      (hθ : |θ - θ_| ≤ ε) (hφ : |φ - φ_| ≤ ε)
      (hα : |α - α_| ≤ ε) :
      ‖rotprojRM θ φ α - rotprojRM θ_ φ_ α_‖ <
        √5 * ε
    [SY25] Lemma 16
    
Proof for Lemma 3.7

Write R_z and R_y for rotations about the third and second axes. After dropping the norm-one projection and canceling common rotations, it suffices to bound \|R_z(\alpha-\alphab)R_y(\phi)-R_y(\phib)R_z(\theta-\thetab)\|. Insert the ordinary midpoint \Phi=(\phi+\phib)/2. On each side, the two angle changes are bounded by \varepsilon and \varepsilon/2. Lemma 3.3, applied after canceling common rotations, bounds each difference strictly by \sqrt{\varepsilon^2+(\varepsilon/2)^2}=\sqrt{5}\varepsilon/2. If both angle changes vanish, strictness follows from \varepsilon>0; otherwise it follows from the strictness condition in that lemma. The triangle inequality gives the result. The weighted intermediate angle used in polyhedron.without.rupert, Lemma 16, is not needed for this uniform bound.

Lean code for code:lem:sqrt5theorem bp_norm_RM_sub_RM_le {ε θ θ_ φ φ_ α α_ : ℝ} (hε : 0 < ε) (hθ : |θ - θ_| ≤ ε) (hφ : |φ - φ_| ≤ ε) (hα : |α - α_| ≤ ε) : ‖rotprojRM θ φ α - rotprojRM θ_ φ_ α_‖ < √5 * ε := ε:ℝθ:ℝθ_:ℝφ:ℝφ_:ℝα:ℝα_:ℝhε:0 < εhθ:|θ - θ_| ≤ εhφ:|φ - φ_| ≤ εhα:|α - α_| ≤ ε⊢ ‖rotprojRM θ φ α - rotprojRM θ_ φ_ α_‖ < √5 * ε All goals completed! 🐙