Conditionally complete linear ordered fields #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
This file shows that the reals are unique, or, more formally, given a type satisfying the common
axioms of the reals (field, conditionally complete, linearly ordered) that there is an isomorphism
preserving these properties to the reals. This is rat.induced_order_ring_iso
. Moreover this
isomorphism is unique.
We introduce definitions of conditionally complete linear ordered fields, and show all such are
archimedean. We also construct the natural map from a linear_ordered_field
to such a field.
Main definitions #
conditionally_complete_linear_ordered_field
: A field satisfying the standard axiomatization of the real numbers, being a Dedekind complete and linear ordered field.linear_ordered_field.induced_map
: A (unique) map from any archimedean linear ordered field to a conditionally complete linear ordered field. Various bundlings are available.
Main results #
unique.order_ring_hom
: Uniqueness oforder_ring_hom
s from an archimedean linear ordered field to a conditionally complete linear ordered field.unique.order_ring_iso
: Uniqueness oforder_ring_iso
s between two conditionally complete linearly ordered fields.
References #
- https://mathoverflow.net/questions/362991/ who-first-characterized-the-real-numbers-as-the-unique-complete-ordered-field
Tags #
reals, conditionally complete, ordered field, uniqueness
- add : α → α → α
- add_assoc : ∀ (a b c : α), a + b + c = a + (b + c)
- zero : α
- zero_add : ∀ (a : α), 0 + a = a
- add_zero : ∀ (a : α), a + 0 = a
- nsmul : ℕ → α → α
- nsmul_zero' : (∀ (x : α), conditionally_complete_linear_ordered_field.nsmul 0 x = 0) . "try_refl_tac"
- nsmul_succ' : (∀ (n : ℕ) (x : α), conditionally_complete_linear_ordered_field.nsmul n.succ x = x + conditionally_complete_linear_ordered_field.nsmul n x) . "try_refl_tac"
- neg : α → α
- sub : α → α → α
- sub_eq_add_neg : (∀ (a b : α), a - b = a + -b) . "try_refl_tac"
- zsmul : ℤ → α → α
- zsmul_zero' : (∀ (a : α), conditionally_complete_linear_ordered_field.zsmul 0 a = 0) . "try_refl_tac"
- zsmul_succ' : (∀ (n : ℕ) (a : α), conditionally_complete_linear_ordered_field.zsmul (int.of_nat n.succ) a = a + conditionally_complete_linear_ordered_field.zsmul (int.of_nat n) a) . "try_refl_tac"
- zsmul_neg' : (∀ (n : ℕ) (a : α), conditionally_complete_linear_ordered_field.zsmul -[1+ n] a = -conditionally_complete_linear_ordered_field.zsmul ↑(n.succ) a) . "try_refl_tac"
- add_left_neg : ∀ (a : α), -a + a = 0
- add_comm : ∀ (a b : α), a + b = b + a
- int_cast : ℤ → α
- nat_cast : ℕ → α
- one : α
- nat_cast_zero : conditionally_complete_linear_ordered_field.nat_cast 0 = 0 . "control_laws_tac"
- nat_cast_succ : (∀ (n : ℕ), conditionally_complete_linear_ordered_field.nat_cast (n + 1) = conditionally_complete_linear_ordered_field.nat_cast n + 1) . "control_laws_tac"
- int_cast_of_nat : (∀ (n : ℕ), conditionally_complete_linear_ordered_field.int_cast ↑n = ↑n) . "control_laws_tac"
- int_cast_neg_succ_of_nat : (∀ (n : ℕ), conditionally_complete_linear_ordered_field.int_cast (-↑(n + 1)) = -↑(n + 1)) . "control_laws_tac"
- mul : α → α → α
- mul_assoc : ∀ (a b c : α), a * b * c = a * (b * c)
- one_mul : ∀ (a : α), 1 * a = a
- mul_one : ∀ (a : α), a * 1 = a
- npow : ℕ → α → α
- npow_zero' : (∀ (x : α), conditionally_complete_linear_ordered_field.npow 0 x = 1) . "try_refl_tac"
- npow_succ' : (∀ (n : ℕ) (x : α), conditionally_complete_linear_ordered_field.npow n.succ x = x * conditionally_complete_linear_ordered_field.npow n x) . "try_refl_tac"
- left_distrib : ∀ (a b c : α), a * (b + c) = a * b + a * c
- right_distrib : ∀ (a b c : α), (a + b) * c = a * c + b * c
- le : α → α → Prop
- lt : α → α → Prop
- le_refl : ∀ (a : α), a ≤ a
- le_trans : ∀ (a b c : α), a ≤ b → b ≤ c → a ≤ c
- lt_iff_le_not_le : (∀ (a b : α), a < b ↔ a ≤ b ∧ ¬b ≤ a) . "order_laws_tac"
- le_antisymm : ∀ (a b : α), a ≤ b → b ≤ a → a = b
- add_le_add_left : ∀ (a b : α), a ≤ b → ∀ (c : α), c + a ≤ c + b
- exists_pair_ne : ∃ (x y : α), x ≠ y
- zero_le_one : 0 ≤ 1
- mul_pos : ∀ (a b : α), 0 < a → 0 < b → 0 < a * b
- le_total : ∀ (a b : α), a ≤ b ∨ b ≤ a
- decidable_le : decidable_rel has_le.le
- decidable_eq : decidable_eq α
- decidable_lt : decidable_rel has_lt.lt
- sup : α → α → α
- max_def : conditionally_complete_linear_ordered_field.sup = max_default . "reflexivity"
- inf : α → α → α
- min_def : conditionally_complete_linear_ordered_field.inf = min_default . "reflexivity"
- mul_comm : ∀ (a b : α), a * b = b * a
- inv : α → α
- div : α → α → α
- div_eq_mul_inv : (∀ (a b : α), a / b = a * b⁻¹) . "try_refl_tac"
- zpow : ℤ → α → α
- zpow_zero' : (∀ (a : α), conditionally_complete_linear_ordered_field.zpow 0 a = 1) . "try_refl_tac"
- zpow_succ' : (∀ (n : ℕ) (a : α), conditionally_complete_linear_ordered_field.zpow (int.of_nat n.succ) a = a * conditionally_complete_linear_ordered_field.zpow (int.of_nat n) a) . "try_refl_tac"
- zpow_neg' : (∀ (n : ℕ) (a : α), conditionally_complete_linear_ordered_field.zpow -[1+ n] a = (conditionally_complete_linear_ordered_field.zpow ↑(n.succ) a)⁻¹) . "try_refl_tac"
- rat_cast : ℚ → α
- mul_inv_cancel : ∀ {a : α}, a ≠ 0 → a * a⁻¹ = 1
- inv_zero : 0⁻¹ = 0
- rat_cast_mk : (∀ (a : ℤ) (b : ℕ) (h1 : 0 < b) (h2 : a.nat_abs.coprime b), conditionally_complete_linear_ordered_field.rat_cast {num := a, denom := b, pos := h1, cop := h2} = ↑a * (↑b)⁻¹) . "try_refl_tac"
- qsmul : ℚ → α → α
- qsmul_eq_mul' : (∀ (a : ℚ) (x : α), conditionally_complete_linear_ordered_field.qsmul a x = conditionally_complete_linear_ordered_field.rat_cast a * x) . "try_refl_tac"
- le_sup_left : ∀ (a b : α), a ≤ a ⊔ b
- le_sup_right : ∀ (a b : α), b ≤ a ⊔ b
- sup_le : ∀ (a b c : α), a ≤ c → b ≤ c → a ⊔ b ≤ c
- inf_le_left : ∀ (a b : α), a ⊓ b ≤ a
- inf_le_right : ∀ (a b : α), a ⊓ b ≤ b
- le_inf : ∀ (a b c : α), a ≤ b → a ≤ c → a ≤ b ⊓ c
- Sup : set α → α
- Inf : set α → α
- le_cSup : ∀ (s : set α) (a : α), bdd_above s → a ∈ s → a ≤ conditionally_complete_linear_ordered_field.Sup s
- cSup_le : ∀ (s : set α) (a : α), s.nonempty → a ∈ upper_bounds s → conditionally_complete_linear_ordered_field.Sup s ≤ a
- cInf_le : ∀ (s : set α) (a : α), bdd_below s → a ∈ s → conditionally_complete_linear_ordered_field.Inf s ≤ a
- le_cInf : ∀ (s : set α) (a : α), s.nonempty → a ∈ lower_bounds s → a ≤ conditionally_complete_linear_ordered_field.Inf s
A field which is both linearly ordered and conditionally complete with respect to the order. This axiomatizes the reals.
Instances of this typeclass
Instances of other typeclasses for conditionally_complete_linear_ordered_field
- conditionally_complete_linear_ordered_field.has_sizeof_inst
Any conditionally complete linearly ordered field is archimedean.
The reals are a conditionally complete linearly ordered field.
Equations
- real.conditionally_complete_linear_ordered_field = {add := linear_ordered_field.add real.linear_ordered_field, add_assoc := _, zero := linear_ordered_field.zero real.linear_ordered_field, zero_add := _, add_zero := _, nsmul := linear_ordered_field.nsmul real.linear_ordered_field, nsmul_zero' := _, nsmul_succ' := _, neg := linear_ordered_field.neg real.linear_ordered_field, sub := linear_ordered_field.sub real.linear_ordered_field, sub_eq_add_neg := _, zsmul := linear_ordered_field.zsmul real.linear_ordered_field, zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _, int_cast := linear_ordered_field.int_cast real.linear_ordered_field, nat_cast := linear_ordered_field.nat_cast real.linear_ordered_field, one := linear_ordered_field.one real.linear_ordered_field, nat_cast_zero := _, nat_cast_succ := _, int_cast_of_nat := _, int_cast_neg_succ_of_nat := _, mul := linear_ordered_field.mul real.linear_ordered_field, mul_assoc := _, one_mul := _, mul_one := _, npow := linear_ordered_field.npow real.linear_ordered_field, npow_zero' := _, npow_succ' := _, left_distrib := _, right_distrib := _, le := linear_ordered_field.le real.linear_ordered_field, lt := linear_ordered_field.lt real.linear_ordered_field, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, add_le_add_left := _, exists_pair_ne := _, zero_le_one := _, mul_pos := _, le_total := _, decidable_le := linear_ordered_field.decidable_le real.linear_ordered_field, decidable_eq := linear_ordered_field.decidable_eq real.linear_ordered_field, decidable_lt := linear_ordered_field.decidable_lt real.linear_ordered_field, sup := conditionally_complete_linear_order.sup real.conditionally_complete_linear_order, max_def := _, inf := conditionally_complete_linear_order.inf real.conditionally_complete_linear_order, min_def := _, mul_comm := _, inv := linear_ordered_field.inv real.linear_ordered_field, div := linear_ordered_field.div real.linear_ordered_field, div_eq_mul_inv := _, zpow := linear_ordered_field.zpow real.linear_ordered_field, zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, rat_cast := linear_ordered_field.rat_cast real.linear_ordered_field, mul_inv_cancel := _, inv_zero := _, rat_cast_mk := _, qsmul := linear_ordered_field.qsmul real.linear_ordered_field, qsmul_eq_mul' := _, le_sup_left := _, le_sup_right := _, sup_le := _, inf_le_left := _, inf_le_right := _, le_inf := _, Sup := conditionally_complete_linear_order.Sup real.conditionally_complete_linear_order, Inf := conditionally_complete_linear_order.Inf real.conditionally_complete_linear_order, le_cSup := _, cSup_le := _, cInf_le := _, le_cInf := _}
Rational cut map #
The idea is that a conditionally complete linear ordered field is fully characterized by its copy of
the rationals. Hence we define rat.cut_map β : α → set β
which sends a : α
to the "rationals in
β
" that are less than a
.
The lower cut of rationals inside a linear ordered field that are less than a given element of another linear ordered field.
The induced order preserving function from a linear ordered field to a conditionally complete linear ordered field, defined by taking the Sup in the codomain of all the rationals less than the input.
Equations
Preparatory lemma for induced_ring_hom
.
Preparatory lemma for induced_ring_hom
.
induced_map
as an additive homomorphism.
Equations
- linear_ordered_field.induced_add_hom α β = {to_fun := linear_ordered_field.induced_map α β _inst_2, map_zero' := _, map_add' := _}
induced_map
as an order_ring_hom
.
Equations
- linear_ordered_field.induced_order_ring_hom α β = {to_ring_hom := {to_fun := ((linear_ordered_field.induced_add_hom α β).mk_ring_hom_of_mul_self_of_two_ne_zero _ _ _).to_fun, map_one' := _, map_mul' := _, map_zero' := _, map_add' := _}, monotone' := _}
The isomorphism of ordered rings between two conditionally complete linearly ordered fields.
Equations
- linear_ordered_field.induced_order_ring_iso β γ = {to_ring_equiv := {to_fun := (linear_ordered_field.induced_order_ring_hom β γ).to_ring_hom.to_fun, inv_fun := linear_ordered_field.induced_map γ β _inst_2, left_inv := _, right_inv := _, map_mul' := _, map_add' := _}, map_le_map_iff' := _}
There is a unique ordered ring homomorphism from an archimedean linear ordered field to a conditionally complete linear ordered field.
There is a unique ordered ring isomorphism between two conditionally complete linear ordered fields.
There exists no nontrivial ring homomorphism ℝ →+* ℝ
.
Equations
- real.ring_hom.unique = {to_inhabited := {default := ring_hom.id ℝ (non_assoc_ring.to_non_assoc_semiring ℝ)}, uniq := real.ring_hom.unique._proof_1}