Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 5dc275e

Browse files
committed
feat(analysis/normed/order/lattice): add has_solid_norm (#18554)
See [this Zulip thread](https://leanprover.zulipchat.com/#narrow/stream/116395-maths/topic/Solid) Co-authored-by: Yaël Dillies
1 parent ec4b2ee commit 5dc275e

File tree

4 files changed

+54
-11
lines changed

4 files changed

+54
-11
lines changed

src/algebra/order/lattice_group.lean

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import algebra.group_power.basic -- Needed for squares
77
import algebra.order.group.abs
88
import tactic.nth_rewrite
99

10+
import order.closure
11+
1012
/-!
1113
# Lattice ordered groups
1214
@@ -454,3 +456,26 @@ begin
454456
end
455457

456458
end lattice_ordered_comm_group
459+
460+
namespace lattice_ordered_add_comm_group
461+
462+
variables {β : Type u} [lattice β] [add_comm_group β]
463+
464+
section solid
465+
466+
/-- A subset `s ⊆ β`, with `β` an `add_comm_group` with a `lattice` structure, is solid if for
467+
all `x ∈ s` and all `y ∈ β` such that `|y| ≤ |x|`, then `y ∈ s`. -/
468+
def is_solid (s : set β) : Prop := ∀ ⦃x⦄, x ∈ s → ∀ ⦃y⦄, |y| ≤ |x| → y ∈ s
469+
470+
/-- The solid closure of a subset `s` is the smallest superset of `s` that is solid. -/
471+
def solid_closure (s : set β) : set β := {y | ∃ x ∈ s, |y| ≤ |x|}
472+
473+
lemma is_solid_solid_closure (s : set β) : is_solid (solid_closure s) :=
474+
λ x ⟨y, hy, hxy⟩ z hzx, ⟨y, hy, hzx.trans hxy⟩
475+
476+
lemma solid_closure_min (s t : set β) (h1 : s ⊆ t) (h2 : is_solid t) : solid_closure s ⊆ t :=
477+
λ _ ⟨_, hy, hxy⟩, h2 (h1 hy) hxy
478+
479+
end solid
480+
481+
end lattice_ordered_add_comm_group

src/analysis/normed/order/lattice.lean

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,30 +31,48 @@ normed, lattice, ordered, group
3131
-/
3232

3333
/-!
34-
### Normed lattice orderd groups
34+
### Normed lattice ordered groups
3535
3636
Motivated by the theory of Banach Lattices, this section introduces normed lattice ordered groups.
3737
-/
3838

3939
local notation (name := abs) `|`a`|` := abs a
4040

41+
section solid_norm
42+
43+
/-- Let `α` be an `add_comm_group` with a `lattice` structure. A norm on `α` is *solid* if, for `a`
44+
and `b` in `α`, with absolute values `|a|` and `|b|` respectively, `|a| ≤ |b|` implies `‖a‖ ≤ ‖b‖`.
45+
-/
46+
class has_solid_norm (α : Type*) [normed_add_comm_group α] [lattice α] : Prop :=
47+
(solid : ∀ ⦃x y : α⦄, |x| ≤ |y| → ‖x‖ ≤ ‖y‖)
48+
49+
variables {α : Type*} [normed_add_comm_group α] [lattice α] [has_solid_norm α]
50+
51+
lemma norm_le_norm_of_abs_le_abs {a b : α} (h : |a| ≤ |b|) : ‖a‖ ≤ ‖b‖ := has_solid_norm.solid h
52+
53+
/-- If `α` has a solid norm, then the balls centered at the origin of `α` are solid sets. -/
54+
lemma lattice_ordered_add_comm_group.is_solid_ball (r : ℝ) :
55+
lattice_ordered_add_comm_group.is_solid (metric.ball (0 : α) r) :=
56+
λ _ hx _ hxy, mem_ball_zero_iff.mpr ((has_solid_norm.solid hxy).trans_lt (mem_ball_zero_iff.mp hx))
57+
58+
instance : has_solid_norm ℝ := ⟨λ _ _, id⟩
59+
60+
instance : has_solid_norm ℚ := ⟨λ _ _ _, by simpa only [norm, ← rat.cast_abs, rat.cast_le]⟩
61+
62+
end solid_norm
63+
4164
/--
4265
Let `α` be a normed commutative group equipped with a partial order covariant with addition, with
4366
respect which `α` forms a lattice. Suppose that `α` is *solid*, that is to say, for `a` and `b` in
4467
`α`, with absolute values `|a|` and `|b|` respectively, `|a| ≤ |b|` implies `‖a‖ ≤ ‖b‖`. Then `α` is
4568
said to be a normed lattice ordered group.
4669
-/
4770
class normed_lattice_add_comm_group (α : Type*)
48-
extends normed_add_comm_group α, lattice α :=
71+
extends normed_add_comm_group α, lattice α, has_solid_norm α :=
4972
(add_le_add_left : ∀ a b : α, a ≤ b → ∀ c : α, c + a ≤ c + b)
50-
(solid : ∀ a b : α, |a| ≤ |b| → ‖a‖ ≤ ‖b‖)
51-
52-
lemma solid {α : Type*} [normed_lattice_add_comm_group α] {a b : α} (h : |a| ≤ |b|) : ‖a‖ ≤ ‖b‖ :=
53-
normed_lattice_add_comm_group.solid a b h
5473

5574
instance : normed_lattice_add_comm_group ℝ :=
56-
{ add_le_add_left := λ _ _ h _, add_le_add le_rfl h,
57-
solid := λ _ _, id, }
75+
{ add_le_add_left := λ _ _ h _, add_le_add le_rfl h,}
5876

5977
/--
6078
A normed lattice ordered group is an ordered additive commutative group
@@ -64,7 +82,7 @@ instance normed_lattice_add_comm_group_to_ordered_add_comm_group {α : Type*}
6482
[h : normed_lattice_add_comm_group α] : ordered_add_comm_group α := { ..h }
6583

6684
variables {α : Type*} [normed_lattice_add_comm_group α]
67-
open lattice_ordered_comm_group
85+
open lattice_ordered_comm_group has_solid_norm
6886

6987
lemma dual_solid (a b : α) (h: b⊓-b ≤ a⊓-a) : ‖a‖ ≤ ‖b‖ :=
7088
begin

src/measure_theory/function/lp_order.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ instance [fact (1 ≤ p)] : normed_lattice_add_comm_group (Lp E p μ) :=
9494
refine snorm_mono_ae _,
9595
filter_upwards [hfg, Lp.coe_fn_abs f, Lp.coe_fn_abs g] with x hx hxf hxg,
9696
rw [hxf, hxg] at hx,
97-
exact solid hx,
97+
exact has_solid_norm.solid hx,
9898
end,
9999
..Lp.lattice, ..Lp.normed_add_comm_group, }
100100

src/topology/continuous_function/bounded.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1328,7 +1328,7 @@ instance : normed_lattice_add_comm_group (α →ᵇ β) :=
13281328
solid :=
13291329
begin
13301330
intros f g h,
1331-
have i1: ∀ t, ‖f t‖ ≤ ‖g t‖ := λ t, solid (h t),
1331+
have i1: ∀ t, ‖f t‖ ≤ ‖g t‖ := λ t, has_solid_norm.solid (h t),
13321332
rw norm_le (norm_nonneg _),
13331333
exact λ t, (i1 t).trans (norm_coe_le_norm g t),
13341334
end,

0 commit comments

Comments
 (0)