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

Commit 64a8d56

Browse files
committed
chore(order/filter): simplify definition of filter.prod; cleanup
1 parent b154092 commit 64a8d56

File tree

7 files changed

+216
-247
lines changed

7 files changed

+216
-247
lines changed

analysis/ennreal.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -630,7 +630,7 @@ begin
630630
apply tendsto_principal.2 _,
631631
revert b,
632632
simp [forall_ennreal],
633-
exact assume r hr hr', mem_prod_sets.mpr ⟨
633+
exact assume r hr hr', mem_prod_iff.mpr ⟨
634634
{a | of_real r < a}, mem_nhds_sets (is_open_lt' _) hr',
635635
univ, univ_mem_sets, assume ⟨c, d⟩ ⟨hc, _⟩, lt_of_lt_of_le hc $ le_add_right $ le_refl _⟩
636636
end,

analysis/real.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ real.uniform_continuous_abs.continuous
116116

117117
lemma rat.uniform_continuous_abs : uniform_continuous (abs : ℚ → ℚ) :=
118118
uniform_continuous_of_metric.2 $ λ ε ε0,
119-
⟨ε, ε0, λ a b h, lt_of_le_of_lt
119+
⟨ε, ε0, λ a b h, lt_of_le_of_lt
120120
(by simpa [rat.dist_eq] using abs_abs_sub_abs_le_abs_sub _ _) h⟩
121121

122122
lemma rat.continuous_abs : continuous (abs : ℚ → ℚ) :=
@@ -285,7 +285,7 @@ begin
285285
rcases Cauchy.mem_uniformity'.1 hs with ⟨t, tu, ts⟩,
286286
apply ts,
287287
rcases comp_mem_uniformity_sets tu with ⟨d, du, dt⟩,
288-
refine mem_prod_sets.2
288+
refine mem_prod_iff.2
289289
⟨_, le_nhds_lim_of_cauchy f.2 (mem_nhds_right (lim f.1) du),
290290
_, le_nhds_lim_of_cauchy g.2 (mem_nhds_left (lim g.1) du), λ x h, _⟩,
291291
cases x with a b, cases h with h₁ h₂,
@@ -296,7 +296,7 @@ begin
296296
rcases mem_uniformity_is_closed tu with ⟨d, du, dc, dt⟩,
297297
refine H {p | (lim p.1.1, lim p.2.1) ∈ t}
298298
(Cauchy.mem_uniformity'.2 ⟨d, du, λ f g h, _⟩),
299-
rcases mem_prod_sets.1 h with ⟨x, xf, y, yg, h⟩,
299+
rcases mem_prod_iff.1 h with ⟨x, xf, y, yg, h⟩,
300300
have limc : ∀ (f : Cauchy ℝ) (x ∈ f.1.sets), lim f.1 ∈ closure x,
301301
{ intros f x xf,
302302
rw closure_eq_nhds,

analysis/topology/continuity.lean

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,9 @@ lemma is_open_prod {s : set α} {t : set β} (hs : is_open s) (ht : is_open t) :
376376
is_open (set.prod s t) :=
377377
is_open_inter (continuous_fst s hs) (continuous_snd t ht)
378378

379+
lemma nhds_prod_eq {a : α} {b : β} : nhds (a, b) = filter.prod (nhds a) (nhds b) :=
380+
by rw [filter.prod, prod.topological_space, nhds_sup, nhds_induced_eq_vmap, nhds_induced_eq_vmap]
381+
379382
lemma prod_generate_from_generate_from_eq {s : set (set α)} {t : set (set β)}
380383
(hs : ⋃₀ s = univ) (ht : ⋃₀ t = univ) :
381384
@prod.topological_space α β (generate_from s) (generate_from t) =
@@ -416,32 +419,11 @@ le_antisymm
416419
this ▸ (generate_open.basic _ ⟨univ, t, is_open_univ, ht, rfl⟩)))
417420
(generate_from_le $ assume g ⟨s, t, hs, ht, g_eq⟩, g_eq.symm ▸ is_open_prod hs ht)
418421

419-
lemma nhds_prod_eq {a : α} {b : β} : nhds (a, b) = filter.prod (nhds a) (nhds b) :=
420-
by rw [prod_eq_generate_from, nhds_generate_from];
421-
exact le_antisymm
422-
(le_infi $ assume s, le_infi $ assume hs, le_infi $ assume t, le_infi $ assume ht,
423-
begin
424-
simp [mem_nhds_sets_iff] at hs, simp [mem_nhds_sets_iff] at ht,
425-
rcases hs with ⟨s', hs_sub, hs', as'⟩,
426-
rcases ht with ⟨t', ht_sub, ht', at'⟩,
427-
exact infi_le_of_le (set.prod s' t')
428-
(infi_le_of_le ⟨⟨as', at'⟩, s', t', hs', ht', rfl⟩ $
429-
principal_mono.mpr $ set.prod_mono hs_sub ht_sub)
430-
end)
431-
(le_infi $ assume s, le_infi $ assume ⟨hab, s', t', hs', ht', s_eq⟩,
432-
begin
433-
revert hab,
434-
simp [s_eq],
435-
exact assume ha hb, @prod_mem_prod α β s' t' (nhds a) (nhds b)
436-
(mem_nhds_sets_iff.mpr ⟨s', subset.refl s', hs', ha⟩)
437-
(mem_nhds_sets_iff.mpr ⟨t', subset.refl t', ht', hb⟩)
438-
end)
439-
440422
lemma is_open_prod_iff {s : set (α×β)} : is_open s ↔
441423
(∀a b, (a, b) ∈ s → ∃u v, is_open u ∧ is_open v ∧ a ∈ u ∧ b ∈ v ∧ set.prod u v ⊆ s) :=
442424
begin
443425
rw [is_open_iff_nhds],
444-
simp [nhds_prod_eq, mem_prod_sets],
426+
simp [nhds_prod_eq, mem_prod_iff],
445427
simp [mem_nhds_sets_iff],
446428
exact forall_congr (assume a, ball_congr $ assume b h,
447429
⟨assume ⟨u', ⟨u, us, uo, au⟩, v', ⟨v, vs, vo, bv⟩, h⟩,

analysis/topology/topological_space.lean

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -894,6 +894,12 @@ le_antisymm
894894
end)
895895
end
896896

897+
lemma nhds_sup {t₁ t₂ : topological_space α} {a : α} :
898+
@nhds α (t₁ ⊔ t₂) a = @nhds α t₁ a ⊓ @nhds α t₂ a :=
899+
calc @nhds α (t₁ ⊔ t₂) a = @nhds α (⨆b:bool, cond b t₁ t₂) a : by rw [supr_bool_eq]
900+
... = (⨅b, @nhds α (cond b t₁ t₂) a) : begin rw [nhds_supr] end
901+
... = @nhds α t₁ a ⊓ @nhds α t₂ a : by rw [infi_bool_eq]
902+
897903
end
898904

899905
end constructions
@@ -943,7 +949,7 @@ lemma is_topological_basis_of_open_of_nhds {s : set (set α)}
943949
(is_open_inter _ _ _ (h_open _ ht₁) (h_open _ ht₂)),
944950
eq_univ_iff_forall.2 $ assume a,
945951
let ⟨u, h₁, h₂, _⟩ := h_nhds a univ trivial (is_open_univ _) in
946-
⟨u, h₁, h₂⟩,
952+
⟨u, h₁, h₂⟩,
947953
le_antisymm
948954
(assume u hu,
949955
(@is_open_iff_nhds α (generate_from _) _).mpr $ assume a hau,

analysis/topology/uniform_space.lean

Lines changed: 33 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,10 @@ def uniform_space.core.mk' {α : Type u} (U : filter (α × α))
7878
(symm : ∀ r ∈ U.sets, {p | prod.swap p ∈ r} ∈ U.sets)
7979
(comp : ∀ r ∈ U.sets, ∃ t ∈ U.sets, comp_rel t t ⊆ r) : uniform_space.core α :=
8080
⟨U, λ r ru, id_rel_subset.2 (refl _ ru), symm,
81-
λ r ru, begin
82-
rw [mem_lift'_sets], exact comp _ ru,
81+
begin
82+
intros r ru,
83+
rw [mem_lift'_sets],
84+
exact comp _ ru,
8385
apply monotone_comp_rel; exact monotone_id,
8486
end
8587

@@ -88,10 +90,10 @@ def uniform_space.core.to_topological_space {α : Type u} (u : uniform_space.cor
8890
topological_space α :=
8991
{ is_open := λs, ∀x∈s, { p : α × α | p.1 = x → p.2 ∈ s } ∈ u.uniformity.sets,
9092
is_open_univ := by simp; intro; exact univ_mem_sets,
91-
is_open_inter := assume s t hs ht x ⟨xs, xt⟩,
92-
u.uniformity.upwards_sets (inter_mem_sets (hs x xs) (ht x xt)) $ assume p ⟨ps, pt⟩ h, ⟨ps h, pt h⟩,
93-
is_open_sUnion := assume s hs x ⟨t, ts, xt⟩,
94-
u.uniformity.upwards_sets (hs t ts x xt) $ assume p ph h, ⟨t, ts, ph h⟩ }
93+
is_open_inter :=
94+
assume s t hs ht x ⟨xs, xt⟩, by filter_upwards [hs x xs, ht x xt]; simp {contextual := tt},
95+
is_open_sUnion :=
96+
assume s hs x ⟨t, ts, xt⟩, by filter_upwards [hs t ts x xt] assume p ph h, ⟨t, ts, ph h⟩ }
9597

9698
lemma uniform_space.core_eq : ∀{u₁ u₂ : uniform_space.core α}, u₁.uniformity = u₂.uniformity → u₁ = u₂
9799
| ⟨u₁, _, _, _⟩ ⟨u₂, _, _, _⟩ h := have u₁ = u₂, from h, by simp [*]
@@ -188,22 +190,19 @@ let ⟨t, ht₁, ht₂⟩ := comp_mem_uniformity_sets hs in
188190
let ⟨t', ht', ht'₁, ht'₂⟩ := symm_of_uniformity ht₁ in
189191
⟨t', ht', ht'₁, subset.trans (monotone_comp_rel monotone_id monotone_id ht'₂) ht₂⟩
190192

191-
lemma uniformity_le_symm : uniformity ≤ map (@prod.swap α α) uniformity :=
192-
calc uniformity = id <$> uniformity : (functor.id_map _).symm
193-
... = (@prod.swap α α ∘ prod.swap) <$> uniformity :
194-
congr_arg (λf : (α×α)→(α×α), f <$> uniformity) (by funext x; cases x; refl)
195-
... = (map prod.swap ∘ map prod.swap) uniformity :
196-
congr map_compose rfl
197-
... ≤ (@prod.swap α α) <$> uniformity : map_mono symm_le_uniformity
193+
lemma uniformity_le_symm : uniformity ≤ (@prod.swap α α) <$> uniformity :=
194+
by rw [map_swap_eq_vmap_swap];
195+
from map_le_iff_le_vmap.1 tendsto_swap_uniformity
198196

199197
lemma uniformity_eq_symm : uniformity = (@prod.swap α α) <$> uniformity :=
200198
le_antisymm uniformity_le_symm symm_le_uniformity
201199

202200
theorem uniformity_lift_le_swap {g : set (α×α) → filter β} {f : filter β} (hg : monotone g)
203201
(h : uniformity.lift (λs, g (preimage prod.swap s)) ≤ f) : uniformity.lift g ≤ f :=
204-
le_trans
205-
(lift_mono uniformity_le_symm (le_refl _))
206-
(by rw [map_lift_eq2 hg, image_swap_eq_preimage_swap]; exact h)
202+
calc uniformity.lift g ≤ (filter.map prod.swap (@uniformity α _)).lift g :
203+
lift_mono uniformity_le_symm (le_refl _)
204+
... ≤ _ :
205+
by rw [map_lift_eq2 hg, image_swap_eq_preimage_swap]; exact h
207206

208207
lemma uniformity_lift_le_comp {f : set (α×α) → filter β} (h : monotone f):
209208
uniformity.lift (λs, f (comp_rel s s)) ≤ uniformity.lift f :=
@@ -238,25 +237,21 @@ lemma mem_nhds_uniformity_iff {x : α} {s : set α} :
238237
(s ∈ (nhds x).sets) ↔ ({p : α × α | p.1 = x → p.2 ∈ s} ∈ (@uniformity α _).sets) :=
239238
begin
240239
simp [mem_nhds_sets_iff, is_open_uniformity],
241-
exact assume t ts ht xt, uniformity.upwards_sets (ht x xt) $ assume ⟨x', y⟩ h eq, ts $ h eq
240+
exact assume t ts ht xt, by filter_upwards [ht x xt] assume ⟨x', y⟩ h eq, ts $ h eq
242241
end,
243242

244243
assume hs,
245244
mem_nhds_sets_iff.mpr ⟨{x | {p : α × α | p.1 = x → p.2 ∈ s} ∈ (@uniformity α _).sets},
246-
assume x', assume hx' : {p : α × α | p.fst = x' → p.snd ∈ s} ∈ (@uniformity α _).sets,
247-
refl_mem_uniformity hx' rfl,
245+
assume x' hx', refl_mem_uniformity hx' rfl,
248246
is_open_uniformity.mpr $ assume x' hx',
249247
let ⟨t, ht, tr⟩ := comp_mem_uniformity_sets hx' in
250-
uniformity.upwards_sets ht $
251-
assume ⟨a, b⟩ hp' (eq : a = x'),
252-
have hp : (x', b) ∈ t, from eq ▸ hp',
253-
show {p : α × α | p.fst = b → p.snd ∈ s} ∈ (@uniformity α _).sets,
254-
from uniformity.upwards_sets ht $
255-
assume ⟨a, b'⟩ hp' (heq : a = b),
256-
have (b, b') ∈ t, from heq ▸ hp',
257-
have (x', b') ∈ comp_rel t t, from ⟨b, hp, this⟩,
258-
show b' ∈ s,
259-
from tr this rfl,
248+
by filter_upwards [ht] assume ⟨a, b⟩ hp' (hax' : a = x'),
249+
by filter_upwards [ht] assume ⟨a, b'⟩ hp'' (hab : a = b),
250+
have hp : (x', b) ∈ t, from hax' ▸ hp',
251+
have (b, b') ∈ t, from hab ▸ hp'',
252+
have (x', b') ∈ comp_rel t t, from ⟨b, hp, this⟩,
253+
show b' ∈ s,
254+
from tr this rfl,
260255
hs⟩⟩
261256

262257
lemma nhds_eq_vmap_uniformity {x : α} : nhds x = uniformity.vmap (prod.mk x) :=
@@ -314,8 +309,9 @@ lemma nhds_nhds_eq_uniformity_uniformity_prod {a b : α} :
314309
filter.prod (nhds a) (nhds b) =
315310
uniformity.lift (λs:set (α×α), uniformity.lift' (λt:set (α×α),
316311
set.prod {y : α | (y, a) ∈ s} {y : α | (b, y) ∈ t})) :=
317-
show (nhds a).lift (λs:set α, (nhds b).lift (λt:set α, principal (set.prod s t))) = _,
318312
begin
313+
rw [prod_def],
314+
show (nhds a).lift (λs:set α, (nhds b).lift (λt:set α, principal (set.prod s t))) = _,
319315
rw [lift_nhds_right],
320316
apply congr_arg, funext s,
321317
rw [lift_nhds_left],
@@ -387,7 +383,7 @@ calc (a, b) ∈ closure t ↔ (nhds (a, b) ⊓ principal t ≠ ⊥) : by simp [c
387383

388384
lemma uniformity_eq_uniformity_closure : (@uniformity α _) = uniformity.lift' closure :=
389385
le_antisymm
390-
(le_infi $ assume s, le_infi $ assume hs, by simp; exact uniformity.upwards_sets hs subset_closure)
386+
(le_infi $ assume s, le_infi $ assume hs, by simp; filter_upwards [hs] subset_closure)
391387
(calc uniformity.lift' closure ≤ uniformity.lift' (λd, comp_rel d (comp_rel d d)) :
392388
lift'_mono' (by intros s hs; rw [closure_eq_inter_uniformity]; exact bInter_subset_of_mem hs)
393389
... ≤ uniformity : comp_le_uniformity3)
@@ -402,8 +398,7 @@ le_antisymm
402398
calc s ⊆ t : hst
403399
... ⊆ interior d : (subset_interior_iff_subset_of_open ht).mpr $
404400
assume x, assume : x ∈ t, let ⟨x, y, h₁, h₂, h₃⟩ := ht_comp this in hs_comp ⟨x, h₁, y, h₂, h₃⟩,
405-
have interior d ∈ (@uniformity α _).sets,
406-
from (@uniformity α _).upwards_sets hs $ this,
401+
have interior d ∈ (@uniformity α _).sets, by filter_upwards [hs] this,
407402
by simp [this])
408403
(assume s hs, (uniformity.lift' interior).upwards_sets (mem_lift' hs) interior_subset)
409404

@@ -1084,7 +1079,7 @@ show preimage (λp:(α×α), (ψ p.1, ψ p.2)) d ∈ uniformity.sets,
10841079
from is_open_iff_nhds.mp is_open_interior (x₁, x₂) hx_t,
10851080
have interior t ∈ (filter.prod (nhds x₁) (nhds x₂)).sets,
10861081
by rwa [nhds_prod_eq, le_principal_iff] at this,
1087-
let ⟨m₁, hm₁, m₂, hm₂, (hm : set.prod m₁ m₂ ⊆ interior t)⟩ := mem_prod_sets.mp this in
1082+
let ⟨m₁, hm₁, m₂, hm₂, (hm : set.prod m₁ m₂ ⊆ interior t)⟩ := mem_prod_iff.mp this in
10881083
let ⟨a, ha₁, _, ha₂⟩ := h_pnt hm₁ in
10891084
let ⟨b, hb₁, hb₂, _⟩ := h_pnt hm₂ in
10901085
have set.prod (preimage e m₁) (preimage e m₂) ⊆ preimage (λp:(β×β), (f p.1, f p.2)) s,
@@ -1145,9 +1140,9 @@ private lemma comp_rel_gen_gen_subset_gen_comp_rel {s t : set (α×α)} : comp_r
11451140
(gen (comp_rel s t) : set (Cauchy α × Cauchy α)) :=
11461141
assume ⟨f, g⟩ ⟨h, h₁, h₂⟩,
11471142
let ⟨t₁, (ht₁ : t₁ ∈ f.val.sets), t₂, (ht₂ : t₂ ∈ h.val.sets), (h₁ : set.prod t₁ t₂ ⊆ s)⟩ :=
1148-
mem_prod_sets.mp h₁ in
1143+
mem_prod_iff.mp h₁ in
11491144
let ⟨t₃, (ht₃ : t₃ ∈ h.val.sets), t₄, (ht₄ : t₄ ∈ g.val.sets), (h₂ : set.prod t₃ t₄ ⊆ t)⟩ :=
1150-
mem_prod_sets.mp h₂ in
1145+
mem_prod_iff.mp h₂ in
11511146
have t₂ ∩ t₃ ∈ h.val.sets,
11521147
from inter_mem_sets ht₂ ht₃,
11531148
let ⟨x, xt₂, xt₃⟩ :=
@@ -1225,7 +1220,7 @@ have h_ex : ∀s∈(@uniformity (Cauchy α) _).sets, ∃y:α, (f, pure_cauchy y)
12251220
let ⟨t, ht, (h : set.prod t t ⊆ t')⟩ := mem_prod_same_iff.mp this in
12261221
let ⟨x, (hx : x ∈ t)⟩ := inhabited_of_mem_sets f.property.left ht in
12271222
have t'' ∈ (filter.prod f.val (pure x)).sets,
1228-
from mem_prod_sets.mpr ⟨t, ht, {y:α | (x, y) ∈ t'},
1223+
from mem_prod_iff.mpr ⟨t, ht, {y:α | (x, y) ∈ t'},
12291224
assume y, begin simp, intro h, simp [h], exact refl_mem_uniformity ht'₁ end,
12301225
assume ⟨a, b⟩ ⟨(h₁ : a ∈ t), (h₂ : (x, b) ∈ t')⟩,
12311226
ht'₂ $ prod_mk_mem_comp_rel (@h (a, x) ⟨h₁, hx⟩) h₂⟩,
@@ -1551,7 +1546,7 @@ have map (λp:(α×α)×(β×β), ((p.1.1, p.2.1), (p.1.2, p.2.2))) =
15511546
vmap (λp:(α×β)×(α×β), ((p.1.1, p.2.1), (p.1.2, p.2.2))),
15521547
from funext $ assume f, map_eq_vmap_of_inverse
15531548
(funext $ assume ⟨⟨_, _⟩, ⟨_, _⟩⟩, rfl) (funext $ assume ⟨⟨_, _⟩, ⟨_, _⟩⟩, rfl),
1554-
by rw [this, uniformity_prod, prod_def, vmap_inf, vmap_vmap_comp, vmap_vmap_comp]
1549+
by rw [this, uniformity_prod, filter.prod, vmap_inf, vmap_vmap_comp, vmap_vmap_comp]
15551550

15561551
lemma mem_uniform_prod [t₁ : uniform_space α] [t₂ : uniform_space β] {a : set (α × α)} {b : set (β × β)}
15571552
(ha : a ∈ (@uniformity α _).sets) (hb : b ∈ (@uniformity β _).sets) :

data/analysis/filter.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ F'.of_equiv $ show (Σ u:unit, Π (i : α), true → (F i).σ) ≃ Π i, (F i).
210210

211211
/-- Construct a realizer for the product of filters -/
212212
protected def prod {f g : filter α} (F : f.realizer) (G : g.realizer) : (f.prod g).realizer :=
213-
of_eq prod_def.symm $ (F.vmap _).inf (G.vmap _)
213+
(F.vmap _).inf (G.vmap _)
214214

215215
theorem le_iff {f g : filter α} (F : f.realizer) (G : g.realizer) :
216216
f ≤ g ↔ ∀ b : G.σ, ∃ a : F.σ, F.F a ≤ G.F b :=

0 commit comments

Comments
 (0)