1- {-# OPTIONS --safe #-}
21module Cubical.HITs.CauchyReals.Closeness where
32
43open import Cubical.Foundations.Prelude hiding (Path)
@@ -11,17 +10,15 @@ open import Cubical.Functions.FunExtEquiv
1110import Cubical.Functions.Logic as L
1211
1312open import Cubical.Data.Sigma hiding (Path)
14- open import Cubical.Data.Rationals as ℚ
15- open import Cubical.Data.Rationals.Order as ℚ
16- open import Cubical.Data.Rationals.Order.Properties as ℚ
13+ open import Cubical.Data.Rationals.Fast as ℚ
14+ open import Cubical.Data.Rationals.Fast. Order as ℚ
15+ open import Cubical.Data.Rationals.Fast. Order.Properties as ℚ
1716open import Cubical.Relation.Binary.Properties
1817
1918open import Cubical.HITs.PropositionalTruncation as PT
2019
2120open import Cubical.HITs.CauchyReals.Base
22- open import Cubical.HITs.CauchyReals.Lems
23-
24-
21+ open import Cubical.Tactics.CommRingSolver.FastRationalsReflection
2522
2623-- HoTT Lemma (11.3.8)
2724refl∼ : ∀ r ε → r ∼[ ε ] r
@@ -148,12 +145,16 @@ w-rel'⇒ : ∀ x y → (∀ ε → w-rel' x y ε) → ∀ ε
148145w-rel'⇒ x y x₁ ε x₂ =
149146 let z = fst (snd x ε) x₂
150147 z' = PT.map (λ (δ , xx) →
151- /2₊ δ , PT.map
148+ let w : ∀ /2₊δ → (/2₊δ) +
149+ (fst ε - (/2₊δ + /2₊δ))
150+ ≡ (fst ε - (/2₊δ))
151+ w /2₊δ = ℚ!
152+ in /2₊ δ , PT.map
152153 (λ (xxx , xxx') →
153154 substΣ< y
154155 (cong (λ zz → fst (/2₊ δ) ℚ.+ (fst ε ℚ.- zz))
155156 (sym (ε/2+ε/2≡ε (fst δ))) ∙
156- lem --08 { fst (/2₊ δ)} {fst ε} )
157+ w ( fst (/2₊ δ)) )
157158 (_ , (fst (x₁ (/2₊ δ) _) xxx')))
158159 xx) z
159160 in snd (snd y ε)
@@ -239,8 +240,7 @@ l-l 𝕒 .snd ε .fst =
239240 PT.map (map-snd (λ {q'} → PT.map
240241 (λ (x , x') → strength-lem-01 ε (δ ℚ₊+ η) q' x , ∣ (δ , η) ,
241242 subst (Σ< (fst ∘ (fst (𝕒 δ η))))
242- (+AssocCommR (fst ε) (ℚ.- (fst δ ℚ.+ fst η))
243- (ℚ.- fst q'))
243+ ℚ!
244244 (x , x')
245245 ∣₁ )))
246246 (fst (snd (𝕒 δ η) _) y))
@@ -252,16 +252,15 @@ l-l 𝕒 .snd ε .snd =
252252 λ {(δ , η)} (x , x') → strength-lem-01 ε q' (δ ℚ₊+ η) x ,
253253 (snd (snd (𝕒 δ η) _) ∣ q' , ∣
254254 subst (Σ< (fst ∘ (fst (𝕒 δ η))))
255- (sym ((+AssocCommR (fst ε) (ℚ.- (fst δ ℚ.+ fst η))
256- (ℚ.- fst q'))))
255+ ℚ!
257256 (x , x') ∣₁ ∣₁) )))
258257
259258rel-r-r : ∀ 𝕢 → (q r : ℚ) (ε : Σ ℚ 0<_) →
260259 (ℚ.- fst ε) ℚ.< (q ℚ.- r) →
261260 (q ℚ.- r) ℚ.< fst ε → w-rel' (r-r 𝕢 q) (r-r 𝕢 r) ε
262261rel-r-r 𝕢 q r ε x x₁ η =
263262 let z : (((q ℚ.- r) ℚ.+ (𝕢 ℚ.- q)) ≡ (𝕢 ℚ.- r))
264- z = lem --09 {q} {r} {𝕢}
263+ z = ℚ!
265264 in (λ (u , v) →
266265 subst2 ℚ._<_
267266 (sym $ ℚ.-Distr (fst ε) (fst η))
@@ -278,15 +277,15 @@ rel-r-r 𝕢 q r ε x x₁ η =
278277 (ℚ.minus-< (q ℚ.- r) (fst ε) x₁) u
279278
280279 in subst2 ℚ._<_ (sym $ ℚ.-Distr (fst ε) (fst η) )
281- (lem --010 {q} {r} {𝕢}) zz
280+ ℚ! zz
282281 ,
283282 let zz = ℚ.<Monotone+
284283 (ℚ.- (q ℚ.- r)) (ℚ.- (ℚ.- (fst ε))) (𝕢 ℚ.- r)
285284 (fst η) (minus-< (ℚ.- (fst ε)) (q ℚ.- r) x) v
286285 in subst2 {x = (ℚ.- (q ℚ.- r)) ℚ.+ (𝕢 ℚ.- r)} {𝕢 ℚ.- q}
287286 {z = (ℚ.- (ℚ.- fst ε)) ℚ.+ fst η} {fst (ε ℚ₊+ η)}
288287 ℚ._<_
289- (lem --010 {q} {r} {𝕢}) (lem--012 {fst ε} {fst η}) zz)
288+ ℚ! ℚ! zz)
290289
291290rel-r-l : ∀ 𝕢 → (q : ℚ) (y : ℚ₊ → Σ (ℚ₊ → hProp ℓ-zero) w-prop')
292291 (ε : ℚ₊) (p : (δ ε₁ : ℚ₊) → w-rel' (y δ) (y ε₁) (δ ℚ₊+ ε₁))
@@ -297,9 +296,9 @@ rel-r-l 𝕢 q y ε p δ v₁ x η .fst xx' =
297296 let z = fst (x η) xx'
298297 in ∣ δ , (subst {x = fst η ℚ.+ (fst ε ℚ.- fst δ)}
299298 {y = (fst (ε ℚ₊+ η) ℚ.- fst δ)} 0<_
300- (lem --013 {fst η} {fst ε} {fst δ})
299+ ℚ!
301300 (+0< (fst η) (fst ε ℚ.- fst δ) (snd η) v₁) ,
302- subst (fst ∘ fst (y δ)) (ℚ₊≡ (lem --014 {fst ε} {fst δ} {fst η}) ) z ) ∣₁
301+ subst (fst ∘ fst (y δ)) (ℚ₊≡ ℚ! ) z ) ∣₁
303302
304303rel-r-l 𝕢 q y ε p δ v₁ x η .snd =
305304 PT.rec (snd (rat-rat' 𝕢 (ε ℚ₊+ η) q))
@@ -311,7 +310,7 @@ rel-r-l 𝕢 q y ε p δ v₁ x η .snd =
311310 ((σ* ℚ₊+ δ) ℚ₊+ ((fst η ℚ.- fst σ*) , xx)))}
312311 {(ε ℚ₊+ η)}
313312 (λ xxx → ⟨ rat-rat' 𝕢 xxx q ⟩)
314- (ℚ₊≡ (lem --015 {fst ε} {fst δ} {fst σ*} {fst η}) ) z'
313+ (ℚ₊≡ ℚ! ) z'
315314
316315rel-l-l' : (x y : ℚ₊ → Σ (ℚ₊ → hProp ℓ-zero) w-prop') (ε δ η : ℚ₊)
317316 (p : (δ₁ ε₁ : ℚ₊) → w-rel' (x δ₁) (x ε₁) (δ₁ ℚ₊+ ε₁))
@@ -325,12 +324,13 @@ rel-l-l' x y ε δ η p p' v₁ η' x₁ =
325324 let zz = fst (p a δ _) xx'
326325 zz' = x₁ _ zz
327326 in η ,
328- subst (ℚ.0<_)
329- (lem-02 (fst ε) (fst δ) (fst η) (fst η'))
330- (+0< (fst ε ℚ.- (fst δ ℚ.+ fst η))
331- (fst (δ ℚ₊+ η')) v₁ (snd (δ ℚ₊+ η')))
327+ subst {x = ((fst ε - (fst δ + fst η)) + fst (δ ℚ₊+ η'))}
328+ {y = (fst (ε ℚ₊+ η') - fst η)} (ℚ.0<_)
329+ ℚ!
330+ ((+0< (fst ε ℚ.- (fst δ ℚ.+ fst η))
331+ (fst (δ ℚ₊+ η')) v₁ (snd (δ ℚ₊+ η'))))
332332 , (subst (fst ∘ y η .fst)
333- (ℚ₊≡ (lem-01 (fst ε) (fst δ) (fst η) (fst η') (fst a)) ) zz'))
333+ (ℚ₊≡ ℚ! ) zz'))
334334
335335
336336
@@ -433,10 +433,9 @@ rel-l-l-l {𝕒} x y ε δ η p p' v₁ r η₁ .fst =
433433 (fst δ ℚ.+ fst η*)
434434 (fst (ε ℚ₊+ η₁) ℚ.- (fst δ* ℚ.+ fst η))
435435 xx v₁ (snd (δ ℚ₊+ η*))
436- (lem --016 {fst η₁} {fst δ*} {fst η*} {fst ε} {fst δ}) ,
436+ ℚ! ,
437437 subst (λ xx → ⟨ 𝕒 δ* .fst xx (y η)⟩)
438- (ℚ₊≡ (lem-03 (fst ε) (fst η₁)
439- (fst δ) (fst η) (fst δ*) (fst η*)))
438+ (ℚ₊≡ ℚ!)
440439 z')
441440rel-l-l-l {𝕒} x y ε δ η p p' v₁ r η₁ .snd =
442441 PT.map λ ((δ* , η*) , (xx , xx')) →
@@ -448,12 +447,10 @@ rel-l-l-l {𝕒} x y ε δ η p p' v₁ r η₁ .snd =
448447 (fst ε ℚ.- (fst δ ℚ.+ fst η))
449448 (fst η ℚ.+ fst η*)
450449 (fst (ε ℚ₊+ η₁) ℚ.- (fst δ* ℚ.+ fst δ))
451- xx v₁ (snd (η ℚ₊+ η*))
452- (lem--017 {fst η₁} {fst δ*} {fst η*} {fst ε} {fst δ}) ,
450+ xx v₁ (snd (η ℚ₊+ η*)) ℚ! ,
453451 (
454452 subst (λ xx → ⟨ 𝕒 δ* .fst xx (x δ)⟩)
455- (ℚ₊≡ (lem-04 (fst ε) (fst η₁)
456- (fst δ) (fst η) (fst δ*) (fst η*)))
453+ (ℚ₊≡ ℚ!)
457454 z') )
458455module ∼' where
459456
@@ -513,27 +510,23 @@ module ∼' where
513510 PT.map
514511 λ ((δ* , η*) , (xx , xx')) →
515512 let z = snd (snd (𝕒 _)) _ _ _ _ r xx'
516- in ((δ* , η*) , δ) , substΣ<' (𝕒 (δ* , η*)) _
517- (lem--018 {fst ε} {fst δ} {fst η} {δ*} ) (_ , z)
513+ in ((δ* , η*) , δ) , substΣ<' (𝕒 (δ* , η*)) _ ℚ! (_ , z)
518514 w'' 𝕒 𝕡 .Casesℝ.rat-lim-B q y ε δ p v₁ r v' u' x η .snd =
519515 PT.map
520516 λ ((δ* , η*) , (xx , xx')) →
521517 let z = snd (snd (𝕒 _)) _ _ _ _ (p _ _) xx'
522518 z' = snd (snd (𝕒 _)) _ _ _ _ (sym∼ _ _ _ r) z
523- in δ* , substΣ<' (𝕒 δ*) _
524- (lem--019 {fst ε} {fst δ} {fst η*} {fst η} {fst δ*} ) (_ , z')
519+ in δ* , substΣ<' (𝕒 δ*) _ ℚ! (_ , z')
525520 w'' 𝕒 𝕡 .Casesℝ.lim-rat-B x r ε δ p v₁ u v' u' x₁ η .fst =
526521 PT.map λ ((δ* , η*) , (xx , xx')) →
527522 let z = snd (snd (𝕒 _)) _ _ _ _ (p _ _) xx'
528523 z' = snd (snd (𝕒 _)) _ _ _ _ u z
529- in δ* , substΣ<' (𝕒 δ*) _
530- (lem--020 {fst ε} {fst δ} {fst η*} {fst η} {fst δ*}) (_ , z')
524+ in δ* , substΣ<' (𝕒 δ*) _ ℚ! (_ , z')
531525 w'' 𝕒 𝕡 .Casesℝ.lim-rat-B x r ε δ p v₁ u v' u' x₁ η .snd =
532526 PT.map
533527 λ ((δ* , η*) , (xx , xx')) →
534528 let z = snd (snd (𝕒 _)) _ _ _ _ (sym∼ _ _ _ u) xx'
535- in ((δ* , η*) , δ) , substΣ<' (𝕒 (δ* , η*)) _
536- ((lem--021 {fst ε} {fst δ} {fst η} {δ*})) (_ , z)
529+ in ((δ* , η*) , δ) , substΣ<' (𝕒 (δ* , η*)) _ ℚ! (_ , z)
537530 w'' 𝕒 𝕡 .Casesℝ.lim-lim-B = rel-l-l-l {𝕒}
538531 w'' 𝕒 𝕡 .Casesℝ.isPropB a a' ε =
539532 isPropΠ λ x →
@@ -588,7 +581,7 @@ module ∼' where
588581 www : Elimℝ-Prop _
589582 www .Elimℝ-Prop.ratA x* η .fst xx =
590583 let zz = fst (x (rat x*) η) xx
591- in ∣ δ , substΣ<' (y δ) _ (lem --022 {fst ε} {fst δ} {fst η}) (_ , zz) ∣₁
584+ in ∣ δ , substΣ<' (y δ) _ ℚ! (_ , zz) ∣₁
592585
593586 www .Elimℝ-Prop.ratA x* η .snd =
594587 PT.rec (snd (fst (Recℝ.go (w' q) (rat x*)) (ε ℚ₊+ η)))
@@ -598,20 +591,18 @@ module ∼' where
598591 in subst {x = (((fst ε ℚ.- fst δ) , v₁) ℚ₊+
599592 ((δ ℚ₊+ δ*) ℚ₊+ ((fst η ℚ.- fst δ*) , xx)))}
600593 {y = (ε ℚ₊+ η)} (fst ∘ fst (Recℝ.go (w' q) (rat x*)))
601- (ℚ₊≡ (lem --023 {fst ε} {fst δ} {fst δ*} {fst η}) ) zz'
594+ (ℚ₊≡ ℚ! ) zz'
602595
603596 www .Elimℝ-Prop.limA x* p* x₁* η* .fst =
604597 PT.map λ (δ* , (xx , xx')) →
605598 let z = fst (x (x* δ*) (_ , xx)) xx'
606599
607- in (δ , δ*) , substΣ<' (y δ) _
608- (lem--024 {fst ε} {fst δ} {fst η*} {fst δ*}) (_ , z)
600+ in (δ , δ*) , substΣ<' (y δ) _ ℚ! (_ , z)
609601 www .Elimℝ-Prop.limA x'' pp'' x₁'' η'' .snd =
610602 PT.map λ ((δ* , η*) , (xx , xx')) →
611603 let z = fst (p _ _ _ _) xx'
612604 z' = snd (x (x'' η*) _) z
613- in η* , substΣ< (Elimℝ.go (Recℝ.d (w' q)) (x'' η*))
614- (lem--025 {fst ε} {fst δ} {fst δ*} {fst η''}) (_ , z')
605+ in η* , substΣ< (Elimℝ.go (Recℝ.d (w' q)) (x'' η*)) ℚ! (_ , z')
615606
616607 www .Elimℝ-Prop.isPropA = isPropHlp
617608 (λ x η → fst (Casesℝ.go (w'' y p) x) (ε ℚ₊+ η))
@@ -630,23 +621,21 @@ module ∼' where
630621 ((δ ℚ₊+ δ*) ℚ₊+ ((fst η' ℚ.- fst δ*) , xx)))}
631622 {(ε ℚ₊+ η')}
632623 (fst ∘ (fst (Recℝ.go (w' r) (rat x'))))
633- (ℚ₊≡ $ lem --026 {fst ε} {fst δ} {fst δ*} {fst η'} ) zz'
624+ (ℚ₊≡ $ ℚ! ) zz'
634625 www .Elimℝ-Prop.ratA x' η' .snd xx =
635626 let zz = snd (x₁ (rat x') η') xx
636- in ∣ δ , substΣ<' (x δ) _ (lem --027 {fst ε} {fst δ} {fst η'}) (_ , zz) ∣₁
627+ in ∣ δ , substΣ<' (x δ) _ ℚ! (_ , zz) ∣₁
637628
638629 www .Elimℝ-Prop.limA x' p' x₁' η' .fst =
639630 PT.map λ ((δ* , η*) , (xx , xx')) →
640631 let z = fst (p _ _ _ _) xx'
641632 z' = fst (x₁ (x' η*) _) z
642- in η* , substΣ< (Recℝ.go (w' r) (x' η*))
643- ((lem--028 {fst ε} {fst δ} {fst δ*} {fst η'} {fst η*})) (_ , z')
633+ in η* , substΣ< (Recℝ.go (w' r) (x' η*)) ℚ! (_ , z')
644634 www .Elimℝ-Prop.limA x' p' x₁' η' .snd =
645635 PT.map λ (δ* , (xx , xx')) →
646636 let z = snd (x₁ (x' δ*) ((fst η' ℚ.- fst δ*) , xx)) xx'
647637
648- in (δ , δ*) , substΣ<' (x δ) _
649- (lem--029 {fst ε} {fst δ} {fst η'} {fst δ*}) (_ , z)
638+ in (δ , δ*) , substΣ<' (x δ) _ ℚ! (_ , z)
650639 www .Elimℝ-Prop.isPropA = isPropHlp
651640 (λ x η → fst (Recℝ.go (w' r) x) (ε ℚ₊+ η))
652641 λ x₂ η → fst (Casesℝ.go (w'' x p) x₂) (ε ℚ₊+ η)
@@ -658,14 +647,12 @@ module ∼' where
658647 PT.map λ ((δ* , η*) , (xx , xx')) →
659648 let z = fst ((p _ _) _ _) xx'
660649 z' = fst (x₁ _ _) z
661- in η , substΣ<' (y η) _
662- (lem--030 {fst ε} {fst δ} {fst η} {δ*} {fst η'}) (_ , z')
650+ in η , substΣ<' (y η) _ ℚ! (_ , z')
663651 www .Elimℝ-Prop.ratA x* η' .snd =
664652 PT.map λ ((δ* , η*) , (xx , xx')) →
665653 let z = fst ((p' _ _) _ _) xx'
666654 z' = snd (x₁ _ _) z
667- in δ , substΣ<' (x δ) _
668- (lem--031 {fst ε} {fst δ} {fst η} {δ*} {fst η'} ) (_ , z')
655+ in δ , substΣ<' (x δ) _ ℚ! (_ , z')
669656 www .Elimℝ-Prop.limA x* p* x₁' η₁ .fst =
670657 PT.map λ ((δ* , η*) , (xx , xx')) →
671658 let z = (fst (p δ* δ (x* η*) _)) xx'
@@ -676,15 +663,12 @@ module ∼' where
676663 (x* η*))
677664 z' = fst (x₁ _ _) z
678665 in (η , η*) ,
679- substΣ<' (y η) _
680- (lem--032 {fst ε} {fst δ} {fst η} {fst δ*} {fst η₁} {fst η*})
681- (_ , z')
666+ substΣ<' (y η) _ ℚ! (_ , z')
682667 www .Elimℝ-Prop.limA x* p x₁' η₁ .snd =
683668 PT.map λ ((δ* , η*) , (xx , xx')) →
684669 let z = (fst (p' _ _ _ _)) xx'
685670 z' = snd (x₁ _ _) z
686- in (δ , η*) , substΣ<' (x δ) _
687- (lem--033 {fst ε} {fst δ} {fst η} {fst δ*} {fst η₁} {fst η*}) (_ , z')
671+ in (δ , η*) , substΣ<' (x δ) _ ℚ! (_ , z')
688672
689673 www .Elimℝ-Prop.isPropA = isPropHlp
690674 (λ x₂ η₂ → fst (Casesℝ.go (w'' y p') x₂) (ε ℚ₊+ η₂))
@@ -783,8 +767,6 @@ sym∼' : ∀ r r' ε → r ∼'[ ε ] r' → r' ∼'[ ε ] r
783767sym∼' r r' ε =
784768 ∼→∼' r' r ε ∘S sym∼ r r' ε ∘S ∼'→∼ r r' ε
785769
786-
787-
788770-- (11.3.22)
789771triangle∼'' : ∀ u v w ε η
790772 → u ∼'[ ε ] v
0 commit comments