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]
Sectioncauchy.Context (Q : Type).Context `{Rationals Q}.Context {Q_dec_paths : DecidablePaths Q}.Context {Qtriv : TrivialApart Q}.Context (F : Type).Context `{Forderedfield : OrderedField F}.Letqinc : Cast Q F := rationals_to_field Q F.Existing Instanceqinc.(* TODO The following two instances should probably come from the `Rationals` instance. *)Context (qinc_strong_presving : IsSemiRingStrongPreserving qinc).Existing Instanceqinc_strong_presving.Sectionsequence.Context (x : nat -> F).ClassCauchyModulus (M : Qpos Q -> nat) :=
cauchy_convergence : forallepsilon : Qpos Q, forallmn,
M epsilon <= m -> M epsilon <= n ->
- ' (' epsilon) < (x m) - (x n) < ' (' epsilon).ClassIsLimit (l : F) := is_limit
: forallepsilon : Qpos Q,
hexists (funN : nat => foralln : nat, N <= n ->
- ' (' epsilon) < l - x n < ' (' epsilon)).Endsequence.ClassIsComplete := is_complete
: forallx : nat -> F, forallM , CauchyModulus x M -> existsl, IsLimit x l.Sectiontheory.Context (x : nat -> F) {M} `{CauchyModulus x M}.
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q
x (M (epsilon / 2)) - ' (' epsilon) < l <
x (M (epsilon / 2)) + ' (' epsilon)
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q
x (M (epsilon / 2)) - ' (' epsilon) < l <
x (M (epsilon / 2)) + ' (' epsilon)
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q lim_close: {N : nat &
foralln : nat,
N ≤ n ->
- ' (' (epsilon / 2)) <
l - x n < ' (' (epsilon / 2))}
x (M (epsilon / 2)) - ' (' epsilon) < l <
x (M (epsilon / 2)) + ' (' epsilon)
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat isclose': foralln : nat,
N ≤ n ->
- ' (' (epsilon / 2)) <
l - x n < ' (' (epsilon / 2))
x (M (epsilon / 2)) - ' (' epsilon) < l <
x (M (epsilon / 2)) + ' (' epsilon)
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat isclose': foralln : nat,
N ≤ n ->
- ' (' (epsilon / 2)) <
l - x n < ' (' (epsilon / 2)) n:= Core.nat_max (M (epsilon / 2)) N: nat
x (M (epsilon / 2)) - ' (' epsilon) < l <
x (M (epsilon / 2)) + ' (' epsilon)
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat isclose': foralln : nat,
N ≤ n ->
- ' (' (epsilon / 2)) <
l - x n < ' (' (epsilon / 2)) n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n
x (M (epsilon / 2)) - ' (' epsilon) < l <
x (M (epsilon / 2)) + ' (' epsilon)
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat isclose': foralln : nat,
N ≤ n ->
- ' (' (epsilon / 2)) <
l - x n < ' (' (epsilon / 2)) n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n isclose: - ' (' (epsilon / 2)) <
l - x n < ' (' (epsilon / 2))
x (M (epsilon / 2)) - ' (' epsilon) < l <
x (M (epsilon / 2)) + ' (' epsilon)
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n isclose: - ' (' (epsilon / 2)) <
l - x n < ' (' (epsilon / 2))
x (M (epsilon / 2)) - ' (' epsilon) < l <
x (M (epsilon / 2)) + ' (' epsilon)
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n isclose: - ' (' (epsilon / 2)) <
l - x n < ' (' (epsilon / 2)) leMn: M (epsilon / 2) ≤ n
x (M (epsilon / 2)) - ' (' epsilon) < l <
x (M (epsilon / 2)) + ' (' epsilon)
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n isclose: - ' (' (epsilon / 2)) <
l - x n < ' (' (epsilon / 2)) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2)
x (M (epsilon / 2)) - ' (' epsilon) < l <
x (M (epsilon / 2)) + ' (' epsilon)
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n isclose: - ' (' (epsilon / 2)) <
l - x n < ' (' (epsilon / 2)) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - ' (' (epsilon / 2)) <
x n - x (M (epsilon / 2)) <
' (' (epsilon / 2))
x (M (epsilon / 2)) - ' (' epsilon) < l <
x (M (epsilon / 2)) + ' (' epsilon)
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n isclose: - ' (' epsilon / 2) < l - x n <
' (' epsilon / 2) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - ' (' epsilon / 2) <
x n - x (M (epsilon / 2)) <
' (' epsilon / 2)
x (M (epsilon / 2)) - ' (' epsilon) < l <
x (M (epsilon / 2)) + ' (' epsilon)
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n isclose: - (' (' epsilon) * ' (/ 2)) <
l - x n < ' (' epsilon) * ' (/ 2) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) * ' (/ 2)) <
x n - x (M (epsilon / 2)) <
' (' epsilon) * ' (/ 2)
x (M (epsilon / 2)) - ' (' epsilon) < l <
x (M (epsilon / 2)) + ' (' epsilon)
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n isclose: - (' (' epsilon) * ' (/ 2)) <
l - x n < ' (' epsilon) * ' (/ 2) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) * ' (/ 2)) <
x n - x (M (epsilon / 2)) <
' (' epsilon) * ' (/ 2)
' 2 = 2
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n isclose: - (' (' epsilon) * ' (/ 2)) <
l - x n < ' (' epsilon) * ' (/ 2) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) * ' (/ 2)) <
x n - x (M (epsilon / 2)) <
' (' epsilon) * ' (/ 2) eq22: ' 2 = 2
x (M (epsilon / 2)) - ' (' epsilon) < l <
x (M (epsilon / 2)) + ' (' epsilon)
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n isclose: - (' (' epsilon) * ' (/ 2)) <
l - x n < ' (' epsilon) * ' (/ 2) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) * ' (/ 2)) <
x n - x (M (epsilon / 2)) <
' (' epsilon) * ' (/ 2)
' 2 = 2
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n isclose: - (' (' epsilon) * ' (/ 2)) <
l - x n < ' (' epsilon) * ' (/ 2) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) * ' (/ 2)) <
x n - x (M (epsilon / 2)) <
' (' epsilon) * ' (/ 2)
' 1 + ' 1 = 2
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n isclose: - (' (' epsilon) * ' (/ 2)) <
l - x n < ' (' epsilon) * ' (/ 2) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) * ' (/ 2)) <
x n - x (M (epsilon / 2)) <
' (' epsilon) * ' (/ 2)
2 = 2
reflexivity.
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n isclose: - (' (' epsilon) * ' (/ 2)) <
l - x n < ' (' epsilon) * ' (/ 2) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) * ' (/ 2)) <
x n - x (M (epsilon / 2)) <
' (' epsilon) * ' (/ 2) eq22: ' 2 = 2
x (M (epsilon / 2)) - ' (' epsilon) < l <
x (M (epsilon / 2)) + ' (' epsilon)
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n isclose: - (' (' epsilon) * ' (/ 2)) <
l - x n < ' (' epsilon) * ' (/ 2) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) * ' (/ 2)) <
x n - x (M (epsilon / 2)) <
' (' epsilon) * ' (/ 2) eq22: ' 2 = 2 ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0
x (M (epsilon / 2)) - ' (' epsilon) < l <
x (M (epsilon / 2)) + ' (' epsilon)
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n isclose: - (' (' epsilon) * ' (/ 2)) <
l - x n < ' (' epsilon) * ' (/ 2) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) * ' (/ 2)) <
x n - x (M (epsilon / 2)) <
' (' epsilon) * ' (/ 2) eq22: ' 2 = 2 ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0
' 2 ≶ 0
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n isclose: - (' (' epsilon) * ' (/ 2)) <
l - x n < ' (' epsilon) * ' (/ 2) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) * ' (/ 2)) <
x n - x (M (epsilon / 2)) <
' (' epsilon) * ' (/ 2) eq22: ' 2 = 2 ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 ap20': ' 2 ≶ 0
x (M (epsilon / 2)) - ' (' epsilon) < l <
x (M (epsilon / 2)) + ' (' epsilon)
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n isclose: - (' (' epsilon) * ' (/ 2)) <
l - x n < ' (' epsilon) * ' (/ 2) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) * ' (/ 2)) <
x n - x (M (epsilon / 2)) <
' (' epsilon) * ' (/ 2) eq22: ' 2 = 2 ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0
' 2 ≶ 0
rewrite eq22; exact ap20.
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n isclose: - (' (' epsilon) * ' (/ 2)) <
l - x n < ' (' epsilon) * ' (/ 2) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) * ' (/ 2)) <
x n - x (M (epsilon / 2)) <
' (' epsilon) * ' (/ 2) eq22: ' 2 = 2 ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 ap20': ' 2 ≶ 0
x (M (epsilon / 2)) - ' (' epsilon) < l <
x (M (epsilon / 2)) + ' (' epsilon)
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20': ' 2 ≶ 0 isclose: - (' (' epsilon) // (' 2; ap20')) <
l - x n < ' (' epsilon) // (' 2; ap20') leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) // (' 2; ap20')) <
x n - x (M (epsilon / 2)) <
' (' epsilon) // (' 2; ap20') eq22: ' 2 = 2 ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0
x (M (epsilon / 2)) - ' (' epsilon) < l <
x (M (epsilon / 2)) + ' (' epsilon)
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20': ' 2 ≶ 0 isclose: - (' (' epsilon) // (' 2; ap20')) <
l - x n < ' (' epsilon) // (' 2; ap20') leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) // (' 2; ap20')) <
x n - x (M (epsilon / 2)) <
' (' epsilon) // (' 2; ap20') eq22: ' 2 = 2 ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0
recip' (' 2) ap20' = recip' 2 ap20
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20': ' 2 ≶ 0 isclose: - (' (' epsilon) // (' 2; ap20')) <
l - x n < ' (' epsilon) // (' 2; ap20') leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) // (' 2; ap20')) <
x n - x (M (epsilon / 2)) <
' (' epsilon) // (' 2; ap20') eq22: ' 2 = 2 ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 eq_recip_22: recip' (' 2) ap20' = recip' 2 ap20
x (M (epsilon / 2)) - ' (' epsilon) < l <
x (M (epsilon / 2)) + ' (' epsilon)
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20': ' 2 ≶ 0 isclose: - (' (' epsilon) // (' 2; ap20')) <
l - x n < ' (' epsilon) // (' 2; ap20') leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) // (' 2; ap20')) <
x n - x (M (epsilon / 2)) <
' (' epsilon) // (' 2; ap20') eq22: ' 2 = 2 ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0
recip' (' 2) ap20' = recip' 2 ap20
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20': ' 2 ≶ 0 isclose: - (' (' epsilon) // (' 2; ap20')) <
l - x n < ' (' epsilon) // (' 2; ap20') leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) // (' 2; ap20')) <
x n - x (M (epsilon / 2)) <
' (' epsilon) // (' 2; ap20') eq22: ' 2 = 2 ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0
' 2 = 2
exact eq22.
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20': ' 2 ≶ 0 isclose: - (' (' epsilon) // (' 2; ap20')) <
l - x n < ' (' epsilon) // (' 2; ap20') leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) // (' 2; ap20')) <
x n - x (M (epsilon / 2)) <
' (' epsilon) // (' 2; ap20') eq22: ' 2 = 2 ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 eq_recip_22: recip' (' 2) ap20' = recip' 2 ap20
x (M (epsilon / 2)) - ' (' epsilon) < l <
x (M (epsilon / 2)) + ' (' epsilon)
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20': ' 2 ≶ 0 isclose: - (' (' epsilon) // (' 2; ap20')) <
l - x n < ' (' epsilon) // (' 2; ap20') leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) // (' 2; ap20')) <
x n - x (M (epsilon / 2)) <
' (' epsilon) // (' 2; ap20') eq22: ' 2 = 2 ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 eq_recip_22: // (' 2; ap20') = // (2; ap20)
x (M (epsilon / 2)) - ' (' epsilon) < l <
x (M (epsilon / 2)) + ' (' epsilon)
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20': ' 2 ≶ 0 ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 isclose: - (' (' epsilon) // (2; ap20)) <
l - x n < ' (' epsilon) // (2; ap20) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) // (2; ap20)) <
x n - x (M (epsilon / 2)) <
' (' epsilon) // (2; ap20) eq22: ' 2 = 2 eq_recip_22: // (' 2; ap20') = // (2; ap20)
x (M (epsilon / 2)) - ' (' epsilon) < l <
x (M (epsilon / 2)) + ' (' epsilon)
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 isclose: - (' (' epsilon) // (2; ap20)) <
l - x n < ' (' epsilon) // (2; ap20) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) // (2; ap20)) <
x n - x (M (epsilon / 2)) <
' (' epsilon) // (2; ap20)
x (M (epsilon / 2)) - ' (' epsilon) < l <
x (M (epsilon / 2)) + ' (' epsilon)
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 isclose: - (' (' epsilon) // (2; ap20)) <
l - x n < ' (' epsilon) // (2; ap20) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) // (2; ap20)) <
x n - x (M (epsilon / 2)) <
' (' epsilon) // (2; ap20)
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 isclose: - (' (' epsilon) // (2; ap20)) <
l - x n < ' (' epsilon) // (2; ap20) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) // (2; ap20)) <
x n - x (M (epsilon / 2)) <
' (' epsilon) // (2; ap20) eps_recip_2:= ' (' epsilon) * recip' 2 ap20: F
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 isclose: - (' (' epsilon) // (2; ap20)) <
l - x n < ' (' epsilon) // (2; ap20) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) // (2; ap20)) <
x n - x (M (epsilon / 2)) <
' (' epsilon) // (2; ap20) eps_recip_2:= ' (' epsilon) * recip' 2 ap20: F
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 isclose: - (' (' epsilon) // (2; ap20)) <
l - x n < ' (' epsilon) // (2; ap20) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) // (2; ap20)) <
x n - x (M (epsilon / 2)) <
' (' epsilon) // (2; ap20) eps_recip_2:= ' (' epsilon) * recip' 2 ap20: F
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 isclose: - (' (' epsilon) // (2; ap20)) <
l - x n < ' (' epsilon) // (2; ap20) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) // (2; ap20)) <
x n - x (M (epsilon / 2)) <
' (' epsilon) // (2; ap20) eps_recip_2:= ' (' epsilon) // (2; ap20): F
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 isclose: - (' (' epsilon) // (2; ap20)) <
l - x n < ' (' epsilon) // (2; ap20) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) x_close: - (' (' epsilon) // (2; ap20)) <
x n - x (M (epsilon / 2)) <
' (' epsilon) // (2; ap20) eps_recip_2:= ' (' epsilon) // (2; ap20): F xMeps2:= x (M (epsilon / 2)): F
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 isclose: - (' (' epsilon) // (2; ap20)) <
l - x n < ' (' epsilon) // (2; ap20) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F x_close: - (' (' epsilon) // (2; ap20)) <
x n - xMeps2 < ' (' epsilon) // (2; ap20) eps_recip_2:= ' (' epsilon) // (2; ap20): F
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 isclose: - (' (' epsilon) // (2; ap20)) <
l - x n < ' (' epsilon) // (2; ap20) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F x_close: - (' (' epsilon) // (2; ap20)) <
x n - xMeps2 < ' (' epsilon) // (2; ap20) eps_recip_2:= ' (' epsilon) // (2; ap20): F
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 isclose: - (' (' epsilon) // (2; ap20)) <
l - x n < ' (' epsilon) // (2; ap20) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F x_close: - (' (' epsilon) // (2; ap20)) <
x n - xMeps2 < ' (' epsilon) // (2; ap20) eps_recip_2:= ' (' epsilon) // (2; ap20): F
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 isclose: - (' (' epsilon) // (2; ap20)) <
l - x n < ' (' epsilon) // (2; ap20) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F x_close: - (' (' epsilon) // (2; ap20)) <
x n - xMeps2 < ' (' epsilon) // (2; ap20) eps_recip_2:= ' (' epsilon) // (2; ap20): F
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 isclose: - (' (' epsilon) // (2; ap20)) <
l - x n < ' (' epsilon) // (2; ap20) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F x_close: - (' (' epsilon) // (2; ap20)) <
x n - xMeps2 < ' (' epsilon) // (2; ap20) eps_recip_2:= ' (' epsilon) // (2; ap20): F
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 isclose: - (' (' epsilon) // (2; ap20)) <
l - x n < ' (' epsilon) // (2; ap20) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F x_close: - (' (' epsilon) // (2; ap20)) <
x n - xMeps2 < ' (' epsilon) // (2; ap20) eps_recip_2:= ' (' epsilon) // (2; ap20): F
xMeps2 +
(-
(' (' epsilon) *
recip' 2 (positive_apart_zero 2 lt_0_2)) -
' (' epsilon) *
recip' 2 (positive_apart_zero 2 lt_0_2)) - x n <
l - x n
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 isclose: - (' (' epsilon) // (2; ap20)) <
l - x n < ' (' epsilon) // (2; ap20) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F x_close: - (' (' epsilon) // (2; ap20)) <
x n - xMeps2 < ' (' epsilon) // (2; ap20) eps_recip_2:= ' (' epsilon) // (2; ap20): F
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F x_close: - (' (' epsilon) // (2; ap20)) <
x n - xMeps2 < ' (' epsilon) // (2; ap20) eps_recip_2:= ' (' epsilon) // (2; ap20): F
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F x_close: - (' (' epsilon) // (2; ap20)) <
x n - xMeps2 < ' (' epsilon) // (2; ap20) eps_recip_2:= ' (' epsilon) // (2; ap20): F
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: - eps_recip_2 < x n - xMeps2 < eps_recip_2
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: - eps_recip_2 + xMeps2 < x n
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: xMeps2 - eps_recip_2 < x n
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: xMeps2 < x n + eps_recip_2
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: xMeps2 < eps_recip_2 + x n
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: xMeps2 - x n < eps_recip_2
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: xMeps2 - x n < eps_recip_2
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: xMeps2 - x n < eps_recip_2
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: xMeps2 - x n < eps_recip_2
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: xMeps2 - x n < eps_recip_2
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: xMeps2 - x n < eps_recip_2
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: xMeps2 - x n < eps_recip_2
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: xMeps2 - x n < eps_recip_2
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: xMeps2 - x n < eps_recip_2
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: xMeps2 - x n < eps_recip_2
xMeps2 - x n - eps_recip_2 + eps_recip_2 < eps_recip_2
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: xMeps2 - x n < eps_recip_2
xMeps2 - x n + (- eps_recip_2 + eps_recip_2) <
eps_recip_2
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: xMeps2 - x n < eps_recip_2
xMeps2 - x n < eps_recip_2
assumption.
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 isclose: - (' (' epsilon) // (2; ap20)) <
l - x n < ' (' epsilon) // (2; ap20) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F x_close: - (' (' epsilon) // (2; ap20)) <
x n - xMeps2 < ' (' epsilon) // (2; ap20) eps_recip_2:= ' (' epsilon) // (2; ap20): F
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 isclose: - (' (' epsilon) // (2; ap20)) <
l - x n < ' (' epsilon) // (2; ap20) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F x_close: - (' (' epsilon) // (2; ap20)) <
x n - xMeps2 < ' (' epsilon) // (2; ap20) eps_recip_2:= ' (' epsilon) // (2; ap20): F
l - x n <
xMeps2 +
(' (' epsilon) *
recip' 2 (positive_apart_zero 2 lt_0_2) +
' (' epsilon) *
recip' 2 (positive_apart_zero 2 lt_0_2)) - x n
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 isclose: - (' (' epsilon) // (2; ap20)) <
l - x n < ' (' epsilon) // (2; ap20) leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F x_close: - (' (' epsilon) // (2; ap20)) <
x n - xMeps2 < ' (' epsilon) // (2; ap20) eps_recip_2:= ' (' epsilon) // (2; ap20): F
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F x_close: - (' (' epsilon) // (2; ap20)) <
x n - xMeps2 < ' (' epsilon) // (2; ap20) eps_recip_2:= ' (' epsilon) // (2; ap20): F
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F x_close: - (' (' epsilon) // (2; ap20)) <
x n - xMeps2 < ' (' epsilon) // (2; ap20) eps_recip_2:= ' (' epsilon) // (2; ap20): F
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: - eps_recip_2 < x n - xMeps2 < eps_recip_2
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: x n - xMeps2 < eps_recip_2
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: x n < eps_recip_2 + xMeps2
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: x n < xMeps2 + eps_recip_2
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: x n < xMeps2 + eps_recip_2
eps_recip_2 + x n <
xMeps2 +
(' (' epsilon) *
recip' 2 (positive_apart_zero 2 lt_0_2) +
' (' epsilon) *
recip' 2 (positive_apart_zero 2 lt_0_2)) - x n +
x n
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: x n < xMeps2 + eps_recip_2
eps_recip_2 + x n <
xMeps2 +
(' (' epsilon) *
recip' 2 (positive_apart_zero 2 lt_0_2) +
' (' epsilon) *
recip' 2 (positive_apart_zero 2 lt_0_2)) +
(- x n + x n)
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: x n < xMeps2 + eps_recip_2
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: x n < xMeps2 + eps_recip_2
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: x n < xMeps2 + eps_recip_2
Q: Type Aap: Apart Q Aplus: Plus Q Amult: Mult Q Azero: Zero Q Aone: One Q Aneg: Negate Q Arecip: DecRecip Q Ale: Le Q Alt: Lt Q U: RationalsToField Q H: Rationals Q Q_dec_paths: DecidablePaths Q Qtriv: TrivialApart Q F: Type Alt0: Lt F Ale0: Le F Aap0: Apart F Azero0: Zero F Aone0: One F Aplus0: Plus F Anegate: Negate F Amult0: Mult F Arecip0: Recip F Ajoin: Join F Ameet: Meet F Forderedfield: OrderedField F qinc:= rationals_to_field Q F: Cast Q F qinc_strong_presving: IsSemiRingStrongPreserving qinc x: nat -> F M: Qpos Q -> nat H0: CauchyModulus x M l: F islim: IsLimit x l epsilon: Qpos Q N: nat n:= Core.nat_max (M (epsilon / 2)) N: nat leNn: N ≤ n ap20:= positive_apart_zero 2 lt_0_2 : 2 ≶ 0: 2 ≶ 0 leMn: M (epsilon / 2) ≤ n leMM: M (epsilon / 2) ≤ M (epsilon / 2) xMeps2:= x (M (epsilon / 2)): F eps_recip_2:= ' (' epsilon) // (2; ap20): F x_close: x n < xMeps2 + eps_recip_2
x n <
xMeps2 +
' (' epsilon) *
recip' 2 (positive_apart_zero 2 lt_0_2)