Built with Alectryon, running Coq+SerAPI v8.19.0+0.19.3. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓ to navigate, Ctrl+🖱️ to focus. On Mac, use ⌘ instead of Ctrl.
[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done]
Import NatPair.Instances.Import Quoting.Instances.Generalizable VariablesA B.Local Set Universe Minimization ToSet.ClassCloseness@{i} (A : Type@{i}) := close : Q+ -> Relation@{i i} A.InstanceQ_close@{} : Closeness Q := funeqr => - ' e < q - r < ' e.ClassSeparatedA `{Closeness A}
:= separated : forallxy, (foralle, close e x y) -> x = y :> A.ClassTriangularA `{Closeness A}
:= triangular : foralluvwed, close e u v -> close d v w ->
close (e+d) u w.ClassRounded@{i j} (A:Type@{i}) `{Closeness A}
:= rounded : foralleuv, iff@{i j j} (close e u v)
(merely@{j} (sig@{UQ j} (fund => sig@{UQ j} (fund' =>
e = d + d' /\ close d u v)))).ClassPreMetric@{i j} (A:Type@{i}) {Aclose : Closeness A} :=
{ premetric_prop :: foralle, is_mere_relation A (close e)
; premetric_refl :: foralle, Reflexive (close (A:=A) e)
; premetric_symm :: foralle, Symmetric (close (A:=A) e)
; premetric_separated :: Separated A
; premetric_triangular :: Triangular A
; premetric_rounded :: Rounded@{i j} A }.
H: Funext A: Type Aclose: Closeness A H0: PreMetric A
IsHSet A
H: Funext A: Type Aclose: Closeness A H0: PreMetric A
IsHSet A
H: Funext A: Type Aclose: Closeness A H0: PreMetric A
Reflexive (funxy : A => foralle : Q+, close e x y)
H: Funext A: Type Aclose: Closeness A H0: PreMetric A
forallxy : A, IsHProp (foralle : Q+, close e x y)
H: Funext A: Type Aclose: Closeness A H0: PreMetric A
forallxy : A, (foralle : Q+, close e x y) -> x = y
H: Funext A: Type Aclose: Closeness A H0: PreMetric A
Reflexive (funxy : A => foralle : Q+, close e x y)
intros x;reflexivity.
H: Funext A: Type Aclose: Closeness A H0: PreMetric A
forallxy : A, IsHProp (foralle : Q+, close e x y)
apply _.
H: Funext A: Type Aclose: Closeness A H0: PreMetric A
forallxy : A, (foralle : Q+, close e x y) -> x = y
funext: Funext univalence: Univalence A: Type H: Closeness A H0: Rounded A
forall (dd' : Q+) (uv : A),
close d u v -> close (d + d') u v
funext: Funext univalence: Univalence A: Type H: Closeness A H0: Rounded A
forall (dd' : Q+) (uv : A),
close d u v -> close (d + d') u v
funext: Funext univalence: Univalence A: Type H: Closeness A H0: Rounded A d, d': Q+ u, v: A xi: close d u v
merely
{d0 : Q+ &
{d'0 : Q+ &
((plus d d' = plus d0 d'0) * close d0 u v)%type}}
apply tr;existsd,d';auto.Qed.
funext: Funext univalence: Univalence A: Type H: Closeness A H0: Rounded A
forall (e : Q+) (uv : A),
close e u v -> foralld : Q+, ' e ≤ ' d -> close d u v
funext: Funext univalence: Univalence A: Type H: Closeness A H0: Rounded A
forall (e : Q+) (uv : A),
close e u v -> foralld : Q+, ' e ≤ ' d -> close d u v
funext: Funext univalence: Univalence A: Type H: Closeness A H0: Rounded A e: Q+ u, v: A xi: close e u v d: Q+ E: ' e ≤ ' d
close d u v
funext: Funext univalence: Univalence A: Type H: Closeness A H0: Rounded A e: Q+ u, v: A xi: close e u v d: Q+ E: ((' e = ' d) + (' e < ' d))%type
close d u v
funext: Funext univalence: Univalence A: Type H: Closeness A H0: Rounded A e: Q+ u, v: A xi: close e u v d: Q+ E: ' e = ' d
close d u v
funext: Funext univalence: Univalence A: Type H: Closeness A H0: Rounded A e: Q+ u, v: A xi: close e u v d: Q+ E: ' e < ' d
close d u v
funext: Funext univalence: Univalence A: Type H: Closeness A H0: Rounded A e: Q+ u, v: A xi: close e u v d: Q+ E: ' e = ' d
close d u v
funext: Funext univalence: Univalence A: Type H: Closeness A H0: Rounded A e: Q+ u, v: A xi: close e u v d: Q+ E: e = d
close d u v
rewrite <-E;trivial.
funext: Funext univalence: Univalence A: Type H: Closeness A H0: Rounded A e: Q+ u, v: A xi: close e u v d: Q+ E: ' e < ' d
close d u v
funext: Funext univalence: Univalence A: Type H: Closeness A H0: Rounded A e: Q+ u, v: A xi: close e u v d: Q+ E: ' e < ' d E': d = e + Qpos_diff (' e) (' d) E
close d u v
funext: Funext univalence: Univalence A: Type H: Closeness A H0: Rounded A e: Q+ u, v: A xi: close e u v d: Q+ E: ' e < ' d E': d = e + Qpos_diff (' e) (' d) E
close (e + Qpos_diff (' e) (' d) E) u v
funext: Funext univalence: Univalence A: Type H: Closeness A H0: Rounded A e: Q+ u, v: A xi: close e u v d: Q+ E: ' e < ' d E': d = e + Qpos_diff (' e) (' d) E
close e u v
trivial.Qed.(* Coq pre 8.8 produces phantom universes, see coq/coq#6483 **)Definitionrounded_le@{i j} := ltac:(first [exact @rounded_le'@{j i Ularge}|
exact @rounded_le'@{j i Ularge j}|
exact @rounded_le'@{i j}]).Arguments rounded_le {A _ _} e u v _ d _.Sectionclose_prod.UniverseUA UB i.Context (A:Type@{UA}) (B:Type@{UB}) `{Closeness A} `{Closeness B}
`{foralle, is_mere_relation A (close e)}
`{foralle, is_mere_relation B (close e)}.#[export] Instanceclose_prod@{} : Closeness@{i} (A /\ B)
:= funexy => close e (fst x) (fst y) /\ close e (snd x) (snd y).
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) H3, H4: foralle : Q+, Reflexive (close e)
foralle : Q+, Reflexive (close e)
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) H3, H4: foralle : Q+, Reflexive (close e)
foralle : Q+, Reflexive (close e)
intros e;split;reflexivity.Qed.
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) H3, H4: foralle : Q+, Symmetric (close e)
foralle : Q+, Symmetric (close e)
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) H3, H4: foralle : Q+, Symmetric (close e)
foralle : Q+, Symmetric (close e)
intros e u v xi;split;symmetry;apply xi.Qed.
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Separated0: Separated A Separated1: Separated B
Separated (A * B)
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Separated0: Separated A Separated1: Separated B
Separated (A * B)
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Separated0: Separated A Separated1: Separated B x, y: (A * B)%type E: foralle : Q+, close e x y
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Triangular0: Triangular A Triangular1: Triangular B
Triangular (A * B)
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Triangular0: Triangular A Triangular1: Triangular B
Triangular (A * B)
intros u v w e d E1 E2;split;(eapply triangular;[apply E1|apply E2]).Qed.
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Rounded0: Rounded A Rounded1: Rounded B
Rounded (A * B)
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Rounded0: Rounded A Rounded1: Rounded B
Rounded (A * B)
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Rounded0: Rounded A Rounded1: Rounded B e: Q+ u, v: (A * B)%type
close e u v <->
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d u v)%type}}
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Rounded0: Rounded A Rounded1: Rounded B e: Q+ u, v: (A * B)%type
close e u v ->
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d u v)%type}}
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Rounded0: Rounded A Rounded1: Rounded B e: Q+ u, v: (A * B)%type
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d u v)%type}} ->
close e u v
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Rounded0: Rounded A Rounded1: Rounded B e: Q+ u, v: (A * B)%type
close e u v ->
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d u v)%type}}
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Rounded0: Rounded A Rounded1: Rounded B e: Q+ u, v: (A * B)%type E0: merely
{d : Q+ &
{d' : Q+ &
((e = plus d d') * close d (fst u) (fst v))%type}} E0': merely
{d : Q+ &
{d' : Q+ &
((e = plus d d') * close d (snd u) (snd v))%type}}
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d u v)%type}}
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Rounded0: Rounded A Rounded1: Rounded B e: Q+ u, v: (A * B)%type E0': merely
{d : Q+ &
{d' : Q+ &
((e = plus d d') * close d (snd u) (snd v))%type}} d1, d1': Q+ E1: e = d1 + d1' E2: close d1 (fst u) (fst v)
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d u v)%type}}
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Rounded0: Rounded A Rounded1: Rounded B e: Q+ u, v: (A * B)%type d1, d1': Q+ E1: e = d1 + d1' E2: close d1 (fst u) (fst v) d2, d2': Q+ E3: e = d2 + d2' E4: close d2 (snd u) (snd v)
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d u v)%type}}
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Rounded0: Rounded A Rounded1: Rounded B e: Q+ u, v: (A * B)%type d1, d1': Q+ E1: e = d1 + d1' E2: close d1 (fst u) (fst v) d2, d2': Q+ E3: e = d2 + d2' E4: close d2 (snd u) (snd v)
e = d1 ⊔ d2 + (d1' ⊓ d2')
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Rounded0: Rounded A Rounded1: Rounded B e: Q+ u, v: (A * B)%type d1, d1': Q+ E1: e = d1 + d1' E2: close d1 (fst u) (fst v) d2, d2': Q+ E3: e = d2 + d2' E4: close d2 (snd u) (snd v)
close (d1 ⊔ d2) u v
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Rounded0: Rounded A Rounded1: Rounded B e: Q+ u, v: (A * B)%type d1, d1': Q+ E1: e = d1 + d1' E2: close d1 (fst u) (fst v) d2, d2': Q+ E3: e = d2 + d2' E4: close d2 (snd u) (snd v)
e = d1 ⊔ d2 + (d1' ⊓ d2')
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Rounded0: Rounded A Rounded1: Rounded B e: Q+ u, v: (A * B)%type d1, d1': Q+ E1: e = d1 + d1' E2: close d1 (fst u) (fst v) d2, d2': Q+ E3: e = d2 + d2' E4: close d2 (snd u) (snd v)
d1 + d1' = d1 ⊔ d2 + (d1' ⊓ d2')
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Rounded0: Rounded A Rounded1: Rounded B e: Q+ u, v: (A * B)%type d1, d1': Q+ E1: e = d1 + d1' E2: close d1 (fst u) (fst v) d2, d2': Q+ E3: e = d2 + d2' E4: close d2 (snd u) (snd v)
d1 + d1' = d2 + d2'
rewrite <-E1;trivial.
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Rounded0: Rounded A Rounded1: Rounded B e: Q+ u, v: (A * B)%type d1, d1': Q+ E1: e = d1 + d1' E2: close d1 (fst u) (fst v) d2, d2': Q+ E3: e = d2 + d2' E4: close d2 (snd u) (snd v)
close (d1 ⊔ d2) u v
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Rounded0: Rounded A Rounded1: Rounded B e: Q+ u, v: (A * B)%type d1, d1': Q+ E1: e = d1 + d1' E2: close d1 (fst u) (fst v) d2, d2': Q+ E3: e = d2 + d2' E4: close d2 (snd u) (snd v)
close (d1 ⊔ d2) (fst u) (fst v)
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Rounded0: Rounded A Rounded1: Rounded B e: Q+ u, v: (A * B)%type d1, d1': Q+ E1: e = d1 + d1' E2: close d1 (fst u) (fst v) d2, d2': Q+ E3: e = d2 + d2' E4: close d2 (snd u) (snd v)
close (d1 ⊔ d2) (snd u) (snd v)
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Rounded0: Rounded A Rounded1: Rounded B e: Q+ u, v: (A * B)%type d1, d1': Q+ E1: e = d1 + d1' E2: close d1 (fst u) (fst v) d2, d2': Q+ E3: e = d2 + d2' E4: close d2 (snd u) (snd v)
close (d1 ⊔ d2) (fst u) (fst v)
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Rounded0: Rounded A Rounded1: Rounded B e: Q+ u, v: (A * B)%type d1, d1': Q+ E1: e = d1 + d1' E2: close d1 (fst u) (fst v) d2, d2': Q+ E3: e = d2 + d2' E4: close d2 (snd u) (snd v)
' d1 ≤ ' (d1 ⊔ d2)
apply join_ub_l.
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Rounded0: Rounded A Rounded1: Rounded B e: Q+ u, v: (A * B)%type d1, d1': Q+ E1: e = d1 + d1' E2: close d1 (fst u) (fst v) d2, d2': Q+ E3: e = d2 + d2' E4: close d2 (snd u) (snd v)
close (d1 ⊔ d2) (snd u) (snd v)
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Rounded0: Rounded A Rounded1: Rounded B e: Q+ u, v: (A * B)%type d1, d1': Q+ E1: e = d1 + d1' E2: close d1 (fst u) (fst v) d2, d2': Q+ E3: e = d2 + d2' E4: close d2 (snd u) (snd v)
' d2 ≤ ' (d1 ⊔ d2)
apply join_ub_r.
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Rounded0: Rounded A Rounded1: Rounded B e: Q+ u, v: (A * B)%type
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d u v)%type}} ->
close e u v
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Rounded0: Rounded A Rounded1: Rounded B e: Q+ u, v: (A * B)%type d, d': Q+ E1: e = d + d' E2: close d u v
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) PreMetric0: PreMetric A PreMetric1: PreMetric B
PreMetric (A * B)
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) PreMetric0: PreMetric A PreMetric1: PreMetric B
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Alim: Lim A Blim: Lim B
Lim (A * B)
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Alim: Lim A Blim: Lim B
Lim (A * B)
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Alim: Lim A Blim: Lim B xy: Approximation (A * B)
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Alim: Lim A Blim: Lim B CauchyComplete0: CauchyComplete A CauchyComplete1: CauchyComplete B
CauchyComplete (A * B)
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Alim: Lim A Blim: Lim B CauchyComplete0: CauchyComplete A CauchyComplete1: CauchyComplete B
CauchyComplete (A * B)
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Alim: Lim A Blim: Lim B CauchyComplete0: CauchyComplete A CauchyComplete1: CauchyComplete B xy: Approximation (A * B) e, d: Q+
close (e + d) (fst (xy d)) (fst (lim xy))
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Alim: Lim A Blim: Lim B CauchyComplete0: CauchyComplete A CauchyComplete1: CauchyComplete B xy: Approximation (A * B) e, d: Q+
close (e + d) (snd (xy d)) (snd (lim xy))
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Alim: Lim A Blim: Lim B CauchyComplete0: CauchyComplete A CauchyComplete1: CauchyComplete B xy: Approximation (A * B) e, d: Q+
funext: Funext univalence: Univalence A, B: Type H: Closeness A H0: Closeness B H1: forall (e : Q+) (xy : A), IsHProp (close e x y) H2: forall (e : Q+) (xy : B), IsHProp (close e x y) Alim: Lim A Blim: Lim B CauchyComplete0: CauchyComplete A CauchyComplete1: CauchyComplete B xy: Approximation (A * B) e, d: Q+
close (e + d) (snd (xy d)) (snd (lim xy))
apply (cauchy_complete
{| approximate := fune0 : Q+ => snd (xy e0); approx_equiv := _ |}).Qed.Endclose_prod.Sectionclose_arrow.Context {A:Type} `{Bclose : Closeness B} `{!PreMetric B}.(* Using [forall x, close e (f x) (g x)] works for closed balls, not open ones. *)#[export] Instanceclose_arrow : Closeness (A -> B)
:= funefg => merely (existsdd', e = d + d' /\ forallx, close d (f x) (g x)).
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B
forall (e : Q+) (fg : A -> B),
close e f g -> forallx : A, close e (f x) (g x)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B
forall (e : Q+) (fg : A -> B),
close e f g -> forallx : A, close e (f x) (g x)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B e: Q+ f, g: A -> B x: A d, d': Q+ E1: e = d + d' E2: forallx : A, close d (f x) (g x)
close e (f x) (g x)
rewrite E1;apply rounded_plus;trivial.Qed.
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B
PreMetric (A -> B)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B
PreMetric (A -> B)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B
forall (e : Q+) (xy : A -> B), IsHProp (close e x y)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B
foralle : Q+, Reflexive (close e)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B
foralle : Q+, Symmetric (close e)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B
Separated (A -> B)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B
Triangular (A -> B)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B
Rounded (A -> B)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B
forall (e : Q+) (xy : A -> B), IsHProp (close e x y)
apply _.
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B
foralle : Q+, Reflexive (close e)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B e: Q+ f: A -> B
e = e / 2 + e / 2
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B e: Q+ f: A -> B
forallx : A, close (e / 2) (f x) (f x)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B e: Q+ f: A -> B
e = e / 2 + e / 2
apply (pos_split2 e).
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B e: Q+ f: A -> B
forallx : A, close (e / 2) (f x) (f x)
intros x;reflexivity.
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B
foralle : Q+, Symmetric (close e)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B e: Q+ f, g: A -> B d, d': Q+ E1: e = d + d' E2: forallx : A, close d (f x) (g x)
close e g f
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B e: Q+ f, g: A -> B d, d': Q+ E1: e = d + d' E2: forallx : A, close d (f x) (g x)
forallx : A, close d (g x) (f x)
intros x;symmetry;trivial.
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B
Separated (A -> B)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B f, g: A -> B E: foralle : Q+, close e f g
f = g
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B f, g: A -> B E: foralle : Q+, close e f g x: A
f x = g x
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B f, g: A -> B E: foralle : Q+, close e f g x: A
foralle : Q+, close e (f x) (g x)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B f, g: A -> B E: foralle : Q+, close e f g x: A e: Q+
close e (f x) (g x)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B f, g: A -> B E: foralle : Q+, close e f g x: A e: Q+
{d : Q+ &
{d' : Q+ &
((e = plus d d') * (forallx : A, close d (f x) (g x)))%type}} ->
close e (f x) (g x)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B f, g: A -> B E: foralle : Q+, close e f g x: A e, d, d': Q+ E1: e = d + d' E2: forallx : A, close d (f x) (g x)
close e (f x) (g x)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B f, g: A -> B E: foralle : Q+, close e f g x: A e, d, d': Q+ E1: e = d + d' E2: forallx : A, close d (f x) (g x)
close (d + d') (f x) (g x)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B f, g: A -> B E: foralle : Q+, close e f g x: A e, d, d': Q+ E1: e = d + d' E2: forallx : A, close d (f x) (g x)
close d (f x) (g x)
trivial.
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B
Triangular (A -> B)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B f, g, h: A -> B e, d: Q+ E1: close e f g E2: close d g h
close (e + d) f h
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B f, g, h: A -> B e, d: Q+ E1: close e f g E2: close d g h d1, d1': Q+ E3: e = d1 + d1' E4: forallx : A, close d1 (f x) (g x)
close (e + d) f h
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B f, g, h: A -> B e, d: Q+ E1: close e f g E2: close d g h d1, d1': Q+ E3: e = d1 + d1' E4: forallx : A, close d1 (f x) (g x) d2, d2': Q+ E5: d = d2 + d2' E6: forallx : A, close d2 (g x) (h x)
close (e + d) f h
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B f, g, h: A -> B e, d: Q+ E1: close e f g E2: close d g h d1, d1': Q+ E3: e = d1 + d1' E4: forallx : A, close d1 (f x) (g x) d2, d2': Q+ E5: d = d2 + d2' E6: forallx : A, close d2 (g x) (h x)
((plus e d = plus (plus d1 d2) (plus d1' d2')) *
(forallx : A, close (plus d1 d2) (f x) (h x)))%type
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B f, g, h: A -> B e, d: Q+ E1: close e f g E2: close d g h d1, d1': Q+ E3: e = d1 + d1' E4: forallx : A, close d1 (f x) (g x) d2, d2': Q+ E5: d = d2 + d2' E6: forallx : A, close d2 (g x) (h x)
e + d = d1 + d2 + (d1' + d2')
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B f, g, h: A -> B e, d: Q+ E1: close e f g E2: close d g h d1, d1': Q+ E3: e = d1 + d1' E4: forallx : A, close d1 (f x) (g x) d2, d2': Q+ E5: d = d2 + d2' E6: forallx : A, close d2 (g x) (h x)
forallx : A, close (d1 + d2) (f x) (h x)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B f, g, h: A -> B e, d: Q+ E1: close e f g E2: close d g h d1, d1': Q+ E3: e = d1 + d1' E4: forallx : A, close d1 (f x) (g x) d2, d2': Q+ E5: d = d2 + d2' E6: forallx : A, close d2 (g x) (h x)
e + d = d1 + d2 + (d1' + d2')
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B f, g, h: A -> B e, d: Q+ E1: close e f g E2: close d g h d1, d1': Q+ E3: e = d1 + d1' E4: forallx : A, close d1 (f x) (g x) d2, d2': Q+ E5: d = d2 + d2' E6: forallx : A, close d2 (g x) (h x)
d1 + d1' + (d2 + d2') = d1 + d2 + (d1' + d2')
abstract (apply pos_eq; ring_tac.ring_with_nat).
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B f, g, h: A -> B e, d: Q+ E1: close e f g E2: close d g h d1, d1': Q+ E3: e = d1 + d1' E4: forallx : A, close d1 (f x) (g x) d2, d2': Q+ E5: d = d2 + d2' E6: forallx : A, close d2 (g x) (h x)
forallx : A, close (d1 + d2) (f x) (h x)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B f, g, h: A -> B e, d: Q+ E1: close e f g E2: close d g h d1, d1': Q+ E3: e = d1 + d1' E4: forallx : A, close d1 (f x) (g x) d2, d2': Q+ E5: d = d2 + d2' E6: forallx : A, close d2 (g x) (h x) x: A
close (d1 + d2) (f x) (h x)
apply triangular with (g x);trivial.
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B
Rounded (A -> B)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B e: Q+ f, g: A -> B
close e f g <->
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d f g)%type}}
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B e: Q+ f, g: A -> B
close e f g ->
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d f g)%type}}
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B e: Q+ f, g: A -> B
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d f g)%type}} ->
close e f g
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B e: Q+ f, g: A -> B
close e f g ->
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d f g)%type}}
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B e: Q+ f, g: A -> B
{d : Q+ &
{d' : Q+ &
((e = plus d d') * (forallx : A, close d (f x) (g x)))%type}} ->
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d f g)%type}}
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B e: Q+ f, g: A -> B d, d': Q+ E1: e = d + d' E2: forallx : A, close d (f x) (g x)
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d f g)%type}}
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B e: Q+ f, g: A -> B d, d': Q+ E1: e = d + d' E2: forallx : A, close d (f x) (g x)
((e = plus (plus d (d' / 2)) (d' / 2)) *
close (plus d (d' / 2)) f g)%type
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B e: Q+ f, g: A -> B d, d': Q+ E1: e = d + d' E2: forallx : A, close d (f x) (g x)
e = d + d' / 2 + d' / 2
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B e: Q+ f, g: A -> B d, d': Q+ E1: e = d + d' E2: forallx : A, close d (f x) (g x)
close (d + d' / 2) f g
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B e: Q+ f, g: A -> B d, d': Q+ E1: e = d + d' E2: forallx : A, close d (f x) (g x)
e = d + d' / 2 + d' / 2
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B e: Q+ f, g: A -> B d, d': Q+ E1: e = d + d' E2: forallx : A, close d (f x) (g x)
e = d + d'
exact E1.
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B e: Q+ f, g: A -> B d, d': Q+ E1: e = d + d' E2: forallx : A, close d (f x) (g x)
close (d + d' / 2) f g
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B e: Q+ f, g: A -> B d, d': Q+ E1: e = d + d' E2: forallx : A, close d (f x) (g x)
{d0 : Q+ &
{d'0 : Q+ &
((plus d (d' / 2) = plus d0 d'0) *
(forallx : A, close d0 (f x) (g x)))%type}}
existsd, (d'/2);split;trivial.
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B e: Q+ f, g: A -> B
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d f g)%type}} ->
close e f g
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B e: Q+ f, g: A -> B d, d': Q+ E1: e = d + d' E2: close d f g
close e f g
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B e: Q+ f, g: A -> B d, d': Q+ E1: e = d + d' E2: close d f g
forallx : A, close d (f x) (g x)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B e: Q+ f, g: A -> B d, d': Q+ E1: e = d + d' E2: close d f g
close d f g
trivial.Qed.Context {Blim : Lim B}.
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B Blim: Lim B
Lim (A -> B)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B Blim: Lim B
Lim (A -> B)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B Blim: Lim B f: Approximation (A -> B) x: A
B
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B Blim: Lim B f: Approximation (A -> B) x: A
Approximation B
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B Blim: Lim B f: Approximation (A -> B) x: A
forallde : Q+, close (d + e) (f d x) (f e x)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B Blim: Lim B f: Approximation (A -> B) x: A d, e: Q+
close (d + e) (f d x) (f e x)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B Blim: Lim B f: Approximation (A -> B) x: A d, e: Q+
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B Blim: Lim B CauchyComplete0: CauchyComplete B
CauchyComplete (A -> B)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B Blim: Lim B CauchyComplete0: CauchyComplete B
CauchyComplete (A -> B)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B Blim: Lim B CauchyComplete0: CauchyComplete B f: Approximation (A -> B) e, d: Q+
close (e + d) (f d) (lim f)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B Blim: Lim B CauchyComplete0: CauchyComplete B f: Approximation (A -> B) e, d: Q+
close (e + d) (f d)
(funx : A =>
lim
{|
approximate := fune : Q+ => f e x;
approx_equiv :=
funde : Q+ =>
close_arrow_apply (d + e) (f d) (f e)
(approx_equiv (A -> B) f d e) x
|})
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B Blim: Lim B CauchyComplete0: CauchyComplete B f: Approximation (A -> B) e, d: Q+
{d0 : Q+ &
{d' : Q+ &
((plus e d = plus d0 d') *
(forallx : A,
close d0 (f d x)
(lim
{|
approximate := fune : Q+ => f e x;
approx_equiv :=
funde : Q+ =>
close_arrow_apply (plus d e) (f d) (f e)
(approx_equiv (A -> B) f d e) x
|})))%type}}
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B Blim: Lim B CauchyComplete0: CauchyComplete B f: Approximation (A -> B) e, d: Q+
((plus e d = plus (plus (e / 2) d) (e / 2)) *
(forallx : A,
close (plus (e / 2) d) (f d x)
(lim
{|
approximate := fune : Q+ => f e x;
approx_equiv :=
funde : Q+ =>
close_arrow_apply (plus d e) (f d) (f e)
(approx_equiv (A -> B) f d e) x
|})))%type
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B Blim: Lim B CauchyComplete0: CauchyComplete B f: Approximation (A -> B) e, d: Q+
e + d = e / 2 + d + e / 2
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B Blim: Lim B CauchyComplete0: CauchyComplete B f: Approximation (A -> B) e, d: Q+
forallx : A,
close (e / 2 + d) (f d x)
(lim
{|
approximate := fune : Q+ => f e x;
approx_equiv :=
funde : Q+ =>
close_arrow_apply
(d + e) (f d)
(f e) (approx_equiv (A -> B) f d e) x
|})
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B Blim: Lim B CauchyComplete0: CauchyComplete B f: Approximation (A -> B) e, d: Q+
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B Blim: Lim B CauchyComplete0: CauchyComplete B f: Approximation (A -> B) e, d: Q+
forallx : A,
close (e / 2 + d) (f d x)
(lim
{|
approximate := fune : Q+ => f e x;
approx_equiv :=
funde : Q+ =>
close_arrow_apply (d + e) (f d) (f e)
(approx_equiv (A -> B) f d e) x
|})
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B Blim: Lim B CauchyComplete0: CauchyComplete B f: Approximation (A -> B) e, d: Q+ x: A
close (e / 2 + d) (f d x)
(lim
{|
approximate := fune : Q+ => f e x;
approx_equiv :=
funde : Q+ =>
close_arrow_apply (d + e) (f d) (f e)
(approx_equiv (A -> B) f d e) x
|})
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B Blim: Lim B CauchyComplete0: CauchyComplete B f: Approximation (A -> B) e, d: Q+ x: A S:= {|
approximate := fune0 : Q+ => f e0 x;
approx_equiv :=
funde : Q+ =>
close_arrow_apply (d + e)
(f d) (f e) (approx_equiv (A -> B) f d e) x
|}: Approximation B
close (e / 2 + d) (f d x) (lim S)
funext: Funext univalence: Univalence A, B: Type Bclose: Closeness B PreMetric0: PreMetric B Blim: Lim B CauchyComplete0: CauchyComplete B f: Approximation (A -> B) e, d: Q+ x: A S:= {|
approximate := fune0 : Q+ => f e0 x;
approx_equiv :=
funde : Q+ =>
close_arrow_apply (d + e)
(f d) (f e) (approx_equiv (A -> B) f d e) x
|}: Approximation B E: foralled : Q+, close (e + d) (S d) (lim S)
close (e / 2 + d) (f d x) (lim S)
apply E.Qed.Endclose_arrow.ClassNonExpanding `{Closeness A} `{Closeness B} (f : A -> B)
:= non_expanding : forallexy, close e x y -> close e (f x) (f y).Arguments non_expanding {A _ B _} f {_ e x y} _.ClassLipschitz `{Closeness A} `{Closeness B} (f : A -> B) (L : Q+)
:= lipschitz : forallexy, close e x y -> close (L * e) (f x) (f y).Arguments lipschitz {A _ B _} f L {_ e x y} _.ClassUniform `{Closeness A} `{Closeness B} (f : A -> B) (mu : Q+ -> Q+)
:= uniform : forallexy, close (mu e) x y -> close e (f x) (f y).Arguments uniform {A _ B _} f mu {_} _ _ _ _.ClassContinuous@{UA UB}
{A:Type@{UA} } `{Closeness A}
{B:Type@{UB} } `{Closeness B} (f : A -> B)
:= continuous : forallue, merely@{Ularge} (sig@{UQ Ularge}
(fund => forallv, close d u v ->
close e (f u) (f v))).Arguments continuous {A _ B _} f {_} _ _.DefinitionBinaryDup@{i} {A : Type@{i} } : A -> A /\ A := funx => (x, x).Definitionmap2 {ABCD} (f : A -> C) (g : B -> D) : A /\ B -> C /\ D
:= funx => (f (fst x), g (snd x)).Sectioncloseness.UniverseUA.Context {A:Type@{UA} } `{Closeness A}.
funext: Funext univalence: Univalence A: Type H: Closeness A
NonExpanding id
funext: Funext univalence: Univalence A: Type H: Closeness A
NonExpanding id
hnf;trivial.Qed.
funext: Funext univalence: Univalence A: Type H: Closeness A
NonExpanding BinaryDup
funext: Funext univalence: Univalence A: Type H: Closeness A
NonExpanding BinaryDup
intros e x y E;split;exact E.Qed.UniverseUB.Context {B:Type@{UB} } `{Closeness B} (f : A -> B).
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B f: A -> B NonExpanding0: NonExpanding f
Lipschitz f 1
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B f: A -> B NonExpanding0: NonExpanding f
Lipschitz f 1
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B f: A -> B NonExpanding0: NonExpanding f
forall (e : Q+) (xy : A),
close e x y -> close (1 * e) (f x) (f y)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B f: A -> B Lipschitz0: Lipschitz f 1
NonExpanding f
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B f: A -> B Lipschitz0: Lipschitz f 1
NonExpanding f
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B f: A -> B Lipschitz0: Lipschitz f 1
forall (e : Q+) (xy : A),
close e x y -> close e (f x) (f y)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B f: A -> B Lipschitz0: Lipschitz f 1 e: Q+ x, y: A E: close e x y
close (1 * e) (f x) (f y)
apply (lipschitz f 1 E).Qed.
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B f: A -> B H1: foralle : Q+, Reflexive (close e) b: B
NonExpanding (fun_ : A => b)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B f: A -> B H1: foralle : Q+, Reflexive (close e) b: B
NonExpanding (fun_ : A => b)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B f: A -> B H1: foralle : Q+, Reflexive (close e) b: B
forall (e : Q+) (xy : A), close e x y -> close e b b
intros;reflexivity.Qed.
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B f: A -> B H1: foralle : Q+, Reflexive (close e)
forall (b : B) (L : Q+), Lipschitz (fun_ : A => b) L
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B f: A -> B H1: foralle : Q+, Reflexive (close e)
forall (b : B) (L : Q+), Lipschitz (fun_ : A => b) L
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B f: A -> B H1: foralle : Q+, Reflexive (close e) b: B L: Q+
forall (e : Q+) (xy : A),
close e x y -> close (L * e) b b
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B f: A -> B H1: foralle : Q+, Reflexive (close e) b: B L, e: Q+
close (L * e) b b
reflexivity.Qed.
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B f: A -> B L: Q+ Lipschitz0: Lipschitz f L
Uniform f (fune : Q+ => e / L)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B f: A -> B L: Q+ Lipschitz0: Lipschitz f L
Uniform f (fune : Q+ => e / L)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B f: A -> B L: Q+ Lipschitz0: Lipschitz f L e: Q+ u, v: A xi: close (e / L) u v
close e (f u) (f v)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B f: A -> B L: Q+ Lipschitz0: Lipschitz f L e: Q+ u, v: A xi: close (e / L) u v
close (L * (e / L)) (f u) (f v)
apply (lipschitz f L),xi.Qed.
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B f: A -> B mu: Q+ -> Q+ Uniform0: Uniform f mu
Continuous f
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B f: A -> B mu: Q+ -> Q+ Uniform0: Uniform f mu
Continuous f
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B f: A -> B mu: Q+ -> Q+ Uniform0: Uniform f mu
forall (u : A) (e : Q+),
merely
{d : Q+ &
forallv : A, close d u v -> close e (f u) (f v)}
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B f: A -> B mu: Q+ -> Q+ Uniform0: Uniform f mu u: A e: Q+
forallv : A, close (mu e) u v -> close e (f u) (f v)
apply (uniform f mu).Qed.Existing Instanceuniform_continuous | 5.Definitionlipschitz_continuous@{} (L:Q+) `{!Lipschitz f L} : Continuous f
:= _.Definitionnonexpanding_continuous@{} `{!NonExpanding f} : Continuous f
:= _.Endcloseness.Sectioncompositions.UniverseUA.Context {A:Type@{UA} } `{Closeness A}.UniverseUB.Context {B:Type@{UB} } `{Closeness B}.UniverseUC.Context {C:Type@{UC} } `{Closeness C} (g : B -> C) (f : A -> B).
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B Eg: NonExpanding g Ef: NonExpanding f
NonExpanding (g ∘ f)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B Eg: NonExpanding g Ef: NonExpanding f
NonExpanding (g ∘ f)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B Eg: NonExpanding g Ef: NonExpanding f
forall (e : Q+) (xy : A),
close e x y -> close e ((g ∘ f) x) ((g ∘ f) y)
intros e x y xi;exact (non_expanding g (non_expanding f xi)).Qed.
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B Lg: Q+ Eg: Lipschitz g Lg Lf: Q+ Ef: Lipschitz f Lf
Lipschitz (g ∘ f) (Lg * Lf)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B Lg: Q+ Eg: Lipschitz g Lg Lf: Q+ Ef: Lipschitz f Lf
Lipschitz (g ∘ f) (Lg * Lf)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B Lg: Q+ Eg: Lipschitz g Lg Lf: Q+ Ef: Lipschitz f Lf e: Q+ x, y: A He: close e x y
close (Lg * Lf * e) ((g ∘ f) x) ((g ∘ f) y)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B Lg: Q+ Eg: Lipschitz g Lg Lf: Q+ Ef: Lipschitz f Lf e: Q+ x, y: A He: close (Lg * (Lf * e)) (g (f x)) (g (f y))
close (Lg * Lf * e) (g (f x)) (g (f y))
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B Lg: Q+ Eg: Lipschitz g Lg Lf: Q+ Ef: Lipschitz f Lf e: Q+ x, y: A He: close (Lg * (Lf * e)) (g (f x)) (g (f y))
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B Lg: Q+ Eg: Lipschitz g Lg Lf: Q+ Ef: Lipschitz f Lf e: Q+ x, y: A He: close (Lg * (Lf * e)) (g (f x)) (g (f y))
Lg * (Lf * e) = Lg * Lf * e
apply associativity.Qed.
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B L: Q+ Eg: Lipschitz g L Ef: NonExpanding f
Lipschitz (g ∘ f) L
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B L: Q+ Eg: Lipschitz g L Ef: NonExpanding f
Lipschitz (g ∘ f) L
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B L: Q+ Eg: Lipschitz g L Ef: NonExpanding f
Lipschitz (g ∘ f) (L * 1)
apply _.Qed.#[export] Instancelipschitz_compose_nonexpanding_r@{}
L {Eg : Lipschitz g L} {Ef : NonExpanding f}
: Lipschitz (Compose g f) L
:= ltac:(first [exact (lipschitz_compose_nonexpanding_r'@{Ularge} L)|
exact (lipschitz_compose_nonexpanding_r'@{} L)]).
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B L: Q+ Eg: NonExpanding g Ef: Lipschitz f L
Lipschitz (g ∘ f) L
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B L: Q+ Eg: NonExpanding g Ef: Lipschitz f L
Lipschitz (g ∘ f) L
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B L: Q+ Eg: NonExpanding g Ef: Lipschitz f L
Lipschitz (g ∘ f) (1 * L)
apply _.Qed.#[export] Instancelipschitz_compose_nonexpanding_l@{}
L {Eg : NonExpanding g} {Ef : Lipschitz f L}
: Lipschitz (Compose g f) L
:= ltac:(first [exact (lipschitz_compose_nonexpanding_l'@{Ularge} L)|
exact (lipschitz_compose_nonexpanding_l'@{} L)]).
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B mu: Q+ -> Q+ Eg: Uniform g mu mu': Q+ -> Q+ Ef: Uniform f mu'
Uniform (g ∘ f) (mu' ∘ mu)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B mu: Q+ -> Q+ Eg: Uniform g mu mu': Q+ -> Q+ Ef: Uniform f mu'
Uniform (g ∘ f) (mu' ∘ mu)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B mu: Q+ -> Q+ Eg: Uniform g mu mu': Q+ -> Q+ Ef: Uniform f mu' e: Q+ u, v: A xi: close ((mu' ∘ mu) e) u v
close e ((g ∘ f) u) ((g ∘ f) v)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B mu: Q+ -> Q+ Eg: Uniform g mu mu': Q+ -> Q+ Ef: Uniform f mu' e: Q+ u, v: A xi: close ((mu' ∘ mu) e) u v
close e (g (f u)) (g (f v))
apply (uniform g _),(uniform f _),xi.Qed.Existing Instanceuniform_compose.
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B Eg: Continuous g Ef: Continuous f
Continuous (g ∘ f)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B Eg: Continuous g Ef: Continuous f
Continuous (g ∘ f)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B Eg: Continuous g Ef: Continuous f u: A e: Q+
merely
{d : Q+ &
forallv : A,
close d u v -> close e ((g ∘ f) u) ((g ∘ f) v)}
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B Eg: Continuous g Ef: Continuous f u: A e: Q+
{d : Q+ &
forallv : B,
close d (f u) v -> close e (g (f u)) (g v)} ->
merely
{d : Q+ &
forallv : A,
close d u v -> close e ((g ∘ f) u) ((g ∘ f) v)}
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B Eg: Continuous g Ef: Continuous f u: A e, d: Q+ E: forallv : B,
close d (f u) v -> close e (g (f u)) (g v)
merely
{d : Q+ &
forallv : A,
close d u v -> close e ((g ∘ f) u) ((g ∘ f) v)}
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B Eg: Continuous g Ef: Continuous f u: A e, d: Q+ E: forallv : B,
close d (f u) v -> close e (g (f u)) (g v)
{d0 : Q+ &
forallv : A, close d0 u v -> close d (f u) (f v)} ->
merely
{d : Q+ &
forallv : A,
close d u v -> close e ((g ∘ f) u) ((g ∘ f) v)}
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B Eg: Continuous g Ef: Continuous f u: A e, d: Q+ E: forallv : B,
close d (f u) v -> close e (g (f u)) (g v) d': Q+ E': forallv : A, close d' u v -> close d (f u) (f v)
merely
{d : Q+ &
forallv : A,
close d u v -> close e ((g ∘ f) u) ((g ∘ f) v)}
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C g: B -> C f: A -> B Eg: Continuous g Ef: Continuous f u: A e, d: Q+ E: forallv : B,
close d (f u) v -> close e (g (f u)) (g v) d': Q+ E': forallv : A, close d' u v -> close d (f u) (f v) v: A xi: close d' u v
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C f: A -> B -> C L1, L2: Q+ H2: forallx : A, Lipschitz (f x) L1 H3: forally : B, Lipschitz (funx : A => f x y) L2
Lipschitz (uncurry f) (L1 + L2)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C f: A -> B -> C L1, L2: Q+ H2: forallx : A, Lipschitz (f x) L1 H3: forally : B, Lipschitz (funx : A => f x y) L2
Lipschitz (uncurry f) (L1 + L2)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C f: A -> B -> C L1, L2: Q+ H2: forallx : A, Lipschitz (f x) L1 H3: forally : B, Lipschitz (funx : A => f x y) L2 e: Q+ u1: A u2: B v1: A v2: B xi1: close e (fst (u1, u2)) (fst (v1, v2)) xi2: close e (snd (u1, u2)) (snd (v1, v2))
close ((L1 + L2) * e) (uncurry f (u1, u2))
(uncurry f (v1, v2))
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C f: A -> B -> C L1, L2: Q+ H2: forallx : A, Lipschitz (f x) L1 H3: forally : B, Lipschitz (funx : A => f x y) L2 e: Q+ u1: A u2: B v1: A v2: B xi1: close e u1 v1 xi2: close e u2 v2
close ((L1 + L2) * e) (uncurry f (u1, u2))
(uncurry f (v1, v2))
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C f: A -> B -> C L1, L2: Q+ H2: forallx : A, Lipschitz (f x) L1 H3: forally : B, Lipschitz (funx : A => f x y) L2 e: Q+ u1: A u2: B v1: A v2: B xi1: close e u1 v1 xi2: close e u2 v2
close ((L1 + L2) * e) (f u1 u2) (f v1 v2)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C f: A -> B -> C L1, L2: Q+ H2: forallx : A, Lipschitz (f x) L1 H3: forally : B, Lipschitz (funx : A => f x y) L2 e: Q+ u1: A u2: B v1: A v2: B xi1: close e u1 v1 xi2: close e u2 v2
close (L1 * e + L2 * e) (f u1 u2) (f v1 v2)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C f: A -> B -> C L1, L2: Q+ H2: forallx : A, Lipschitz (f x) L1 H3: forally : B, Lipschitz (funx : A => f x y) L2 e: Q+ u1: A u2: B v1: A v2: B xi1: close e u1 v1 xi2: close e u2 v2
close (L1 * e) (f u1 u2) (f u1 v2)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C f: A -> B -> C L1, L2: Q+ H2: forallx : A, Lipschitz (f x) L1 H3: forally : B, Lipschitz (funx : A => f x y) L2 e: Q+ u1: A u2: B v1: A v2: B xi1: close e u1 v1 xi2: close e u2 v2
close (L2 * e) (f u1 v2) (f v1 v2)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C f: A -> B -> C L1, L2: Q+ H2: forallx : A, Lipschitz (f x) L1 H3: forally : B, Lipschitz (funx : A => f x y) L2 e: Q+ u1: A u2: B v1: A v2: B xi1: close e u1 v1 xi2: close e u2 v2
close (L1 * e) (f u1 u2) (f u1 v2)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C f: A -> B -> C L1, L2: Q+ H2: forallx : A, Lipschitz (f x) L1 H3: forally : B, Lipschitz (funx : A => f x y) L2 e: Q+ u1: A u2: B v1: A v2: B xi1: close e u1 v1 xi2: close e u2 v2
close e u2 v2
trivial.
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C f: A -> B -> C L1, L2: Q+ H2: forallx : A, Lipschitz (f x) L1 H3: forally : B, Lipschitz (funx : A => f x y) L2 e: Q+ u1: A u2: B v1: A v2: B xi1: close e u1 v1 xi2: close e u2 v2
close (L2 * e) (f u1 v2) (f v1 v2)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C f: A -> B -> C L1, L2: Q+ H2: forallx : A, Lipschitz (f x) L1 H3: forally : B, Lipschitz (funx : A => f x y) L2 e: Q+ u1: A u2: B v1: A v2: B xi1: close e u1 v1 xi2: close e u2 v2
close e u1 v1
trivial.Qed.
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C Rounded0: Rounded A Rounded1: Rounded B f: A -> B -> C mu, mu': Q+ -> Q+ H2: forallx : A, Uniform (f x) mu H3: forally : B, Uniform (funx : A => f x y) mu'
Uniform (uncurry f)
(fune : Q+ => mu (e / 2) ⊓ mu' (e / 2))
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C Rounded0: Rounded A Rounded1: Rounded B f: A -> B -> C mu, mu': Q+ -> Q+ H2: forallx : A, Uniform (f x) mu H3: forally : B, Uniform (funx : A => f x y) mu'
Uniform (uncurry f)
(fune : Q+ => mu (e / 2) ⊓ mu' (e / 2))
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C Rounded0: Rounded A Rounded1: Rounded B f: A -> B -> C mu, mu': Q+ -> Q+ H2: forallx : A, Uniform (f x) mu H3: forally : B, Uniform (funx : A => f x y) mu' e: Q+ u1: A u2: B v1: A v2: B xi1: close (mu (e / 2) ⊓ mu' (e / 2))
(fst (u1, u2)) (fst (v1, v2)) xi2: close (mu (e / 2) ⊓ mu' (e / 2))
(snd (u1, u2)) (snd (v1, v2))
close e (uncurry f (u1, u2)) (uncurry f (v1, v2))
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C Rounded0: Rounded A Rounded1: Rounded B f: A -> B -> C mu, mu': Q+ -> Q+ H2: forallx : A, Uniform (f x) mu H3: forally : B, Uniform (funx : A => f x y) mu' e: Q+ u1: A u2: B v1: A v2: B xi1: close (mu (e / 2) ⊓ mu' (e / 2)) u1 v1 xi2: close (mu (e / 2) ⊓ mu' (e / 2)) u2 v2
close e (f u1 u2) (f v1 v2)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C Rounded0: Rounded A Rounded1: Rounded B f: A -> B -> C mu, mu': Q+ -> Q+ H2: forallx : A, Uniform (f x) mu H3: forally : B, Uniform (funx : A => f x y) mu' e: Q+ u1: A u2: B v1: A v2: B xi1: close (mu (e / 2) ⊓ mu' (e / 2)) u1 v1 xi2: close (mu (e / 2) ⊓ mu' (e / 2)) u2 v2
close (e / 2 + e / 2) (f u1 u2) (f v1 v2)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C Rounded0: Rounded A Rounded1: Rounded B f: A -> B -> C mu, mu': Q+ -> Q+ H2: forallx : A, Uniform (f x) mu H3: forally : B, Uniform (funx : A => f x y) mu' e: Q+ u1: A u2: B v1: A v2: B xi1: close (mu (e / 2) ⊓ mu' (e / 2)) u1 v1 xi2: close (mu (e / 2) ⊓ mu' (e / 2)) u2 v2
close (e / 2) (f u1 u2) (f u1 v2)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C Rounded0: Rounded A Rounded1: Rounded B f: A -> B -> C mu, mu': Q+ -> Q+ H2: forallx : A, Uniform (f x) mu H3: forally : B, Uniform (funx : A => f x y) mu' e: Q+ u1: A u2: B v1: A v2: B xi1: close (mu (e / 2) ⊓ mu' (e / 2)) u1 v1 xi2: close (mu (e / 2) ⊓ mu' (e / 2)) u2 v2
close (e / 2) (f u1 v2) (f v1 v2)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C Rounded0: Rounded A Rounded1: Rounded B f: A -> B -> C mu, mu': Q+ -> Q+ H2: forallx : A, Uniform (f x) mu H3: forally : B, Uniform (funx : A => f x y) mu' e: Q+ u1: A u2: B v1: A v2: B xi1: close (mu (e / 2) ⊓ mu' (e / 2)) u1 v1 xi2: close (mu (e / 2) ⊓ mu' (e / 2)) u2 v2
close (e / 2) (f u1 u2) (f u1 v2)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C Rounded0: Rounded A Rounded1: Rounded B f: A -> B -> C mu, mu': Q+ -> Q+ H2: forallx : A, Uniform (f x) mu H3: forally : B, Uniform (funx : A => f x y) mu' e: Q+ u1: A u2: B v1: A v2: B xi1: close (mu (e / 2) ⊓ mu' (e / 2)) u1 v1 xi2: close (mu (e / 2) ⊓ mu' (e / 2)) u2 v2
close (mu (e / 2)) u2 v2
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C Rounded0: Rounded A Rounded1: Rounded B f: A -> B -> C mu, mu': Q+ -> Q+ H2: forallx : A, Uniform (f x) mu H3: forally : B, Uniform (funx : A => f x y) mu' e: Q+ u1: A u2: B v1: A v2: B xi1: close (mu (e / 2) ⊓ mu' (e / 2)) u1 v1 xi2: close (mu (e / 2) ⊓ mu' (e / 2)) u2 v2
close ?e u2 v2
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C Rounded0: Rounded A Rounded1: Rounded B f: A -> B -> C mu, mu': Q+ -> Q+ H2: forallx : A, Uniform (f x) mu H3: forally : B, Uniform (funx : A => f x y) mu' e: Q+ u1: A u2: B v1: A v2: B xi1: close (mu (e / 2) ⊓ mu' (e / 2)) u1 v1 xi2: close (mu (e / 2) ⊓ mu' (e / 2)) u2 v2
' ?e ≤ ' mu (e / 2)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C Rounded0: Rounded A Rounded1: Rounded B f: A -> B -> C mu, mu': Q+ -> Q+ H2: forallx : A, Uniform (f x) mu H3: forally : B, Uniform (funx : A => f x y) mu' e: Q+ u1: A u2: B v1: A v2: B xi1: close (mu (e / 2) ⊓ mu' (e / 2)) u1 v1 xi2: close (mu (e / 2) ⊓ mu' (e / 2)) u2 v2
close ?e u2 v2
exact xi2.
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C Rounded0: Rounded A Rounded1: Rounded B f: A -> B -> C mu, mu': Q+ -> Q+ H2: forallx : A, Uniform (f x) mu H3: forally : B, Uniform (funx : A => f x y) mu' e: Q+ u1: A u2: B v1: A v2: B xi1: close (mu (e / 2) ⊓ mu' (e / 2)) u1 v1 xi2: close (mu (e / 2) ⊓ mu' (e / 2)) u2 v2
' (mu (e / 2) ⊓ mu' (e / 2)) ≤ ' mu (e / 2)
apply meet_lb_l.
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C Rounded0: Rounded A Rounded1: Rounded B f: A -> B -> C mu, mu': Q+ -> Q+ H2: forallx : A, Uniform (f x) mu H3: forally : B, Uniform (funx : A => f x y) mu' e: Q+ u1: A u2: B v1: A v2: B xi1: close (mu (e / 2) ⊓ mu' (e / 2)) u1 v1 xi2: close (mu (e / 2) ⊓ mu' (e / 2)) u2 v2
close (e / 2) (f u1 v2) (f v1 v2)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C Rounded0: Rounded A Rounded1: Rounded B f: A -> B -> C mu, mu': Q+ -> Q+ H2: forallx : A, Uniform (f x) mu H3: forally : B, Uniform (funx : A => f x y) mu' e: Q+ u1: A u2: B v1: A v2: B xi1: close (mu (e / 2) ⊓ mu' (e / 2)) u1 v1 xi2: close (mu (e / 2) ⊓ mu' (e / 2)) u2 v2
close (mu' (e / 2)) u1 v1
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C Rounded0: Rounded A Rounded1: Rounded B f: A -> B -> C mu, mu': Q+ -> Q+ H2: forallx : A, Uniform (f x) mu H3: forally : B, Uniform (funx : A => f x y) mu' e: Q+ u1: A u2: B v1: A v2: B xi1: close (mu (e / 2) ⊓ mu' (e / 2)) u1 v1 xi2: close (mu (e / 2) ⊓ mu' (e / 2)) u2 v2
close ?e u1 v1
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C Rounded0: Rounded A Rounded1: Rounded B f: A -> B -> C mu, mu': Q+ -> Q+ H2: forallx : A, Uniform (f x) mu H3: forally : B, Uniform (funx : A => f x y) mu' e: Q+ u1: A u2: B v1: A v2: B xi1: close (mu (e / 2) ⊓ mu' (e / 2)) u1 v1 xi2: close (mu (e / 2) ⊓ mu' (e / 2)) u2 v2
' ?e ≤ ' mu' (e / 2)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C Rounded0: Rounded A Rounded1: Rounded B f: A -> B -> C mu, mu': Q+ -> Q+ H2: forallx : A, Uniform (f x) mu H3: forally : B, Uniform (funx : A => f x y) mu' e: Q+ u1: A u2: B v1: A v2: B xi1: close (mu (e / 2) ⊓ mu' (e / 2)) u1 v1 xi2: close (mu (e / 2) ⊓ mu' (e / 2)) u2 v2
close ?e u1 v1
exact xi1.
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C Triangular0: Triangular C Rounded0: Rounded A Rounded1: Rounded B f: A -> B -> C mu, mu': Q+ -> Q+ H2: forallx : A, Uniform (f x) mu H3: forally : B, Uniform (funx : A => f x y) mu' e: Q+ u1: A u2: B v1: A v2: B xi1: close (mu (e / 2) ⊓ mu' (e / 2)) u1 v1 xi2: close (mu (e / 2) ⊓ mu' (e / 2)) u2 v2
funext: Funext univalence: Univalence A: Type H: Closeness A H0: foralle : Q+, Reflexive (close e) B: Type H1: Closeness B H2: foralle : Q+, Reflexive (close e)
forallx : A, NonExpanding (pair x)
funext: Funext univalence: Univalence A: Type H: Closeness A H0: foralle : Q+, Reflexive (close e) B: Type H1: Closeness B H2: foralle : Q+, Reflexive (close e)
forallx : A, NonExpanding (pair x)
funext: Funext univalence: Univalence A: Type H: Closeness A H0: foralle : Q+, Reflexive (close e) B: Type H1: Closeness B H2: foralle : Q+, Reflexive (close e) x: A e: Q+ u, v: B xi: close e u v
close e x x
funext: Funext univalence: Univalence A: Type H: Closeness A H0: foralle : Q+, Reflexive (close e) B: Type H1: Closeness B H2: foralle : Q+, Reflexive (close e) x: A e: Q+ u, v: B xi: close e u v
close e u v
funext: Funext univalence: Univalence A: Type H: Closeness A H0: foralle : Q+, Reflexive (close e) B: Type H1: Closeness B H2: foralle : Q+, Reflexive (close e) x: A e: Q+ u, v: B xi: close e u v
close e x x
reflexivity.
funext: Funext univalence: Univalence A: Type H: Closeness A H0: foralle : Q+, Reflexive (close e) B: Type H1: Closeness B H2: foralle : Q+, Reflexive (close e) x: A e: Q+ u, v: B xi: close e u v
close e u v
exact xi.Qed.
funext: Funext univalence: Univalence A: Type H: Closeness A H0: foralle : Q+, Reflexive (close e) B: Type H1: Closeness B H2: foralle : Q+, Reflexive (close e)
forally : B, NonExpanding (funx : A => (x, y))
funext: Funext univalence: Univalence A: Type H: Closeness A H0: foralle : Q+, Reflexive (close e) B: Type H1: Closeness B H2: foralle : Q+, Reflexive (close e)
forally : B, NonExpanding (funx : A => (x, y))
funext: Funext univalence: Univalence A: Type H: Closeness A H0: foralle : Q+, Reflexive (close e) B: Type H1: Closeness B H2: foralle : Q+, Reflexive (close e) x: B e: Q+ u, v: A xi: close e u v
close e u v
funext: Funext univalence: Univalence A: Type H: Closeness A H0: foralle : Q+, Reflexive (close e) B: Type H1: Closeness B H2: foralle : Q+, Reflexive (close e) x: B e: Q+ u, v: A xi: close e u v
close e x x
funext: Funext univalence: Univalence A: Type H: Closeness A H0: foralle : Q+, Reflexive (close e) B: Type H1: Closeness B H2: foralle : Q+, Reflexive (close e) x: B e: Q+ u, v: A xi: close e u v
close e u v
exact xi.
funext: Funext univalence: Univalence A: Type H: Closeness A H0: foralle : Q+, Reflexive (close e) B: Type H1: Closeness B H2: foralle : Q+, Reflexive (close e) x: B e: Q+ u, v: A xi: close e u v
close e x x
reflexivity.Qed.
funext: Funext univalence: Univalence A: Type H: Closeness A H0: foralle : Q+, Reflexive (close e) B: Type H1: Closeness B H2: foralle : Q+, Reflexive (close e)
NonExpanding fst
funext: Funext univalence: Univalence A: Type H: Closeness A H0: foralle : Q+, Reflexive (close e) B: Type H1: Closeness B H2: foralle : Q+, Reflexive (close e)
NonExpanding fst
intros e u v xi;apply xi.Qed.
funext: Funext univalence: Univalence A: Type H: Closeness A H0: foralle : Q+, Reflexive (close e) B: Type H1: Closeness B H2: foralle : Q+, Reflexive (close e)
NonExpanding snd
funext: Funext univalence: Univalence A: Type H: Closeness A H0: foralle : Q+, Reflexive (close e) B: Type H1: Closeness B H2: foralle : Q+, Reflexive (close e)
NonExpanding snd
intros e u v xi;apply xi.Qed.Endpair.Sectionprod_equiv.UniverseUA.Context {A:Type@{UA} } `{Closeness A}.UniverseUB.Context {B:Type@{UB} } `{Closeness B}.
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B
NonExpanding (equiv_prod_symm A B)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B
NonExpanding (equiv_prod_symm A B)
intros e u v xi;split;apply xi.Qed.
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B
NonExpanding (equiv_prod_symm A B)^-1
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B
NonExpanding (equiv_prod_symm A B)^-1
intros e u v xi;split;apply xi.Qed.UniverseUC.Context {C:Type@{UC} } `{Closeness C}.
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C
NonExpanding (equiv_prod_assoc A B C)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C
NonExpanding (equiv_prod_assoc A B C)
intros e u v xi;repeatsplit;apply xi.Qed.
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C
NonExpanding (equiv_prod_assoc A B C)^-1
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C
NonExpanding (equiv_prod_assoc A B C)^-1
intros e u v xi;repeatsplit;apply xi.Qed.Endprod_equiv.Sectionmap2.UniverseUA.Context {A:Type@{UA} } `{Closeness A}.UniverseUB.Context {B:Type@{UB} } `{Closeness B}.UniverseUC.Context {C:Type@{UC} } `{Closeness C}.UniverseUD.Context {D:Type@{UD} } `{Closeness D}.Variables (f : A -> C) (g : B -> D).
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D NonExpanding0: NonExpanding f NonExpanding1: NonExpanding g
NonExpanding (map2 f g)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D NonExpanding0: NonExpanding f NonExpanding1: NonExpanding g
NonExpanding (map2 f g)
intros e u v xi;split;simpl; apply (non_expanding _),xi.Qed.Definitionmap2_nonexpanding@{i} := @map2_nonexpanding'@{i i}.Arguments map2_nonexpanding {_ _} e x y xi.Existing Instancemap2_nonexpanding.
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded C Rounded1: Rounded D Lf, Lg: Q+ Lipschitz0: Lipschitz f Lf Lipschitz1: Lipschitz g Lg
Lipschitz (map2 f g) (Lf ⊔ Lg)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded C Rounded1: Rounded D Lf, Lg: Q+ Lipschitz0: Lipschitz f Lf Lipschitz1: Lipschitz g Lg
Lipschitz (map2 f g) (Lf ⊔ Lg)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded C Rounded1: Rounded D Lf, Lg: Q+ Lipschitz0: Lipschitz f Lf Lipschitz1: Lipschitz g Lg e: Q+ u, v: (A * B)%type xi: close e u v
close ((Lf ⊔ Lg) * e) (map2 f g u) (map2 f g v)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded C Rounded1: Rounded D Lf, Lg: Q+ Lipschitz0: Lipschitz f Lf Lipschitz1: Lipschitz g Lg e: Q+ u, v: (A * B)%type xi: close e u v
close ((Lf ⊔ Lg) * e) (f (fst u)) (f (fst v))
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded C Rounded1: Rounded D Lf, Lg: Q+ Lipschitz0: Lipschitz f Lf Lipschitz1: Lipschitz g Lg e: Q+ u, v: (A * B)%type xi: close e u v
close ((Lf ⊔ Lg) * e) (g (snd u)) (g (snd v))
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded C Rounded1: Rounded D Lf, Lg: Q+ Lipschitz0: Lipschitz f Lf Lipschitz1: Lipschitz g Lg e: Q+ u, v: (A * B)%type xi: close e u v
close ((Lf ⊔ Lg) * e) (f (fst u)) (f (fst v))
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded C Rounded1: Rounded D Lf, Lg: Q+ Lipschitz0: Lipschitz f Lf Lipschitz1: Lipschitz g Lg e: Q+ u, v: (A * B)%type xi: close e u v
close (Lf * e) (f (fst u)) (f (fst v))
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded C Rounded1: Rounded D Lf, Lg: Q+ Lipschitz0: Lipschitz f Lf Lipschitz1: Lipschitz g Lg e: Q+ u, v: (A * B)%type xi: close e u v
' (Lf * e) ≤ ' ((Lf ⊔ Lg) * e)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded C Rounded1: Rounded D Lf, Lg: Q+ Lipschitz0: Lipschitz f Lf Lipschitz1: Lipschitz g Lg e: Q+ u, v: (A * B)%type xi: close e u v
close (Lf * e) (f (fst u)) (f (fst v))
apply (lipschitz _ _),xi.
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded C Rounded1: Rounded D Lf, Lg: Q+ Lipschitz0: Lipschitz f Lf Lipschitz1: Lipschitz g Lg e: Q+ u, v: (A * B)%type xi: close e u v
' (Lf * e) ≤ ' ((Lf ⊔ Lg) * e)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded C Rounded1: Rounded D Lf, Lg: Q+ Lipschitz0: Lipschitz f Lf Lipschitz1: Lipschitz g Lg e: Q+ u, v: (A * B)%type xi: close e u v
' Lf ≤ ' (Lf ⊔ Lg)
apply join_ub_l.
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded C Rounded1: Rounded D Lf, Lg: Q+ Lipschitz0: Lipschitz f Lf Lipschitz1: Lipschitz g Lg e: Q+ u, v: (A * B)%type xi: close e u v
close ((Lf ⊔ Lg) * e) (g (snd u)) (g (snd v))
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded C Rounded1: Rounded D Lf, Lg: Q+ Lipschitz0: Lipschitz f Lf Lipschitz1: Lipschitz g Lg e: Q+ u, v: (A * B)%type xi: close e u v
close (Lg * e) (g (snd u)) (g (snd v))
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded C Rounded1: Rounded D Lf, Lg: Q+ Lipschitz0: Lipschitz f Lf Lipschitz1: Lipschitz g Lg e: Q+ u, v: (A * B)%type xi: close e u v
' (Lg * e) ≤ ' ((Lf ⊔ Lg) * e)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded C Rounded1: Rounded D Lf, Lg: Q+ Lipschitz0: Lipschitz f Lf Lipschitz1: Lipschitz g Lg e: Q+ u, v: (A * B)%type xi: close e u v
close (Lg * e) (g (snd u)) (g (snd v))
apply (lipschitz _ _),xi.
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded C Rounded1: Rounded D Lf, Lg: Q+ Lipschitz0: Lipschitz f Lf Lipschitz1: Lipschitz g Lg e: Q+ u, v: (A * B)%type xi: close e u v
' (Lg * e) ≤ ' ((Lf ⊔ Lg) * e)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded C Rounded1: Rounded D Lf, Lg: Q+ Lipschitz0: Lipschitz f Lf Lipschitz1: Lipschitz g Lg e: Q+ u, v: (A * B)%type xi: close e u v
' Lg ≤ ' (Lf ⊔ Lg)
apply join_ub_r.Qed.(* Coq pre 8.8 produces phantom universes, see coq/coq#6483 **)Definitionmap2_lipschitz@{i} := ltac:(first [exact @map2_lipschitz'@{i i i}|exact @map2_lipschitz'@{i i i i}]).Arguments map2_lipschitz {_ _} Lf Lg {_ _} e x y xi.Existing Instancemap2_lipschitz.
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded A Rounded1: Rounded B Continuous0: Continuous f Continuous1: Continuous g
Continuous (map2 f g)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded A Rounded1: Rounded B Continuous0: Continuous f Continuous1: Continuous g
Continuous (map2 f g)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded A Rounded1: Rounded B Continuous0: Continuous f Continuous1: Continuous g u: (A * B)%type e: Q+
merely
{d : Q+ &
forallv : A * B,
close d u v -> close e (map2 f g u) (map2 f g v)}
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded A Rounded1: Rounded B Continuous0: Continuous f Continuous1: Continuous g u: (A * B)%type e, d1: Q+ E1: forallv : A,
close d1 (fst u) v -> close e (f (fst u)) (f v)
merely
{d : Q+ &
forallv : A * B,
close d u v -> close e (map2 f g u) (map2 f g v)}
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded A Rounded1: Rounded B Continuous0: Continuous f Continuous1: Continuous g u: (A * B)%type e, d1: Q+ E1: forallv : A,
close d1 (fst u) v -> close e (f (fst u)) (f v) d2: Q+ E2: forallv : B,
close d2 (snd u) v -> close e (g (snd u)) (g v)
merely
{d : Q+ &
forallv : A * B,
close d u v -> close e (map2 f g u) (map2 f g v)}
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded A Rounded1: Rounded B Continuous0: Continuous f Continuous1: Continuous g u: (A * B)%type e, d1: Q+ E1: forallv : A,
close d1 (fst u) v -> close e (f (fst u)) (f v) d2: Q+ E2: forallv : B,
close d2 (snd u) v -> close e (g (snd u)) (g v)
forallv : A * B,
close (d1 ⊓ d2) u v ->
close e (map2 f g u) (map2 f g v)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded A Rounded1: Rounded B Continuous0: Continuous f Continuous1: Continuous g u: (A * B)%type e, d1: Q+ E1: forallv : A,
close d1 (fst u) v -> close e (f (fst u)) (f v) d2: Q+ E2: forallv : B,
close d2 (snd u) v -> close e (g (snd u)) (g v) v: (A * B)%type xi: close (d1 ⊓ d2) u v
close e (map2 f g u) (map2 f g v)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded A Rounded1: Rounded B Continuous0: Continuous f Continuous1: Continuous g u: (A * B)%type e, d1: Q+ E1: forallv : A,
close d1 (fst u) v -> close e (f (fst u)) (f v) d2: Q+ E2: forallv : B,
close d2 (snd u) v -> close e (g (snd u)) (g v) v: (A * B)%type xi: close (d1 ⊓ d2) u v
close e (f (fst u)) (f (fst v))
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded A Rounded1: Rounded B Continuous0: Continuous f Continuous1: Continuous g u: (A * B)%type e, d1: Q+ E1: forallv : A,
close d1 (fst u) v -> close e (f (fst u)) (f v) d2: Q+ E2: forallv : B,
close d2 (snd u) v -> close e (g (snd u)) (g v) v: (A * B)%type xi: close (d1 ⊓ d2) u v
close e (g (snd u)) (g (snd v))
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded A Rounded1: Rounded B Continuous0: Continuous f Continuous1: Continuous g u: (A * B)%type e, d1: Q+ E1: forallv : A,
close d1 (fst u) v -> close e (f (fst u)) (f v) d2: Q+ E2: forallv : B,
close d2 (snd u) v -> close e (g (snd u)) (g v) v: (A * B)%type xi: close (d1 ⊓ d2) u v
close e (f (fst u)) (f (fst v))
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded A Rounded1: Rounded B Continuous0: Continuous f Continuous1: Continuous g u: (A * B)%type e, d1: Q+ E1: forallv : A,
close d1 (fst u) v -> close e (f (fst u)) (f v) d2: Q+ E2: forallv : B,
close d2 (snd u) v -> close e (g (snd u)) (g v) v: (A * B)%type xi: close (d1 ⊓ d2) u v
close d1 (fst u) (fst v)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded A Rounded1: Rounded B Continuous0: Continuous f Continuous1: Continuous g u: (A * B)%type e, d1: Q+ E1: forallv : A,
close d1 (fst u) v -> close e (f (fst u)) (f v) d2: Q+ E2: forallv : B,
close d2 (snd u) v -> close e (g (snd u)) (g v) v: (A * B)%type xi: close (d1 ⊓ d2) u v
close (d1 ⊓ d2) (fst u) (fst v)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded A Rounded1: Rounded B Continuous0: Continuous f Continuous1: Continuous g u: (A * B)%type e, d1: Q+ E1: forallv : A,
close d1 (fst u) v -> close e (f (fst u)) (f v) d2: Q+ E2: forallv : B,
close d2 (snd u) v -> close e (g (snd u)) (g v) v: (A * B)%type xi: close (d1 ⊓ d2) u v
' (d1 ⊓ d2) ≤ ' d1
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded A Rounded1: Rounded B Continuous0: Continuous f Continuous1: Continuous g u: (A * B)%type e, d1: Q+ E1: forallv : A,
close d1 (fst u) v -> close e (f (fst u)) (f v) d2: Q+ E2: forallv : B,
close d2 (snd u) v -> close e (g (snd u)) (g v) v: (A * B)%type xi: close (d1 ⊓ d2) u v
close (d1 ⊓ d2) (fst u) (fst v)
apply xi.
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded A Rounded1: Rounded B Continuous0: Continuous f Continuous1: Continuous g u: (A * B)%type e, d1: Q+ E1: forallv : A,
close d1 (fst u) v -> close e (f (fst u)) (f v) d2: Q+ E2: forallv : B,
close d2 (snd u) v -> close e (g (snd u)) (g v) v: (A * B)%type xi: close (d1 ⊓ d2) u v
' (d1 ⊓ d2) ≤ ' d1
apply meet_lb_l.
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded A Rounded1: Rounded B Continuous0: Continuous f Continuous1: Continuous g u: (A * B)%type e, d1: Q+ E1: forallv : A,
close d1 (fst u) v -> close e (f (fst u)) (f v) d2: Q+ E2: forallv : B,
close d2 (snd u) v -> close e (g (snd u)) (g v) v: (A * B)%type xi: close (d1 ⊓ d2) u v
close e (g (snd u)) (g (snd v))
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded A Rounded1: Rounded B Continuous0: Continuous f Continuous1: Continuous g u: (A * B)%type e, d1: Q+ E1: forallv : A,
close d1 (fst u) v -> close e (f (fst u)) (f v) d2: Q+ E2: forallv : B,
close d2 (snd u) v -> close e (g (snd u)) (g v) v: (A * B)%type xi: close (d1 ⊓ d2) u v
close d2 (snd u) (snd v)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded A Rounded1: Rounded B Continuous0: Continuous f Continuous1: Continuous g u: (A * B)%type e, d1: Q+ E1: forallv : A,
close d1 (fst u) v -> close e (f (fst u)) (f v) d2: Q+ E2: forallv : B,
close d2 (snd u) v -> close e (g (snd u)) (g v) v: (A * B)%type xi: close (d1 ⊓ d2) u v
close (d1 ⊓ d2) (snd u) (snd v)
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded A Rounded1: Rounded B Continuous0: Continuous f Continuous1: Continuous g u: (A * B)%type e, d1: Q+ E1: forallv : A,
close d1 (fst u) v -> close e (f (fst u)) (f v) d2: Q+ E2: forallv : B,
close d2 (snd u) v -> close e (g (snd u)) (g v) v: (A * B)%type xi: close (d1 ⊓ d2) u v
' (d1 ⊓ d2) ≤ ' d2
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded A Rounded1: Rounded B Continuous0: Continuous f Continuous1: Continuous g u: (A * B)%type e, d1: Q+ E1: forallv : A,
close d1 (fst u) v -> close e (f (fst u)) (f v) d2: Q+ E2: forallv : B,
close d2 (snd u) v -> close e (g (snd u)) (g v) v: (A * B)%type xi: close (d1 ⊓ d2) u v
close (d1 ⊓ d2) (snd u) (snd v)
apply xi.
funext: Funext univalence: Univalence A: Type H: Closeness A B: Type H0: Closeness B C: Type H1: Closeness C D: Type H2: Closeness D f: A -> C g: B -> D Rounded0: Rounded A Rounded1: Rounded B Continuous0: Continuous f Continuous1: Continuous g u: (A * B)%type e, d1: Q+ E1: forallv : A,
close d1 (fst u) v -> close e (f (fst u)) (f v) d2: Q+ E2: forallv : B,
close d2 (snd u) v -> close e (g (snd u)) (g v) v: (A * B)%type xi: close (d1 ⊓ d2) u v
' (d1 ⊓ d2) ≤ ' d2
apply meet_lb_r.Qed.(* Coq pre 8.8 produces phantom universes, see coq/coq#6483 **)Definitionmap2_continuous@{i} := ltac:(first [exact @map2_continuous'@{i i i}|exact @map2_continuous'@{i i i i}]).Arguments map2_continuous {_ _ _ _} u e.Existing Instancemap2_continuous.Endmap2.Sectioninterval.UniverseUA UALE.Context {A:Type@{UA} } {Ale : Le@{UA UALE} A}.DefinitionIntervalab := sig (funx : A => a <= x /\ x <= b).Definitioninterval_projab : Interval a b -> A := pr1.Context {Ameet : Meet A} {Ajoin : Join A}
`{!LatticeOrder@{UA UALE} Ale}.
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale a, b: A E: a ≤ b
A -> Interval a b
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale a, b: A E: a ≤ b
A -> Interval a b
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale a, b: A E: a ≤ b x: A
Interval a b
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale a, b: A E: a ≤ b x: A
a ≤ a ⊔ (x ⊓ b) ≤ b
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale a, b: A E: a ≤ b x: A
a ≤ a ⊔ (x ⊓ b)
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale a, b: A E: a ≤ b x: A
a ⊔ (x ⊓ b) ≤ b
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale a, b: A E: a ≤ b x: A
a ≤ a ⊔ (x ⊓ b)
apply join_ub_l.
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale a, b: A E: a ≤ b x: A
a ⊔ (x ⊓ b) ≤ b
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale a, b: A E: a ≤ b x: A
a ≤ b
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale a, b: A E: a ≤ b x: A
x ⊓ b ≤ b
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale a, b: A E: a ≤ b x: A
a ≤ b
exact E.
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale a, b: A E: a ≤ b x: A
x ⊓ b ≤ b
apply meet_lb_r.Defined.
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale
forall (ab : A) (E : a ≤ b) (x : A) (E' : a ≤ x ≤ b),
Interval_restrict a b E x = (x; E')
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale
forall (ab : A) (E : a ≤ b) (x : A) (E' : a ≤ x ≤ b),
Interval_restrict a b E x = (x; E')
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale a, b: A E: a ≤ b x: A E': a ≤ x ≤ b
Interval_restrict a b E x = (x; E')
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale a, b: A E: a ≤ b x: A E': a ≤ x ≤ b
(a ⊔ (x ⊓ b);
(join_ub_l a (x ⊓ b),
join_le a (x ⊓ b) b E (meet_lb_r x b))) = (x; E')
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale a, b: A E: a ≤ b x: A E': a ≤ x ≤ b
(a ⊔ (x ⊓ b);
(join_ub_l a (x ⊓ b),
join_le a (x ⊓ b) b E (meet_lb_r x b))).1 = (x; E').1
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale a, b: A E: a ≤ b x: A E': a ≤ x ≤ b
a ⊔ (x ⊓ b) = x
rewrite meet_l;[apply join_r|];apply E'.Qed.Context `{Closeness A}.#[export] InstanceInterval_close (ab : A) : Closeness (Interval a b)
:= funexy => close e (interval_proj a b x) (interval_proj a b y).Arguments Interval_close _ _ _ _ _ /.(* NB: for some reason this forces UALE <= UA *)
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A
PreMetric (Interval a b)
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A
PreMetric (Interval a b)
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A
forall (e : Q+) (xy : Interval a b),
IsHProp (close e x y)
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A
foralle : Q+, Reflexive (close e)
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A
foralle : Q+, Symmetric (close e)
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A
Separated (Interval a b)
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A
Triangular (Interval a b)
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A
Rounded (Interval a b)
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A
forall (e : Q+) (xy : Interval a b),
IsHProp (close e x y)
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A
forall (e : Q+) (xy : Interval a b),
IsHProp
(close e (interval_proj a b x) (interval_proj a b y))
apply _.
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A
foralle : Q+, Reflexive (close e)
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A e: Q+ u: Interval a b
close e u u
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A e: Q+ u: Interval a b
close e (interval_proj a b u) (interval_proj a b u)
reflexivity.
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A
foralle : Q+, Symmetric (close e)
intros e u v xi;red;red;symmetry;apply xi.
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A
Separated (Interval a b)
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A u, v: Interval a b E: foralle : Q+, close e u v
u = v
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A u, v: Interval a b E: foralle : Q+, close e u v
u.1 = v.1
apply separated,E.
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A
Triangular (Interval a b)
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A u, v, w: Interval a b e, d: Q+ xi1: close e u v xi2: close d v w
close (e + d) u w
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A u, v, w: Interval a b e, d: Q+ xi1: close e u v xi2: close d v w
close (e + d) (interval_proj a b u)
(interval_proj a b w)
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A u, v, w: Interval a b e, d: Q+ xi1: close e u v xi2: close d v w
close e (interval_proj a b u) (interval_proj a b v)
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A u, v, w: Interval a b e, d: Q+ xi1: close e u v xi2: close d v w
close d (interval_proj a b v) (interval_proj a b w)
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A u, v, w: Interval a b e, d: Q+ xi1: close e u v xi2: close d v w
close e (interval_proj a b u) (interval_proj a b v)
exact xi1.
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A u, v, w: Interval a b e, d: Q+ xi1: close e u v xi2: close d v w
close d (interval_proj a b v) (interval_proj a b w)
exact xi2.
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A
Rounded (Interval a b)
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A e: Q+ u, v: Interval a b
close e u v <->
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d u v)%type}}
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A e: Q+ u, v: Interval a b
close e u v ->
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d u v)%type}}
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A e: Q+ u, v: Interval a b
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d u v)%type}} ->
close e u v
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A e: Q+ u, v: Interval a b
close e u v ->
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d u v)%type}}
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A e: Q+ u, v: Interval a b xi: close e u v
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d u v)%type}}
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A e: Q+ u, v: Interval a b xi: close e (interval_proj a b u)
(interval_proj a b v)
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d u v)%type}}
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A e: Q+ u, v: Interval a b xi: merely
{d : Q+ &
{d' : Q+ &
((e = plus d d') *
close d (interval_proj a b u)
(interval_proj a b v))%type}}
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d u v)%type}}
exact xi.
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A e: Q+ u, v: Interval a b
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d u v)%type}} ->
close e u v
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A e: Q+ u, v: Interval a b E: merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d u v)%type}}
close e u v
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A e: Q+ u, v: Interval a b E: merely
{d : Q+ &
{d' : Q+ &
((e = plus d d') *
close d (interval_proj a b u)
(interval_proj a b v))%type}}
close e u v
funext: Funext univalence: Univalence A: Type Ale: Le A Ameet: Meet A Ajoin: Join A LatticeOrder0: LatticeOrder Ale H: Closeness A PreMetric0: PreMetric A a, b: A e: Q+ u, v: Interval a b E: close e (interval_proj a b u)
(interval_proj a b v)
close e u v
exact E.Qed.Existing InstanceInterval_premetric.#[export] Instanceinterval_proj_nonexpanding (ab : A)
: NonExpanding (interval_proj a b)
:= fun___xi => xi.Endinterval.Sectionrationals.
funext: Funext univalence: Univalence
forall (e : Q+) (qr : Q),
close e q r <-> abs (q - r) < ' e
funext: Funext univalence: Univalence
forall (e : Q+) (qr : Q),
close e q r <-> abs (q - r) < ' e
funext: Funext univalence: Univalence e: Q+ q, r: Q
close e q r -> abs (q - r) < ' e
funext: Funext univalence: Univalence e: Q+ q, r: Q
abs (q - r) < ' e -> close e q r
funext: Funext univalence: Univalence e: Q+ q, r: Q
close e q r -> abs (q - r) < ' e
funext: Funext univalence: Univalence e: Q+ q, r: Q E1: - ' e < q - r E2: q - r < ' e
abs (q - r) < ' e
funext: Funext univalence: Univalence e: Q+ q, r: Q E1: - ' e < q - r E2: q - r < ' e E: 0 ≤ q - r
abs (q - r) < ' e
funext: Funext univalence: Univalence e: Q+ q, r: Q E1: - ' e < q - r E2: q - r < ' e E: q - r ≤ 0
abs (q - r) < ' e
funext: Funext univalence: Univalence e: Q+ q, r: Q E1: - ' e < q - r E2: q - r < ' e E: 0 ≤ q - r
abs (q - r) < ' e
funext: Funext univalence: Univalence e: Q+ q, r: Q E1: - ' e < q - r E2: q - r < ' e E: 0 ≤ q - r
q - r < ' e
trivial.
funext: Funext univalence: Univalence e: Q+ q, r: Q E1: - ' e < q - r E2: q - r < ' e E: q - r ≤ 0
abs (q - r) < ' e
funext: Funext univalence: Univalence e: Q+ q, r: Q E1: - ' e < q - r E2: q - r < ' e E: q - r ≤ 0
- (q - r) < ' e
funext: Funext univalence: Univalence e: Q+ q, r: Q E1: - ' e < q - r E2: q - r < ' e E: q - r ≤ 0
- ' e < - - (q - r)
funext: Funext univalence: Univalence e: Q+ q, r: Q E1: - ' e < q - r E2: q - r < ' e E: q - r ≤ 0
- ' e < q - r
trivial.
funext: Funext univalence: Univalence e: Q+ q, r: Q
abs (q - r) < ' e -> close e q r
funext: Funext univalence: Univalence e: Q+ q, r: Q E: abs (q - r) < ' e
close e q r
funext: Funext univalence: Univalence e: Q+ q, r: Q E: abs (q - r) < ' e
- (q - r) ≤ abs (q - r)
funext: Funext univalence: Univalence e: Q+ q, r: Q E: abs (q - r) < ' e
q - r ≤ abs (q - r)
funext: Funext univalence: Univalence e: Q+ q, r: Q E: abs (q - r) < ' e
- (q - r) ≤ abs (q - r)
apply Qabs_le_neg_raw.
funext: Funext univalence: Univalence e: Q+ q, r: Q E: abs (q - r) < ' e
q - r ≤ abs (q - r)
apply Qabs_le_raw.Qed.
funext: Funext univalence: Univalence
forall (e : Q+) (xy : Q),
close e x y <-> close e (- x) (- y)
funext: Funext univalence: Univalence
forall (e : Q+) (xy : Q),
close e x y <-> close e (- x) (- y)
forall (e : Q+) (xy : Q),
Q_close e x y -> Q_close e y x
funext: Funext univalence: Univalence e: Q+ x, y: Q E1: - ' e < x - y E2: x - y < ' e
- ' e < y - x
funext: Funext univalence: Univalence e: Q+ x, y: Q E1: - ' e < x - y E2: x - y < ' e
y - x < ' e
funext: Funext univalence: Univalence e: Q+ x, y: Q E1: - ' e < x - y E2: x - y < ' e
- ' e < y - x
funext: Funext univalence: Univalence e: Q+ x, y: Q E1: - ' e < x - y E2: x - y < ' e
- (y - x) < - - ' e
funext: Funext univalence: Univalence e: Q+ x, y: Q E1: - ' e < x - y E2: x - y < ' e
x - y < ' e
trivial.
funext: Funext univalence: Univalence e: Q+ x, y: Q E1: - ' e < x - y E2: x - y < ' e
y - x < ' e
funext: Funext univalence: Univalence e: Q+ x, y: Q E1: - ' e < x - y E2: x - y < ' e
- ' e < - (y - x)
funext: Funext univalence: Univalence e: Q+ x, y: Q E1: - ' e < x - y E2: x - y < ' e
- ' e < x - y
trivial.Qed.
funext: Funext univalence: Univalence
forall (qr : Q) (e : Q+),
close e q r ->
forall (q0 : Q) (n : Q+),
close n q q0 -> close (e + n) r q0
funext: Funext univalence: Univalence
forall (qr : Q) (e : Q+),
close e q r ->
forall (q0 : Q) (n : Q+),
close n q q0 -> close (e + n) r q0
funext: Funext univalence: Univalence
forall (qr : Q) (e : Q+),
Q_close e q r ->
forall (q0 : Q) (n : Q+),
Q_close n q q0 -> Q_close (e + n) r q0
funext: Funext univalence: Univalence q, r: Q e: Q+ E1: - ' e < q - r E1': q - r < ' e s: Q n: Q+ E2: - ' n < q - s E2': q - s < ' n
Q_close (e + n) r s
funext: Funext univalence: Univalence q, r: Q e: Q+ E1: - ' e < q - r E1': q - r < ' e s: Q n: Q+ E2: - ' n < q - s E2': q - s < ' n
- ' (e + n) < r - s
funext: Funext univalence: Univalence q, r: Q e: Q+ E1: - ' e < q - r E1': q - r < ' e s: Q n: Q+ E2: - ' n < q - s E2': q - s < ' n
r - s < ' (e + n)
funext: Funext univalence: Univalence q, r: Q e: Q+ E1: - ' e < q - r E1': q - r < ' e s: Q n: Q+ E2: - ' n < q - s E2': q - s < ' n
- ' (e + n) < r - s
funext: Funext univalence: Univalence q, r: Q e: Q+ E1: - ' e < q - r E1': q - r < ' e s: Q n: Q+ E2: - ' n < q - s E2': q - s < ' n
- (r - s) < - - ' (e + n)
funext: Funext univalence: Univalence q, r: Q e: Q+ E1: - ' e < q - r E1': q - r < ' e s: Q n: Q+ E2: - ' n < q - s E2': q - s < ' n
s - r < ' (e + n)
funext: Funext univalence: Univalence q, r: Q e: Q+ E1: - ' e < q - r E1': q - r < ' e s: Q n: Q+ E2: - (q - s) < - - ' n E2': q - s < ' n
s - r < ' (e + n)
funext: Funext univalence: Univalence q, r: Q e: Q+ E1: - ' e < q - r E1': q - r < ' e s: Q n: Q+ E2: s - q < ' n E2': q - s < ' n
s - r < ' (e + n)
funext: Funext univalence: Univalence q, r: Q e: Q+ E1: - ' e < q - r E1': q - r < ' e s: Q n: Q+ E2: s - q < ' n E2': q - s < ' n E: q - r + (s - q) < ' e + ' n
s - r < ' (e + n)
funext: Funext univalence: Univalence q, r: Q e: Q+ E1: - ' e < q - r E1': q - r < ' e s: Q n: Q+ E2: s - q < ' n E2': q - s < ' n E: q - r + (s - q) < ' e + ' n Hrw: s - r = q - r + (s - q)
s - r < ' (e + n)
rewrite Hrw;trivial.
funext: Funext univalence: Univalence q, r: Q e: Q+ E1: - ' e < q - r E1': q - r < ' e s: Q n: Q+ E2: - ' n < q - s E2': q - s < ' n
r - s < ' (e + n)
funext: Funext univalence: Univalence q, r: Q e: Q+ E1: - (q - r) < - - ' e E1': q - r < ' e s: Q n: Q+ E2: - ' n < q - s E2': q - s < ' n
r - s < ' (e + n)
funext: Funext univalence: Univalence q, r: Q e: Q+ E1: r - q < ' e E1': q - r < ' e s: Q n: Q+ E2: - ' n < q - s E2': q - s < ' n
r - s < ' (e + n)
funext: Funext univalence: Univalence q, r: Q e: Q+ E1: r - q < ' e E1': q - r < ' e s: Q n: Q+ E2: - ' n < q - s E2': q - s < ' n E: r - q + (q - s) < ' e + ' n
r - s < ' (e + n)
funext: Funext univalence: Univalence q, r: Q e: Q+ E1: r - q < ' e E1': q - r < ' e s: Q n: Q+ E2: - ' n < q - s E2': q - s < ' n E: r - q + (q - s) < ' e + ' n Hrw: r - s = r - q + (q - s)
r - s < ' (e + n)
rewrite Hrw;trivial.Qed.
funext: Funext univalence: Univalence
Triangular Q
funext: Funext univalence: Univalence
Triangular Q
funext: Funext univalence: Univalence
forall (uvw : Q) (ed : Q+),
close e u v -> close d v w -> close (e + d) u w
funext: Funext univalence: Univalence u, v, w: Q e, d: Q+ E1: close e u v E2: close d v w
close (e + d) u w
funext: Funext univalence: Univalence u, v, w: Q e, d: Q+ E1: close e u v E2: close d v w
close e v u
funext: Funext univalence: Univalence u, v, w: Q e, d: Q+ E1: close e u v E2: close d v w
close d v w
funext: Funext univalence: Univalence u, v, w: Q e, d: Q+ E1: close e u v E2: close d v w
close e v u
symmetry;trivial.
funext: Funext univalence: Univalence u, v, w: Q e, d: Q+ E1: close e u v E2: close d v w
close d v w
trivial.Qed.
funext: Funext univalence: Univalence
forallqr : Q,
(foralle : Q+, close e q r) -> ~ (q < r)
funext: Funext univalence: Univalence
forallqr : Q,
(foralle : Q+, close e q r) -> ~ (q < r)
funext: Funext univalence: Univalence q, r: Q E1: foralle : Q+, close e q r E2: q < r
Empty
funext: Funext univalence: Univalence q, r: Q E1: foralle : Q+, close e q r E2: q < r E3: close (Qpos_diff q r E2) q r
Empty
funext: Funext univalence: Univalence q, r: Q E1: foralle : Q+, close e q r E2: q < r E3: abs (r - q) < ' Qpos_diff q r E2
Empty
funext: Funext univalence: Univalence q, r: Q E1: foralle : Q+, close e q r E2: q < r E3: abs (r - q) < r - q
Empty
funext: Funext univalence: Univalence q, r: Q E1: foralle : Q+, close e q r E2: q < r E3: abs (r - q) < r - q
r - q < r - q
funext: Funext univalence: Univalence q, r: Q E1: foralle : Q+, close e q r E2: q < r E3: abs (r - q) < r - q
r - q ≤ abs (r - q)
apply Qabs_le_raw.Qed.
funext: Funext univalence: Univalence
Separated Q
funext: Funext univalence: Univalence
Separated Q
funext: Funext univalence: Univalence
forallxy : Q, (foralle : Q+, close e x y) -> x = y
funext: Funext univalence: Univalence q, r: Q E1: foralle : Q+, close e q r
q = r
funext: Funext univalence: Univalence q, r: Q E1: foralle : Q+, close e q r
~ (q ≶ r)
funext: Funext univalence: Univalence q, r: Q E1: foralle : Q+, close e q r E2: q ≶ r
Empty
funext: Funext univalence: Univalence q, r: Q E1: foralle : Q+, close e q r E2: ((q < r) + (r < q))%type
Empty
funext: Funext univalence: Univalence q, r: Q E1: foralle : Q+, close e q r E2: q < r
Empty
funext: Funext univalence: Univalence q, r: Q E1: foralle : Q+, close e q r E2: r < q
Empty
funext: Funext univalence: Univalence q, r: Q E1: foralle : Q+, close e q r E2: q < r
Empty
exact (Qclose_separating_not_lt _ _ E1 E2).
funext: Funext univalence: Univalence q, r: Q E1: foralle : Q+, close e q r E2: r < q
Empty
funext: Funext univalence: Univalence q, r: Q E1: foralle : Q+, close e q r E2: r < q
foralle : Q+, close e r q
intros;symmetry;trivial.Qed.
funext: Funext univalence: Univalence
Rounded Q
funext: Funext univalence: Univalence
Rounded Q
funext: Funext univalence: Univalence e: Q+ q, r: Q
close e q r ->
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d q r)%type}}
funext: Funext univalence: Univalence e: Q+ q, r: Q
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d q r)%type}} ->
close e q r
funext: Funext univalence: Univalence e: Q+ q, r: Q
close e q r ->
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d q r)%type}}
funext: Funext univalence: Univalence e: Q+ q, r: Q E: abs (q - r) < ' e
merely
{d : Q+ &
{d' : Q+ & ((e = plus d d') * close d q r)%type}}
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A
forall (x : Approximation A) (l1l2 : A),
IsLimit x l1 -> IsLimit x l2 -> l1 = l2
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A
forall (x : Approximation A) (l1l2 : A),
IsLimit x l1 -> IsLimit x l2 -> l1 = l2
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A x: Approximation A l1, l2: A E1: IsLimit x l1 E2: IsLimit x l2
l1 = l2
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A x: Approximation A l1, l2: A E1: IsLimit x l1 E2: IsLimit x l2
foralle : Q+, close e l1 l2
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A x: Approximation A l1, l2: A E1: IsLimit x l1 E2: IsLimit x l2 e: Q+
close e l1 l2
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A x: Approximation A l1, l2: A E1: IsLimit x l1 E2: IsLimit x l2 e: Q+
close
((e / 2) / 2 + (e / 2) / 2 +
((e / 2) / 2 + (e / 2) / 2)) l1 l2
apply triangular with (x (e / 2 / 2));[symmetry;apply E1|apply E2].Qed.
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A
forall (y : Approximation A) (ly : A),
IsLimit y ly ->
forall (u : A) (ed : Q+),
close e u (y d) -> close (e + d) u ly
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A
forall (y : Approximation A) (ly : A),
IsLimit y ly ->
forall (u : A) (ed : Q+),
close e u (y d) -> close (e + d) u ly
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A y: Approximation A ly: A E1: IsLimit y ly u: A e, d: Q+ xi: close e u (y d)
close (e + d) u ly
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A y: Approximation A ly: A E1: IsLimit y ly u: A e, d: Q+ xi: close e u (y d)
{d0 : Q+ &
{d' : Q+ & ((e = plus d0 d') * close d0 u (y d))%type}} ->
close (e + d) u ly
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A y: Approximation A ly: A E1: IsLimit y ly u: A e, d: Q+ xi: close e u (y d) d0, d': Q+ He: e = d0 + d' E2: close d0 u (y d)
close (e + d) u ly
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A y: Approximation A ly: A E1: IsLimit y ly u: A e, d: Q+ xi: close e u (y d) d0, d': Q+ He: e = d0 + d' E2: close d0 u (y d) E3: close (d0 + (d' + d)) u ly
close (e + d) u ly
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A y: Approximation A ly: A E1: IsLimit y ly u: A e, d: Q+ xi: close e u (y d) d0, d': Q+ He: e = d0 + d' E2: close d0 u (y d) E3: close (d0 + (d' + d)) u ly
e + d = d0 + (d' + d)
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A y: Approximation A ly: A E1: IsLimit y ly u: A e, d: Q+ xi: close e u (y d) d0, d': Q+ He: e = d0 + d' E2: close d0 u (y d) E3: close (d0 + (d' + d)) u ly
d0 + d' + d = d0 + (d' + d)
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A y: Approximation A ly: A E1: IsLimit y ly u: A e, d: Q+ xi: close e u (y d) d0, d': Q+ He: e = d0 + d' E2: close d0 u (y d) E3: close (d0 + (d' + d)) u ly
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A Alim: Lim A CauchyComplete0: CauchyComplete A
forall (u : A) (y : Approximation A) (ed : Q+),
close e u (y d) -> close (e + d) u (lim y)
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A Alim: Lim A CauchyComplete0: CauchyComplete A
forall (u : A) (y : Approximation A) (ed : Q+),
close e u (y d) -> close (e + d) u (lim y)
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A Alim: Lim A CauchyComplete0: CauchyComplete A u: A y: Approximation A
IsLimit y (lim y)
apply cauchy_complete.Qed.
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A Alim: Lim A CauchyComplete0: CauchyComplete A x, y: Approximation A e, d, n, e': Q+
e = d + n + e' ->
close e' (x d) (y n) -> close e (lim x) (lim y)
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A Alim: Lim A CauchyComplete0: CauchyComplete A x, y: Approximation A e, d, n, e': Q+
e = d + n + e' ->
close e' (x d) (y n) -> close e (lim x) (lim y)
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A Alim: Lim A CauchyComplete0: CauchyComplete A x, y: Approximation A e, d, n, e': Q+ He: e = d + n + e' xi: close e' (x d) (y n)
close e (lim x) (lim y)
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A Alim: Lim A CauchyComplete0: CauchyComplete A x, y: Approximation A e, d, n, e': Q+ He: e = d + n + e' xi: close e' (x d) (y n)
close (d + n + e') (lim x) (lim y)
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A Alim: Lim A CauchyComplete0: CauchyComplete A x, y: Approximation A e, d, n, e': Q+ He: e = d + n + e' xi: close e' (x d) (y n)
close (e' + d + n) (lim x) (lim y)
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A Alim: Lim A CauchyComplete0: CauchyComplete A x, y: Approximation A e, d, n, e': Q+ He: e = d + n + e' xi: close e' (x d) (y n)
close (e' + d) (lim x) (y n)
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A Alim: Lim A CauchyComplete0: CauchyComplete A x, y: Approximation A e, d, n, e': Q+ He: e = d + n + e' xi: close e' (x d) (y n)
close (e' + d) (y n) (lim x)
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A Alim: Lim A CauchyComplete0: CauchyComplete A x, y: Approximation A e, d, n, e': Q+ He: e = d + n + e' xi: close e' (x d) (y n)
close e' (y n) (x d)
symmetry;trivial.Qed.
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A Alim: Lim A CauchyComplete0: CauchyComplete A
forall (xy : Approximation A) (e : Q+),
(foralldn : Q+, close (e + d) (x n) (y n)) ->
foralld : Q+, close (e + d) (lim x) (lim y)
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A Alim: Lim A CauchyComplete0: CauchyComplete A
forall (xy : Approximation A) (e : Q+),
(foralldn : Q+, close (e + d) (x n) (y n)) ->
foralld : Q+, close (e + d) (lim x) (lim y)
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A Alim: Lim A CauchyComplete0: CauchyComplete A x, y: Approximation A e: Q+ E: foralldn : Q+, close (e + d) (x n) (y n) d: Q+
close (e + d) (lim x) (lim y)
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A Alim: Lim A CauchyComplete0: CauchyComplete A x, y: Approximation A e: Q+ E: foralldn : Q+, close (e + d) (x n) (y n) d: Q+
e + d = d / 3 + d / 3 + (e + d / 3)
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A Alim: Lim A CauchyComplete0: CauchyComplete A x, y: Approximation A e: Q+ E: foralldn : Q+, close (e + d) (x n) (y n) d: Q+
e + d = e + 3 / 3 * d
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A Alim: Lim A CauchyComplete0: CauchyComplete A x, y: Approximation A e: Q+ E: foralldn : Q+, close (e + d) (x n) (y n) d: Q+
e + 3 / 3 * d = d / 3 + d / 3 + (e + d / 3)
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A Alim: Lim A CauchyComplete0: CauchyComplete A x, y: Approximation A e: Q+ E: foralldn : Q+, close (e + d) (x n) (y n) d: Q+
e + d = e + 3 / 3 * d
rewrite pos_recip_r,Qpos_mult_1_l;trivial.
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A Alim: Lim A CauchyComplete0: CauchyComplete A x, y: Approximation A e: Q+ E: foralldn : Q+, close (e + d) (x n) (y n) d: Q+
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A B: Type Bclose: Closeness B PreMetric1: PreMetric B Blim: Lim B CauchyComplete0: CauchyComplete B s: Approximation (A -> B) L: Q+ H: foralle : Q+, Lipschitz (s e) L
Lipschitz (lim s) L
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A B: Type Bclose: Closeness B PreMetric1: PreMetric B Blim: Lim B CauchyComplete0: CauchyComplete B s: Approximation (A -> B) L: Q+ H: foralle : Q+, Lipschitz (s e) L
Lipschitz (lim s) L
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A B: Type Bclose: Closeness B PreMetric1: PreMetric B Blim: Lim B CauchyComplete0: CauchyComplete B s: Approximation (A -> B) L: Q+ H: foralle : Q+, Lipschitz (s e) L e: Q+ x, y: A xi: close e x y
close (L * e) (lim s x) (lim s y)
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A B: Type Bclose: Closeness B PreMetric1: PreMetric B Blim: Lim B CauchyComplete0: CauchyComplete B s: Approximation (A -> B) L: Q+ H: foralle : Q+, Lipschitz (s e) L e: Q+ x, y: A d, d': Q+ E: e = d + d' xi: close d x y
close (L * e) (lim s x) (lim s y)
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A B: Type Bclose: Closeness B PreMetric1: PreMetric B Blim: Lim B CauchyComplete0: CauchyComplete B s: Approximation (A -> B) L: Q+ H: foralle : Q+, Lipschitz (s e) L e: Q+ x, y: A d, d': Q+ E: e = d + d' xi: close d x y
close (L * d + L * d') (lim s x) (lim s y)
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A B: Type Bclose: Closeness B PreMetric1: PreMetric B Blim: Lim B CauchyComplete0: CauchyComplete B s: Approximation (A -> B) L: Q+ H: foralle : Q+, Lipschitz (s e) L e: Q+ x, y: A d, d': Q+ E: e = d + d' xi: close d x y
foralld0n : Q+,
close (L * d + d0)
({|
approximate := fune : Q+ => s e x;
approx_equiv :=
funde : Q+ =>
close_arrow_apply (d + e) (s d) (s e)
(approx_equiv (A -> B) s d e) x
|} n)
({|
approximate := fune : Q+ => s e y;
approx_equiv :=
funde : Q+ =>
close_arrow_apply (d + e) (s d) (s e)
(approx_equiv (A -> B) s d e) y
|} n)
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A B: Type Bclose: Closeness B PreMetric1: PreMetric B Blim: Lim B CauchyComplete0: CauchyComplete B s: Approximation (A -> B) L: Q+ H: foralle : Q+, Lipschitz (s e) L x, y: A d: Q+ xi: close d x y
foralld0n : Q+,
close (L * d + d0)
({|
approximate := fune : Q+ => s e x;
approx_equiv :=
funde : Q+ =>
close_arrow_apply (d + e) (s d) (s e)
(approx_equiv (A -> B) s d e) x
|} n)
({|
approximate := fune : Q+ => s e y;
approx_equiv :=
funde : Q+ =>
close_arrow_apply (d + e) (s d) (s e)
(approx_equiv (A -> B) s d e) y
|} n)
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A B: Type Bclose: Closeness B PreMetric1: PreMetric B Blim: Lim B CauchyComplete0: CauchyComplete B s: Approximation (A -> B) L: Q+ H: foralle : Q+, Lipschitz (s e) L x, y: A d: Q+ xi: close d x y d', n: Q+
close (L * d + d')
({|
approximate := fune : Q+ => s e x;
approx_equiv :=
funde : Q+ =>
close_arrow_apply (d + e) (s d) (s e)
(approx_equiv (A -> B) s d e) x
|} n)
({|
approximate := fune : Q+ => s e y;
approx_equiv :=
funde : Q+ =>
close_arrow_apply (d + e) (s d) (s e)
(approx_equiv (A -> B) s d e) y
|} n)
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A B: Type Bclose: Closeness B PreMetric1: PreMetric B Blim: Lim B CauchyComplete0: CauchyComplete B s: Approximation (A -> B) L: Q+ H: foralle : Q+, Lipschitz (s e) L x, y: A d: Q+ xi: close d x y d', n: Q+
close (L * d + d') (s n x) (s n y)
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A B: Type Bclose: Closeness B PreMetric1: PreMetric B Blim: Lim B CauchyComplete0: CauchyComplete B s: Approximation (A -> B) L: Q+ H: foralle : Q+, Lipschitz (s e) L x, y: A d: Q+ xi: close d x y d', n: Q+
close (L * d) (s n x) (s n y)
funext: Funext univalence: Univalence A: Type Aclose: Closeness A PreMetric0: PreMetric A B: Type Bclose: Closeness B PreMetric1: PreMetric B Blim: Lim B CauchyComplete0: CauchyComplete B s: Approximation (A -> B) L: Q+ H: foralle : Q+, Lipschitz (s e) L x, y: A d: Q+ xi: close d x y d', n: Q+
close d x y
trivial.Qed.Endlipschitz_lim.Endcontents.Arguments rounded_le {_ _ A _ _} e u v _ d _.Arguments non_expanding {A _ B _} f {_ e x y} _.Arguments lipschitz {A _ B _} f L {_ e x y} _.Arguments uniform {A _ B _} f mu {_} _ _ _ _.Arguments continuous {A _ B _} f {_} _ _.Arguments map2_nonexpanding {A _ B _ C _ D _} f g {_ _} e x y xi.Arguments map2_lipschitz {_ _ A _ B _ C _ D _} f g {_ _} Lf Lg {_ _} e x y xi.Arguments map2_continuous {_ _ A _ B _ C _ D _} f g {_ _ _ _} u e.Arguments Interval_close {_ _ _} _ _ _ _ _ /.Arguments Lim A {_}.Arguments lim {A _ _} _.Arguments Approximation A {_}.Arguments Build_Approximation {A _} _ _.Arguments approximate {A _} _ _.Arguments approx_equiv {A _} _ _ _.Arguments CauchyComplete A {_ _}.Arguments arrow_lim {A B _ _ _} _ / _.