Cauchy sequences #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
A basic theory of Cauchy sequences, used in the construction of the reals and p-adic numbers. Where applicable, lemmas that will be reused in other contexts have been stated in extra generality.
There are other "versions" of Cauchyness in the library, in particular Cauchy filters in topology. This is a concrete implementation that is useful for simplicity and computability reasons.
Important definitions #
is_cau_seq
: a predicate that saysf : ℕ → β
is Cauchy.cau_seq
: the type of Cauchy sequences valued in typeβ
with respect to an absolute value functionabv
.
Tags #
sequence, cauchy, abs val, absolute value
cau_seq β abv
is the type of β
-valued Cauchy sequences, with respect to the absolute value
function abv
.
Equations
- cau_seq β abv = {f // is_cau_seq abv f}
Instances for cau_seq
- cau_seq.has_coe_to_fun
- cau_seq.has_add
- cau_seq.has_zero
- cau_seq.has_one
- cau_seq.inhabited
- cau_seq.has_mul
- cau_seq.has_neg
- cau_seq.has_sub
- cau_seq.has_smul
- cau_seq.is_scalar_tower
- cau_seq.add_group
- cau_seq.add_group_with_one
- cau_seq.nat.has_pow
- cau_seq.ring
- cau_seq.comm_ring
- cau_seq.equiv
- cau_seq.has_lt
- cau_seq.has_le
- cau_seq.preorder
- cau_seq.has_sup
- cau_seq.has_inf
Equations
- cau_seq.has_coe_to_fun = {coe := subtype.val (λ (f : ℕ → β), is_cau_seq abv f)}
The constant Cauchy sequence.
Equations
- cau_seq.const abv x = ⟨λ (i : ℕ), x, _⟩
Equations
- cau_seq.has_zero = {zero := cau_seq.const abv 0}
Equations
- cau_seq.has_one = {one := cau_seq.const abv 1}
Equations
- cau_seq.inhabited = {default := 0}
Equations
- cau_seq.add_group = function.injective.add_group coe cau_seq.add_group._proof_3 cau_seq.add_group._proof_4 cau_seq.coe_add cau_seq.coe_neg cau_seq.coe_sub cau_seq.add_group._proof_5 cau_seq.add_group._proof_6
Equations
- cau_seq.add_group_with_one = {int_cast := λ (n : ℤ), cau_seq.const abv ↑n, add := add_group.add cau_seq.add_group, add_assoc := _, zero := add_group.zero cau_seq.add_group, zero_add := _, add_zero := _, nsmul := add_group.nsmul cau_seq.add_group, nsmul_zero' := _, nsmul_succ' := _, neg := add_group.neg cau_seq.add_group, sub := add_group.sub cau_seq.add_group, sub_eq_add_neg := _, zsmul := add_group.zsmul cau_seq.add_group, zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, nat_cast := λ (n : ℕ), cau_seq.const abv ↑n, one := 1, nat_cast_zero := _, nat_cast_succ := _, int_cast_of_nat := _, int_cast_neg_succ_of_nat := _}
Equations
- cau_seq.ring = function.injective.ring coe cau_seq.ring._proof_3 cau_seq.ring._proof_4 cau_seq.ring._proof_5 cau_seq.coe_add cau_seq.coe_mul cau_seq.coe_neg cau_seq.coe_sub cau_seq.ring._proof_6 cau_seq.ring._proof_7 cau_seq.coe_pow cau_seq.ring._proof_8 cau_seq.ring._proof_9
Equations
- cau_seq.comm_ring = {add := ring.add cau_seq.ring, add_assoc := _, zero := ring.zero cau_seq.ring, zero_add := _, add_zero := _, nsmul := ring.nsmul cau_seq.ring, nsmul_zero' := _, nsmul_succ' := _, neg := ring.neg cau_seq.ring, sub := ring.sub cau_seq.ring, sub_eq_add_neg := _, zsmul := ring.zsmul cau_seq.ring, zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _, int_cast := ring.int_cast cau_seq.ring, nat_cast := ring.nat_cast cau_seq.ring, one := ring.one cau_seq.ring, nat_cast_zero := _, nat_cast_succ := _, int_cast_of_nat := _, int_cast_neg_succ_of_nat := _, mul := ring.mul cau_seq.ring, mul_assoc := _, one_mul := _, mul_one := _, npow := ring.npow cau_seq.ring, npow_zero' := _, npow_succ' := _, left_distrib := _, right_distrib := _, mul_comm := _}
Given a Cauchy sequence f
with nonzero limit, create a Cauchy sequence with values equal to
the inverses of the values of f
.
Equations
- cau_seq.has_lt = {lt := λ (f g : cau_seq α has_abs.abs), (g - f).pos}
Equations
- cau_seq.has_le = {le := λ (f g : cau_seq α has_abs.abs), f < g ∨ f ≈ g}
Equations
- cau_seq.preorder = {le := λ (f g : cau_seq α has_abs.abs), f < g ∨ f ≈ g, lt := has_lt.lt cau_seq.has_lt, le_refl := _, le_trans := _, lt_iff_le_not_le := _}
Equations
- cau_seq.has_sup = {sup := λ (f g : cau_seq α has_abs.abs), ⟨⇑f ⊔ ⇑g, _⟩}
Equations
- cau_seq.has_inf = {inf := λ (f g : cau_seq α has_abs.abs), ⟨⇑f ⊓ ⇑g, _⟩}
Note that distrib_lattice (cau_seq α abs)
is not true because there is no partial_order
.