@@ -251,13 +251,21 @@ theorem prod_comm : f ×ᶠ g = map (fun p : β × α => (p.2, p.1)) (g ×ᶠ f)
251
251
rfl
252
252
#align filter.prod_comm Filter.prod_comm
253
253
254
+ theorem mem_prod_iff_left {s : Set (α × β)} {f : Filter α} {g : Filter β} :
255
+ s ∈ f ×ᶠ g ↔ ∃ t ∈ f, ∀ᶠ y in g, ∀ x ∈ t, (x, y) ∈ s := by
256
+ simp only [mem_prod_iff, prod_subset_iff]
257
+ refine exists_congr fun _ => Iff.rfl.and <| Iff.trans ?_ exists_mem_subset_iff
258
+ exact exists_congr fun _ => Iff.rfl.and forall₂_swap
259
+
260
+ theorem mem_prod_iff_right {s : Set (α × β)} {f : Filter α} {g : Filter β} :
261
+ s ∈ f ×ᶠ g ↔ ∃ t ∈ g, ∀ᶠ x in f, ∀ y ∈ t, (x, y) ∈ s := by
262
+ rw [prod_comm, mem_map, mem_prod_iff_left]; rfl
263
+
254
264
@[simp]
255
265
theorem map_fst_prod (f : Filter α) (g : Filter β) [NeBot g] : map Prod.fst (f ×ᶠ g) = f := by
256
- refine' le_antisymm tendsto_fst fun s hs => _
257
- rw [mem_map, mem_prod_iff] at hs
258
- rcases hs with ⟨t₁, h₁, t₂, h₂, hs⟩
259
- rw [← image_subset_iff, fst_image_prod] at hs
260
- exacts[mem_of_superset h₁ hs, nonempty_of_mem h₂]
266
+ ext s
267
+ simp only [mem_map, mem_prod_iff_left, mem_preimage, eventually_const, ← subset_def,
268
+ exists_mem_subset_iff]
261
269
#align filter.map_fst_prod Filter.map_fst_prod
262
270
263
271
@[simp]
@@ -340,6 +348,14 @@ theorem prod_map_map_eq' {α₁ : Type _} {α₂ : Type _} {β₁ : Type _} {β
340
348
prod_map_map_eq
341
349
#align filter.prod_map_map_eq' Filter.prod_map_map_eq'
342
350
351
+ theorem prod_map_left (f : α → β) (F : Filter α) (G : Filter γ) :
352
+ map f F ×ᶠ G = map (Prod.map f id) (F ×ᶠ G) := by
353
+ rw [← prod_map_map_eq', map_id]
354
+
355
+ theorem prod_map_right (f : β → γ) (F : Filter α) (G : Filter β) :
356
+ F ×ᶠ map f G = map (Prod.map id f) (F ×ᶠ G) := by
357
+ rw [← prod_map_map_eq', map_id]
358
+
343
359
theorem le_prod_map_fst_snd {f : Filter (α × β)} : f ≤ map Prod.fst f ×ᶠ map Prod.snd f :=
344
360
le_inf le_comap_map le_comap_map
345
361
#align filter.le_prod_map_fst_snd Filter.le_prod_map_fst_snd
@@ -370,6 +386,12 @@ theorem prod_inf_prod {f₁ f₂ : Filter α} {g₁ g₂ : Filter β} :
370
386
simp only [Filter.prod, comap_inf, inf_comm, inf_assoc, inf_left_comm]
371
387
#align filter.prod_inf_prod Filter.prod_inf_prod
372
388
389
+ theorem inf_prod {f₁ f₂ : Filter α} {g : Filter β} : (f₁ ⊓ f₂) ×ᶠ g = (f₁ ×ᶠ g) ⊓ (f₂ ×ᶠ g) := by
390
+ rw [prod_inf_prod, inf_idem]
391
+
392
+ theorem prod_inf {f : Filter α} {g₁ g₂ : Filter β} : f ×ᶠ (g₁ ⊓ g₂) = (f ×ᶠ g₁) ⊓ (f ×ᶠ g₂) := by
393
+ rw [prod_inf_prod, inf_idem]
394
+
373
395
@[simp]
374
396
theorem prod_principal_principal {s : Set α} {t : Set β} : 𝓟 s ×ᶠ 𝓟 t = 𝓟 (s ×ˢ t) := by
375
397
simp only [Filter.prod, comap_principal, principal_eq_iff_eq, comap_principal, inf_principal]; rfl
0 commit comments