Skip to content

Commit

Permalink
feat(analysis/normed_space/lattice_ordered_group): introduce normed l…
Browse files Browse the repository at this point in the history
…attice ordered groups (#9274)

Motivated by Banach Lattices, this PR introduces normed lattice ordered groups and proves that they are topological lattices. To support this `has_continuous_inf` and `has_continuous_sup` mixin classes are also defined.



Co-authored-by: Christopher Hoskin <mans0954@users.noreply.github.com>
  • Loading branch information
mans0954 and mans0954 committed Oct 1, 2021
1 parent 812d6bb commit 76ddb2b
Show file tree
Hide file tree
Showing 4 changed files with 295 additions and 21 deletions.
65 changes: 48 additions & 17 deletions docs/references.bib
Expand Up @@ -355,12 +355,6 @@ @Book{ conway2001
mrnumber = {1803095}
}

@Misc{ schleicher_stoll,
author = {Dierk Schleicher and Michael Stoll},
title = {An introduction to {C}onway's games and numbers},
url = {http://www.cs.cmu.edu/afs/cs/academic/class/15859-s05/www/lecture-notes/comb-games-notes.pdf}
}

@InProceedings{ deligne_formulaire,
author = {Deligne, P.},
title = {Courbes elliptiques: formulaire d'apr\`es {J}. {T}ate},
Expand Down Expand Up @@ -527,6 +521,20 @@ @Article{ ghys87:groupes
language = {french}
}

@Book{ GierzEtAl1980,
author = {Gierz, Gerhard and Hofmann, Karl Heinrich and Keimel,
Klaus and Lawson, Jimmie D. and Mislove, Michael W. and
Scott, Dana S.},
title = {A compendium of continuous lattices},
publisher = {Springer-Verlag, Berlin-New York},
year = {1980},
pages = {xx+371},
isbn = {3-540-10111-X},
mrclass = {06B30 (03G10 30G30 54H12)},
mrnumber = {614752},
mrreviewer = {James W. Lea, Jr.}
}

@Book{ gouvea1997,
author = {Gouv\^{e}a, Fernando Q.},
title = {{$p$}-adic numbers},
Expand Down Expand Up @@ -726,16 +734,6 @@ @Article{ Joyce1982
publisher = {Elsevier {BV}}
}

@Article{ lazarus1973,
author = {Michel Lazarus},
title = {Les familles libres maximales d'un module ont-elles le meme cardinal?},
journal = {Pub. Sem. Math. Rennes},
volume = {4},
year = {1973},
pages = {1--12},
url = {http://www.numdam.org/article/PSMIR_1973___4_A4_0.pdf}
}

@Book{ katz_mazur,
author = {Katz, Nicholas M. and Mazur, Barry},
title = {Arithmetic moduli of elliptic curves},
Expand All @@ -752,6 +750,17 @@ @Book{ katz_mazur
url = {https://doi.org/10.1515/9781400881710}
}

@Article{ lazarus1973,
author = {Michel Lazarus},
title = {Les familles libres maximales d'un module ont-elles le
meme cardinal?},
journal = {Pub. Sem. Math. Rennes},
volume = {4},
year = {1973},
pages = {1--12},
url = {http://www.numdam.org/article/PSMIR_1973___4_A4_0.pdf}
}

@InProceedings{ lewis2019,
author = {Lewis, Robert Y.},
title = {A Formal Proof of {H}ensel's Lemma over the {$p$}-adic
Expand Down Expand Up @@ -809,8 +818,24 @@ @InProceedings{ mcbride1996
organization = {Springer}
}

@Book{ MeyerNieberg1991,
author = {Meyer-Nieberg, Peter},
title = {Banach lattices},
series = {Universitext},
publisher = {Springer-Verlag, Berlin},
year = {1991},
pages = {xvi+395},
isbn = {3-540-54201-9},
mrclass = {46B42 (46A40 47B60)},
mrnumber = {1128093},
mrreviewer = {Yu. A. Abramovich},
doi = {10.1007/978-3-642-76724-1},
url = {https://doi.org/10.1007/978-3-642-76724-1}
}

@Book{ miraglia2006introduction,
title = {An Introduction to Partially Ordered Structures and Sheaves},
title = {An Introduction to Partially Ordered Structures and
Sheaves},
author = {Miraglia, F.},
isbn = {9788876990359},
series = {Contemporary logic},
Expand Down Expand Up @@ -1097,6 +1122,12 @@ @Book{ schaefer1966
publisher = {Macmillan}
}

@Misc{ schleicher_stoll,
author = {Dierk Schleicher and Michael Stoll},
title = {An introduction to {C}onway's games and numbers},
url = {http://www.cs.cmu.edu/afs/cs/academic/class/15859-s05/www/lecture-notes/comb-games-notes.pdf}
}

@Misc{ scholze2011perfectoid,
title = {Perfectoid spaces},
author = {Peter Scholze},
Expand Down
9 changes: 5 additions & 4 deletions src/algebra/order/group.lean
Expand Up @@ -986,12 +986,13 @@ section has_neg
@[to_additive, priority 100] -- see Note [lower instance priority]
instance has_inv_lattice_has_abs [has_inv α] [lattice α] : has_abs (α) := ⟨λa, a ⊔ (a⁻¹)⟩

lemma abs_eq_sup_neg {α : Type*} [has_neg α] [lattice α] (a : α) : abs a = a ⊔ (-a) :=
rfl

variables [has_neg α] [linear_order α] {a b: α}

lemma abs_eq_max_neg (a : α) : abs a = max a (-a) :=
begin
exact rfl,
end
lemma abs_eq_max_neg : abs a = max a (-a) :=
rfl

lemma abs_choice (x : α) : abs x = x ∨ abs x = -x := max_choice _ _

Expand Down
163 changes: 163 additions & 0 deletions src/analysis/normed_space/lattice_ordered_group.lean
@@ -0,0 +1,163 @@
/-
Copyright (c) 2021 Christopher Hoskin. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Christopher Hoskin
-/
import analysis.normed_space.basic
import algebra.lattice_ordered_group
import topology.order.lattice

/-!
# Normed lattice ordered groups
Motivated by the theory of Banach Lattices, we then define `normed_lattice_add_comm_group` as a
lattice with a covariant normed group addition satisfying the solid axiom.
## Main statements
We show that a normed lattice ordered group is a topological lattice with respect to the norm
topology.
## References
* [Meyer-Nieberg, Banach lattices][MeyerNieberg1991]
## Tags
normed, lattice, ordered, group
-/

/-!
### Normed lattice orderd groups
Motivated by the theory of Banach Lattices, this section introduces normed lattice ordered groups.
-/

local notation `|`a`|` := abs a

/--
Let `α` be a normed commutative group equipped with a partial order covariant with addition, with
respect which `α` forms a lattice. Suppose that `α` is *solid*, that is to say, for `a` and `b` in
`α`, with absolute values `|a|` and `|b|` respectively, `|a| ≤ |b|` implies `∥a∥ ≤ ∥b∥`. Then `α` is
said to be a normed lattice ordered group.
-/
class normed_lattice_add_comm_group (α : Type*)
extends normed_group α, lattice α :=
(add_le_add_left : ∀ a b : α, a ≤ b → ∀ c : α, c + a ≤ c + b)
(solid : ∀ a b : α, |a| ≤ |b| → ∥a∥ ≤ ∥b∥)

lemma solid {α : Type*} [normed_lattice_add_comm_group α] {a b : α} (h : |a| ≤ |b|) : ∥a∥ ≤ ∥b∥ :=
normed_lattice_add_comm_group.solid a b h

/--
A normed lattice ordered group is an ordered additive commutative group
-/
@[priority 100] -- see Note [lower instance priority]
instance normed_lattice_add_comm_group_to_ordered_add_comm_group {α : Type*}
[h : normed_lattice_add_comm_group α] : ordered_add_comm_group α := { ..h }

/--
Let `α` be a normed group with a partial order. Then the order dual is also a normed group.
-/
@[priority 100] -- see Note [lower instance priority]
instance {α : Type*} : Π [normed_group α], normed_group (order_dual α) := id

/--
Let `α` be a normed lattice ordered group and let `a` and `b` be elements of `α`. Then `a⊓-a ≥ b⊓-b`
implies `∥a∥ ≤ ∥b∥`.
-/
lemma dual_solid {α : Type*} [normed_lattice_add_comm_group α] (a b : α) (h: b⊓-b ≤ a⊓-a) :
∥a∥ ≤ ∥b∥ :=
begin
apply solid,
rw abs_eq_sup_neg,
nth_rewrite 0 ← neg_neg a,
rw ← neg_inf_eq_sup_neg,
rw abs_eq_sup_neg,
nth_rewrite 0 ← neg_neg b,
rw ← neg_inf_eq_sup_neg,
finish,
end

/--
Let `α` be a normed lattice ordered group, then the order dual is also a
normed lattice ordered group.
-/
@[priority 100] -- see Note [lower instance priority]
instance {α : Type*} [h: normed_lattice_add_comm_group α] :
normed_lattice_add_comm_group (order_dual α) :=
{ add_le_add_left := begin
intros a b h₁ c,
rw ← order_dual.dual_le,
rw ← order_dual.dual_le at h₁,
apply h.add_le_add_left,
exact h₁,
end,
solid := begin
intros a b h₂,
apply dual_solid,
rw ← order_dual.dual_le at h₂,
finish,
end, }

/--
Let `α` be a normed lattice ordered group, let `a` be an element of `α` and let `|a|` be the
absolute value of `a`. Then `∥|a|∥ = ∥a∥`.
-/
lemma norm_abs_eq_norm {α : Type*} [normed_lattice_add_comm_group α] (a : α) : ∥|a|∥ = ∥a∥ :=
begin
rw le_antisymm_iff,
split,
{ apply normed_lattice_add_comm_group.solid,
rw ← lattice_ordered_comm_group.abs_idempotent a, },
{ apply normed_lattice_add_comm_group.solid,
rw ← lattice_ordered_comm_group.abs_idempotent a, }
end

/--
Let `α` be a normed lattice ordered group. Then the infimum is jointly continuous.
-/
@[priority 100] -- see Note [lower instance priority]
instance normed_lattice_add_comm_group_has_continuous_inf {α : Type*}
[normed_lattice_add_comm_group α] : has_continuous_inf α :=
⟨ continuous_iff_continuous_at.2 $ λ q, tendsto_iff_norm_tendsto_zero.2 $
begin
have : ∀ p : α × α, ∥p.1 ⊓ p.2 - q.1 ⊓ q.2∥ ≤ ∥p.1 - q.1∥ + ∥p.2 - q.2∥,
{
intros,
nth_rewrite_rhs 0 ← norm_abs_eq_norm,
nth_rewrite_rhs 1 ← norm_abs_eq_norm,
apply le_trans _ (norm_add_le (|p.fst - q.fst|) (|p.snd - q.snd|)),
apply normed_lattice_add_comm_group.solid,
rw lattice_ordered_comm_group.abs_pos_eq (|p.fst - q.fst| + |p.snd - q.snd|),
{ calc |p.fst ⊓ p.snd - q.fst ⊓ q.snd| =
|p.fst ⊓ p.snd - q.fst ⊓ p.snd + (q.fst ⊓ p.snd - q.fst ⊓ q.snd)| :
by { rw sub_add_sub_cancel, }
... ≤ |p.fst ⊓ p.snd - q.fst ⊓ p.snd| + |q.fst ⊓ p.snd - q.fst ⊓ q.snd| :
by {apply lattice_ordered_comm_group.abs_triangle,}
... ≤ |p.fst - q.fst | + |p.snd - q.snd| : by {
apply add_le_add,
{ exact
(sup_le_iff.elim_left (lattice_ordered_comm_group.Birkhoff_inequalities _ _ _)).right },
{ rw inf_comm,
nth_rewrite 1 inf_comm,
exact
(sup_le_iff.elim_left (lattice_ordered_comm_group.Birkhoff_inequalities _ _ _)).right }
}, },
{ exact add_nonneg (lattice_ordered_comm_group.abs_pos (p.fst - q.fst))
(lattice_ordered_comm_group.abs_pos (p.snd - q.snd)), }
},
refine squeeze_zero (λ e, norm_nonneg _) this _,
convert (((continuous_fst.tendsto q).sub tendsto_const_nhds).norm).add
(((continuous_snd.tendsto q).sub tendsto_const_nhds).norm),
simp,
end

/--
Let `α` be a normed lattice ordered group. Then `α` is a topological lattice in the norm topology.
-/
@[priority 100] -- see Note [lower instance priority]
instance normed_lattice_add_comm_group_topological_lattice {α : Type*}
[normed_lattice_add_comm_group α] : topological_lattice α :=
topological_lattice.mk
79 changes: 79 additions & 0 deletions src/topology/order/lattice.lean
@@ -0,0 +1,79 @@
/-
Copyright (c) 2021 Christopher Hoskin. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Christopher Hoskin
-/
import topology.basic
import topology.constructions
import topology.algebra.ordered.basic

/-!
# Topological lattices
In this file we define mixin classes `has_continuous_inf` and `has_continuous_sup`. We define the
class `topological_lattice` as a topological space and lattice `L` extending `has_continuous_inf`
and `has_continuous_sup`.
## References
* [Gierz et al, A Compendium of Continuous Lattices][GierzEtAl1980]
## Tags
topological, lattice
-/

/--
Let `L` be a topological space and let `L×L` be equipped with the product topology and let
`⊓:L×L → L` be an infimum. Then `L` is said to have *(jointly) continuous infimum* if the map
`⊓:L×L → L` is continuous.
-/
class has_continuous_inf (L : Type*) [topological_space L] [has_inf L] : Prop :=
(continuous_inf : continuous (λ p : L × L, p.1 ⊓ p.2))

/--
Let `L` be a topological space and let `L×L` be equipped with the product topology and let
`⊓:L×L → L` be a supremum. Then `L` is said to have *(jointly) continuous supremum* if the map
`⊓:L×L → L` is continuous.
-/
class has_continuous_sup (L : Type*) [topological_space L] [has_sup L] : Prop :=
(continuous_sup : continuous (λ p : L × L, p.1 ⊔ p.2))

/--
Let `L` be a topological space with a supremum. If the order dual has a continuous infimum then the
supremum is continuous.
-/
@[priority 100] -- see Note [lower instance priority]
instance has_continuous_inf_dual_has_continuous_sup
(L : Type*) [topological_space L] [has_sup L] [h: has_continuous_inf (order_dual L)] :
has_continuous_sup L :=
{ continuous_sup :=
@has_continuous_inf.continuous_inf (order_dual L) _ _ h }

/--
Let `L` be a lattice equipped with a topology such that `L` has continuous infimum and supremum.
Then `L` is said to be a *topological lattice*.
-/
class topological_lattice (L : Type*) [topological_space L] [lattice L]
extends has_continuous_inf L, has_continuous_sup L

variables {L : Type*} [topological_space L]
variables {X : Type*} [topological_space X]

@[continuity] lemma continuous_inf [has_inf L] [has_continuous_inf L] :
continuous (λp:L×L, p.1 ⊓ p.2) :=
has_continuous_inf.continuous_inf

@[continuity] lemma continuous.inf [has_inf L] [has_continuous_inf L]
{f g : X → L} (hf : continuous f) (hg : continuous g) :
continuous (λx, f x ⊓ g x) :=
continuous_inf.comp (hf.prod_mk hg : _)

@[continuity] lemma continuous_sup [has_sup L] [has_continuous_sup L] :
continuous (λp:L×L, p.1 ⊔ p.2) :=
has_continuous_sup.continuous_sup

@[continuity] lemma continuous.sup [has_sup L] [has_continuous_sup L]
{f g : X → L} (hf : continuous f) (hg : continuous g) :
continuous (λx, f x ⊔ g x) :=
continuous_sup.comp (hf.prod_mk hg : _)

0 comments on commit 76ddb2b

Please sign in to comment.