Conditionally complete linear ordered fields #
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 LinearOrderedField.inducedOrderRingIso
for ℚ
.
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 LinearOrderedField
to such a field.
Main definitions #
ConditionallyCompleteLinearOrderedField
: A field satisfying the standard axiomatization of the real numbers, being a Dedekind complete and linear ordered field.LinearOrderedField.inducedMap
: A (unique) map from any archimedean linear ordered field to a conditionally complete linear ordered field. Various bundlings are available.
Main results #
LinearOrderedField.uniqueOrderRingHom
: Uniqueness ofOrderRingHom
s from an archimedean linear ordered field to a conditionally complete linear ordered field.LinearOrderedField.uniqueOrderRingIso
: Uniqueness ofOrderRingIso
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
A field which is both linearly ordered and conditionally complete with respect to the order. This axiomatizes the reals.
- add : α → α → α
- zero : α
- nsmul_zero : ∀ (x : α), AddMonoid.nsmul 0 x = 0
- nsmul_succ : ∀ (n : ℕ) (x : α), AddMonoid.nsmul (n + 1) x = AddMonoid.nsmul n x + x
- mul : α → α → α
- one : α
- natCast_zero : NatCast.natCast 0 = 0
- natCast_succ : ∀ (n : ℕ), NatCast.natCast (n + 1) = NatCast.natCast n + 1
- npow_zero : ∀ (x : α), Semiring.npow 0 x = 1
- npow_succ : ∀ (n : ℕ) (x : α), Semiring.npow (n + 1) x = Semiring.npow n x * x
- neg : α → α
- sub : α → α → α
- sub_eq_add_neg : ∀ (a b : α), a - b = a + -b
- zsmul_zero' : ∀ (a : α), Ring.zsmul 0 a = 0
- zsmul_succ' : ∀ (n : ℕ) (a : α), Ring.zsmul (↑n.succ) a = Ring.zsmul (↑n) a + a
- zsmul_neg' : ∀ (n : ℕ) (a : α), Ring.zsmul (Int.negSucc n) a = -Ring.zsmul (↑n.succ) a
- neg_add_cancel : ∀ (a : α), -a + a = 0
- intCast_ofNat : ∀ (n : ℕ), IntCast.intCast ↑n = ↑n
- intCast_negSucc : ∀ (n : ℕ), IntCast.intCast (Int.negSucc n) = -↑(n + 1)
- 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
- min : α → α → α
- max : α → α → α
- decidableLE : DecidableRel fun (x1 x2 : α) => x1 ≤ x2
- decidableLT : DecidableRel fun (x1 x2 : α) => x1 < x2
- compare_eq_compareOfLessAndEq : ∀ (a b : α), compare a b = compareOfLessAndEq a b
- inv : α → α
- div : α → α → α
- div_eq_mul_inv : ∀ (a b : α), a / b = a * b⁻¹
- zpow_zero' : ∀ (a : α), LinearOrderedField.zpow 0 a = 1
- zpow_succ' : ∀ (n : ℕ) (a : α), LinearOrderedField.zpow (↑n.succ) a = LinearOrderedField.zpow (↑n) a * a
- zpow_neg' : ∀ (n : ℕ) (a : α), LinearOrderedField.zpow (Int.negSucc n) a = (LinearOrderedField.zpow (↑n.succ) a)⁻¹
- mul_inv_cancel : ∀ (a : α), a ≠ 0 → a * a⁻¹ = 1
- nnratCast_def : ∀ (q : ℚ≥0), ↑q = ↑q.num / ↑q.den
- nnqsmul_def : ∀ (q : ℚ≥0) (a : α), LinearOrderedField.nnqsmul q a = ↑q * a
- ratCast_def : ∀ (q : ℚ), ↑q = ↑q.num / ↑q.den
- qsmul_def : ∀ (a : ℚ) (x : α), LinearOrderedField.qsmul a x = ↑a * x
- sup : α → α → α
- le_sup_left : ∀ (a b : α), a ≤ ConditionallyCompleteLinearOrderedField.sup a b
- le_sup_right : ∀ (a b : α), b ≤ ConditionallyCompleteLinearOrderedField.sup a b
- sup_le : ∀ (a b c : α), a ≤ c → b ≤ c → ConditionallyCompleteLinearOrderedField.sup a b ≤ c
- inf : α → α → α
- inf_le_left : ∀ (a b : α), ConditionallyCompleteLinearOrderedField.inf a b ≤ a
- inf_le_right : ∀ (a b : α), ConditionallyCompleteLinearOrderedField.inf a b ≤ b
- le_inf : ∀ (a b c : α), a ≤ b → a ≤ c → a ≤ ConditionallyCompleteLinearOrderedField.inf b c
Instances
Any conditionally complete linearly ordered field is archimedean.
Equations
- ⋯ = ⋯
The reals are a conditionally complete linearly ordered field.
Equations
- One or more equations did not get rendered due to their size.
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 LinearOrderedField.cutMap β : α → 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.
Equations
- LinearOrderedField.cutMap β a = Rat.cast '' {t : ℚ | ↑t < a}
Instances For
Induced map #
LinearOrderedField.cutMap
spits out a Set β
. To get something in β
, we now take the supremum.
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
- LinearOrderedField.inducedMap α β x = sSup (LinearOrderedField.cutMap β x)
Instances For
Preparatory lemma for inducedOrderRingHom
.
Preparatory lemma for inducedOrderRingHom
.
inducedMap
as an additive homomorphism.
Equations
- LinearOrderedField.inducedAddHom α β = { toFun := LinearOrderedField.inducedMap α β, map_zero' := ⋯, map_add' := ⋯ }
Instances For
inducedMap
as an OrderRingHom
.
Equations
- LinearOrderedField.inducedOrderRingHom α β = { toRingHom := (LinearOrderedField.inducedAddHom α β).mkRingHomOfMulSelfOfTwoNeZero ⋯ ⋯ ⋯, monotone' := ⋯ }
Instances For
The isomorphism of ordered rings between two conditionally complete linearly ordered fields.
Equations
- One or more equations did not get rendered due to their size.
Instances For
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.RingHom.unique = { default := RingHom.id ℝ, uniq := Real.RingHom.unique.proof_1 }