Rupert Counterexample

3. Bounding Rotations🔗

Lemma3.1
groupuses 0
Used by 2
Reverse dependency previews
Preview
Corollary 7.6
Loading preview
Reverse dependency preview content is loaded from the rendered-fragment cache.
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.18 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 codetheorem 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 0L∃∀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.24 theorems
  • complete
    theorem Bounding.norm_rotR_sub_rotR_lt {ε α α_ : } ( : 0 < ε)
      ( : |α - α_|  ε) : rotR α - rotR α_ < ε
    theorem Bounding.norm_rotR_sub_rotR_lt
      {ε α α_ : } ( : 0 < ε)
      ( : |α - α_|  ε) :
      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 codetheorem bp_norm_rotR_sub_rotR_lt {ε α α_ : } ( : 0 < ε) ( : |α - α_| ε) : rotR α - rotR α_ < ε := ε:α:α_::0 < ε:|α - α_| ε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 equality only for \alpha = \beta = 0.

Lean code for Lemma3.32 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_equality_iff {d d' : Fin 3} {α β : }
      (d_ne_d' : d  d') :
      (rot3 d) α ∘SL (rot3 d') β - 1 = (α ^ 2 + β ^ 2)  α = 0  β = 0
    theorem Bounding.lemma12_equality_iff
      {d d' : Fin 3} {α β : }
      (d_ne_d' : d  d') :
      (rot3 d) α ∘SL (rot3 d') β - 1 =
          (α ^ 2 + β ^ 2) 
        α = 0  β = 0
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 codetheorem 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_equality_iff {d d' : Fin 3} {α β : } (hd : d d') : rot3 d α ∘L rot3 d' β - 1 = (α ^ 2 + β ^ 2) (α = 0 β = 0) := d:Fin 3d':Fin 3α:β:hd:d d'(rot3 d) α ∘SL (rot3 d') β - 1 = (α ^ 2 + β ^ 2) α = 0 β = 0 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 6
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.42 theorems
  • theoremdefined in Noperthedron/Bounding.lean
    complete
    theorem Bounding.norm_M_sub_lt {ε θ θ_ φ φ_ : } ( : 0 < ε)
      ( : |θ - θ_|  ε) ( : |φ - φ_|  ε) :
      rotM θ φ - rotM θ_ φ_ < 2 * ε
    theorem Bounding.norm_M_sub_lt {ε θ θ_ φ φ_ : }
      ( : 0 < ε) ( : |θ - θ_|  ε)
      ( : |φ - φ_|  ε) :
      rotM θ φ - rotM θ_ φ_ < 2 * ε
    First half of [SY25] Lemma 13.
    
  • theoremdefined in Noperthedron/Bounding.lean
    complete
    theorem Bounding.norm_X_sub_lt {ε θ θ_ φ φ_ : } ( : 0 < ε)
      ( : |θ - θ_|  ε) ( : |φ - φ_|  ε) :
      vecX θ φ - vecX θ_ φ_ < 2 * ε
    theorem Bounding.norm_X_sub_lt {ε θ θ_ φ φ_ : }
      ( : 0 < ε) ( : |θ - θ_|  ε)
      ( : |φ - φ_|  ε) :
      vecX θ φ - vecX θ_ φ_ < 2 * ε
    Second half of [SY25] Lemma 13.
    
Proof for Lemma 3.4

See polyhedron.without.rupert, Lemma 13.

Lean codetheorem bp_RyL_neg_compose_RyL (α : ) : RyL (-α) ∘L RyL α = ContinuousLinearMap.id _ _ := α:RyL (-α) ∘SL RyL α = ContinuousLinearMap.id Euc(3) All goals completed! 🐙 theorem bp_RzL_neg_compose_RzL (α : ) : RzL (-α) ∘L RzL α = ContinuousLinearMap.id _ _ := α:RzL (-α) ∘SL RzL α = ContinuousLinearMap.id Euc(3) All goals completed! 🐙 theorem bp_norm_M_sub_lt {ε θ θ_ φ φ_ : } ( : 0 < ε) ( : |θ - θ_| ε) ( : |φ - φ_| ε) : rotM θ φ - rotM θ_ φ_ < 2 * ε := ε:θ:θ_:φ:φ_::0 < ε:|θ - θ_| ε:|φ - φ_| εrotM θ φ - rotM θ_ φ_ < 2 * ε All goals completed! 🐙 theorem bp_norm_X_sub_lt {ε θ θ_ φ φ_ : } ( : 0 < ε) ( : |θ - θ_| ε) ( : |φ - φ_| ε) : vecX θ φ - vecX θ_ φ_ < 2 * ε := ε:θ:θ_:φ:φ_::0 < ε:|θ - θ_| ε:|φ - φ_| ε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 1L∃∀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.51 theorem
  • theoremdefined in Noperthedron/Bounding.lean
    complete
    theorem Bounding.XPgt0 {P : Euc(3)} {ε θ θ_ φ φ_ : } (hP : P  1)
      ( : 0 < ε) ( : |θ - θ_|  ε) ( : |φ - φ_|  ε)
      (hX : 2 * ε < vecX θ_ φ_, P) : 0 < vecX θ φ, P
    theorem Bounding.XPgt0 {P : Euc(3)}
      {ε θ θ_ φ φ_ : } (hP : P  1)
      ( : 0 < ε) ( : |θ - θ_|  ε)
      ( : |φ - φ_|  ε)
      (hX : 2 * ε < vecX θ_ φ_, P) :
      0 < vecX θ φ, P
    [SY25] Lemma 14
    
Proof for Lemma 3.5

See polyhedron.without.rupert, Lemma 14.

Lean codetheorem bp_XPgt0 {P : ℝ³} {ε θ θ_ φ φ_ : } (hP : P 1) ( : 0 < ε) ( : |θ - θ_| ε) ( : |φ - φ_| ε) (hX : 2 * ε < vecX θ_ φ_, P) : 0 < vecX θ φ, P := P:Euc(3)ε:θ:θ_:φ:φ_:hP:P 1:0 < ε:|θ - θ_| ε:|φ - φ_| εhX:2 * ε < vecX θ_ φ_, P0 < 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 1L∃∀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.61 theorem
  • theoremdefined in Noperthedron/Bounding.lean
    complete
    theorem Bounding.norm_M_apply_gt {ε r θ θ_ φ φ_ : } {P : Euc(3)} (hP : P  1)
      ( : 0 < ε) ( : |θ - θ_|  ε) ( : |φ - φ_|  ε)
      (hM : r + 2 * ε < (rotM θ_ φ_) P) : r < (rotM θ φ) P
    theorem Bounding.norm_M_apply_gt
      {ε r θ θ_ φ φ_ : } {P : Euc(3)}
      (hP : P  1) ( : 0 < ε)
      ( : |θ - θ_|  ε) ( : |φ - φ_|  ε)
      (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 codetheorem bp_norm_M_apply_gt {ε r θ θ_ φ φ_ : } {P : ℝ³} (hP : P 1) ( : 0 < ε) ( : |θ - θ_| ε) ( : |φ - φ_| ε) (hM : r + 2 * ε < rotM θ_ φ_ P) : r < rotM θ φ P := ε:r:θ:θ_:φ:φ_:P:Euc(3)hP:P 1:0 < ε:|θ - θ_| ε:|φ - φ_| εhM:r + 2 * ε < (rotM θ_ φ_) Pr < (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 1L∃∀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.71 theorem
  • theoremdefined in Noperthedron/Bounding.lean
    complete
    theorem Bounding.norm_RM_sub_RM_le {ε θ θ_ φ φ_ α α_ : } ( : 0 < ε)
      ( : |θ - θ_|  ε) ( : |φ - φ_|  ε) ( : |α - α_|  ε) :
      rotprojRM θ φ α - rotprojRM θ_ φ_ α_ < 5 * ε
    theorem Bounding.norm_RM_sub_RM_le
      {ε θ θ_ φ φ_ α α_ : } ( : 0 < ε)
      ( : |θ - θ_|  ε) ( : |φ - φ_|  ε)
      ( : |α - α_|  ε) :
      rotprojRM θ φ α - rotprojRM θ_ φ_ α_ <
        5 * ε
    [SY25] Lemma 16
    
Proof for Lemma 3.7
Proof uses 2
Proof dependency previews
Preview
Lemma 3.3
Loading preview
Proof dependency preview content is loaded from the rendered-fragment cache.

See polyhedron.without.rupert, Lemma 16.

Lean codetheorem bp_RyL_neg_compose_RyL' (α : ) : RyL (-α) ∘L RyL α = ContinuousLinearMap.id _ _ := α:RyL (-α) ∘SL RyL α = ContinuousLinearMap.id Euc(3) All goals completed! 🐙 theorem bp_RzL_neg_compose_RzL' (α : ) : RzL (-α) ∘L RzL α = ContinuousLinearMap.id _ _ := α:RzL (-α) ∘SL RzL α = ContinuousLinearMap.id Euc(3) All goals completed! 🐙 theorem bp_norm_RM_sub_RM_le {ε θ θ_ φ φ_ α α_ : } ( : 0 < ε) ( : |θ - θ_| ε) ( : |φ - φ_| ε) ( : |α - α_| ε) : rotprojRM θ φ α - rotprojRM θ_ φ_ α_ < 5 * ε := ε:θ:θ_:φ:φ_:α:α_::0 < ε:|θ - θ_| ε:|φ - φ_| ε:|α - α_| εrotprojRM θ φ α - rotprojRM θ_ φ_ α_ < 5 * ε All goals completed! 🐙