Built with doc-gen4, running Lean4. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓to navigate, Ctrl+🖱️to focus. On Mac, use Cmdinstead of Ctrl.
/-
Copyright (c) 2019 Johannes Hölzl. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl

! This file was ported from Lean 3 source module order.filter.lift
! leanprover-community/mathlib commit 8631e2d5ea77f6c13054d9151d82b83069680cb1
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathlib.Order.Filter.Bases
import Mathlib.Order.ConditionallyCompleteLattice.Basic

/-!
# Lift filters along filter and set functions
-/

open Set Classical Filter Function

namespace Filter

variable {
α: Type ?u.37916
α
β: Type ?u.16469
β
γ: Type ?u.28763
γ
:
Type _: Type (?u.43803+1)
Type _
} {
ι: Sort ?u.23
ι
:
Sort _: Type ?u.17365
Sort
Sort _: Type ?u.17365
_
} section lift /-- A variant on `bind` using a function `g` taking a set instead of a member of `α`. This is essentially a push-forward along a function mapping each set to a filter. -/ protected def
lift: (f : Filter α) → (g : Set αFilter β) → ?m.36 f g
lift
(
f: Filter α
f
:
Filter: Type ?u.26 → Type ?u.26
Filter
α: Type ?u.14
α
) (
g: Set αFilter β
g
:
Set: Type ?u.30 → Type ?u.30
Set
α: Type ?u.14
α
Filter: Type ?u.32 → Type ?u.32
Filter
β: Type ?u.17
β
) := ⨅
s: ?m.62
s
f: Filter α
f
,
g: Set αFilter β
g
s: ?m.62
s
#align filter.lift
Filter.lift: {α : Type u_1} → {β : Type u_2} → Filter α(Set αFilter β) → Filter β
Filter.lift
variable {
f: Filter α
f
f₁: Filter α
f₁
f₂: Filter α
f₂
:
Filter: Type ?u.3752 → Type ?u.3752
Filter
α: Type ?u.11600
α
} {
g: Set αFilter β
g
g₁: Set αFilter β
g₁
g₂: Set αFilter β
g₂
:
Set: Type ?u.11888 → Type ?u.11888
Set
α: Type ?u.22913
α
Filter: Type ?u.10991 → Type ?u.10991
Filter
β: Type ?u.693
β
} @[simp] theorem
lift_top: ∀ {α : Type u_1} {β : Type u_2} (g : Set αFilter β), Filter.lift g = g univ
lift_top
(
g: Set αFilter β
g
:
Set: Type ?u.730 → Type ?u.730
Set
α: Type ?u.690
α
Filter: Type ?u.732 → Type ?u.732
Filter
β: Type ?u.693
β
) : (
: ?m.739
:
Filter: Type ?u.737 → Type ?u.737
Filter
α: Type ?u.690
α
).
lift: {α : Type ?u.775} → {β : Type ?u.774} → Filter α(Set αFilter β) → Filter β
lift
g: Set αFilter β
g
=
g: Set αFilter β
g
univ: {α : Type ?u.788} → Set α
univ
:=

Goals accomplished! 🐙
α: Type u_1

β: Type u_2

γ: Type ?u.696

ι: Sort ?u.699

f, f₁, f₂: Filter α

g✝, g₁, g₂, g: Set αFilter β


Filter.lift g = g univ

Goals accomplished! 🐙
#align filter.lift_top
Filter.lift_top: ∀ {α : Type u_1} {β : Type u_2} (g : Set αFilter β), Filter.lift g = g univ
Filter.lift_top
-- porting note: use `∃ i, p i ∧ _` instead of `∃ i (hi : p i), _` /-- If `(p : ι → Prop, s : ι → Set α)` is a basis of a filter `f`, `g` is a monotone function `Set α → Filter γ`, and for each `i`, `(pg : β i → Prop, sg : β i → Set α)` is a basis of the filter `g (s i)`, then `(λ (i : ι) (x : β i), p i ∧ pg i x, λ (i : ι) (x : β i), sg i x)` is a basis of the filter `f.lift g`. This basis is parametrized by `i : ι` and `x : β i`, so in order to formulate this fact using `Filter.HasBasis` one has to use `Σ i, β i` as the index type, see `Filter.HasBasis.lift`. This lemma states the corresponding `mem_iff` statement without using a sigma type. -/ theorem
HasBasis.mem_lift_iff: ∀ {ι : Sort u_1} {p : ιProp} {s : ιSet α} {f : Filter α}, HasBasis f p s∀ {β : ιType u_3} {pg : (i : ι) → β iProp} {sg : (i : ι) → β iSet γ} {g : Set αFilter γ}, (∀ (i : ι), HasBasis (g (s i)) (pg i) (sg i)) → Monotone g∀ {s : Set γ}, s Filter.lift f g i, p i x, pg i x sg i x s
HasBasis.mem_lift_iff
{
ι: ?m.2828
ι
} {
p: ιProp
p
:
ι: ?m.2828
ι
Prop: Type
Prop
} {
s: ιSet α
s
:
ι: ?m.2828
ι
Set: Type ?u.2837 → Type ?u.2837
Set
α: Type ?u.2789
α
} {
f: Filter α
f
:
Filter: Type ?u.2841 → Type ?u.2841
Filter
α: Type ?u.2789
α
} (
hf: HasBasis f p s
hf
:
f: Filter α
f
.
HasBasis: {α : Type ?u.2845} → {ι : Sort ?u.2844} → Filter α(ιProp) → (ιSet α) → Prop
HasBasis
p: ιProp
p
s: ιSet α
s
) {
β: ιType u_3
β
:
ι: ?m.2828
ι
Type _: Type (?u.2867+1)
Type _
} {
pg: (i : ι) → β iProp
pg
: ∀
i: ?m.2871
i
,
β: ιType ?u.2867
β
i: ?m.2871
i
Prop: Type
Prop
} {
sg: (i : ι) → β iSet γ
sg
: ∀
i: ?m.2879
i
,
β: ιType ?u.2867
β
i: ?m.2879
i
Set: Type ?u.2884 → Type ?u.2884
Set
γ: Type ?u.2795
γ
} {
g: Set αFilter γ
g
:
Set: Type ?u.2890 → Type ?u.2890
Set
α: Type ?u.2789
α
Filter: Type ?u.2892 → Type ?u.2892
Filter
γ: Type ?u.2795
γ
} (
hg: ∀ (i : ι), HasBasis (g (s i)) (pg i) (sg i)
hg
: ∀
i: ?m.2896
i
, (
g: Set αFilter γ
g
<|
s: ιSet α
s
i: ?m.2896
i
).
HasBasis: {α : Type ?u.2902} → {ι : Sort ?u.2901} → Filter α(ιProp) → (ιSet α) → Prop
HasBasis
(
pg: (i : ι) → β iProp
pg
i: ?m.2896
i
) (
sg: (i : ι) → β iSet γ
sg
i: ?m.2896
i
)) (
gm: Monotone g
gm
:
Monotone: {α : Type ?u.2923} → {β : Type ?u.2922} → [inst : Preorder α] → [inst : Preorder β] → (αβ) → Prop
Monotone
g: Set αFilter γ
g
) {
s: Set γ
s
:
Set: Type ?u.3059 → Type ?u.3059
Set
γ: Type ?u.2795
γ
} :
s: Set γ
s
f: Filter α
f
.
lift: {α : Type ?u.3069} → {β : Type ?u.3068} → Filter α(Set αFilter β) → Filter β
lift
g: Set αFilter γ
g
↔ ∃
i: ?m.3091
i
,
p: ιProp
p
i: ?m.3091
i
∧ ∃
x: ?m.3096
x
,
pg: (i : ι) → β iProp
pg
i: ?m.3091
i
x: ?m.3096
x
sg: (i : ι) → β iSet γ
sg
i: ?m.3091
i
x: ?m.3096
x
s: Set γ
s
:=

Goals accomplished! 🐙
α: Type u_2

β✝: Type ?u.2792

γ: Type u_4

ι✝: Sort ?u.2798

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β✝

ι: Sort u_1

p: ιProp

s✝: ιSet α

f: Filter α

hf: HasBasis f p s✝

β: ιType u_3

pg: (i : ι) → β iProp

sg: (i : ι) → β iSet γ

g: Set αFilter γ

hg: ∀ (i : ι), HasBasis (g (s✝ i)) (pg i) (sg i)

gm: Monotone g

s: Set γ


s Filter.lift f g i, p i x, pg i x sg i x s
α: Type u_2

β✝: Type ?u.2792

γ: Type u_4

ι✝: Sort ?u.2798

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β✝

ι: Sort u_1

p: ιProp

s✝: ιSet α

f: Filter α

hf: HasBasis f p s✝

β: ιType u_3

pg: (i : ι) → β iProp

sg: (i : ι) → β iSet γ

g: Set αFilter γ

hg: ∀ (i : ι), HasBasis (g (s✝ i)) (pg i) (sg i)

gm: Monotone g

s: Set γ


refine'_1
DirectedOn ((fun s => g s) ⁻¹'o fun x x_1 => x x_1) f.sets
α: Type u_2

β✝: Type ?u.2792

γ: Type u_4

ι✝: Sort ?u.2798

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β✝

ι: Sort u_1

p: ιProp

s✝: ιSet α

f: Filter α

hf: HasBasis f p s✝

β: ιType u_3

pg: (i : ι) → β iProp

sg: (i : ι) → β iSet γ

g: Set αFilter γ

hg: ∀ (i : ι), HasBasis (g (s✝ i)) (pg i) (sg i)

gm: Monotone g

s: Set γ


refine'_2
(i, i f.sets s g i) i, p i x, pg i x sg i x s
α: Type u_2

β✝: Type ?u.2792

γ: Type u_4

ι✝: Sort ?u.2798

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β✝

ι: Sort u_1

p: ιProp

s✝: ιSet α

f: Filter α

hf: HasBasis f p s✝

β: ιType u_3

pg: (i : ι) → β iProp

sg: (i : ι) → β iSet γ

g: Set αFilter γ

hg: ∀ (i : ι), HasBasis (g (s✝ i)) (pg i) (sg i)

gm: Monotone g

s: Set γ


s Filter.lift f g i, p i x, pg i x sg i x s
α: Type u_2

β✝: Type ?u.2792

γ: Type u_4

ι✝: Sort ?u.2798

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β✝

ι: Sort u_1

p: ιProp

s✝: ιSet α

f: Filter α

hf: HasBasis f p s✝

β: ιType u_3

pg: (i : ι) → β iProp

sg: (i : ι) → β iSet γ

g: Set αFilter γ

hg: ∀ (i : ι), HasBasis (g (s✝ i)) (pg i) (sg i)

gm: Monotone g

s: Set γ


refine'_1
DirectedOn ((fun s => g s) ⁻¹'o fun x x_1 => x x_1) f.sets
α: Type u_2

β✝: Type ?u.2792

γ: Type u_4

ι✝: Sort ?u.2798

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β✝

ι: Sort u_1

p: ιProp

s✝: ιSet α

f: Filter α

hf: HasBasis f p s✝

β: ιType u_3

pg: (i : ι) → β iProp

sg: (i : ι) → β iSet γ

g: Set αFilter γ

hg: ∀ (i : ι), HasBasis (g (s✝ i)) (pg i) (sg i)

gm: Monotone g

s: Set γ


refine'_1
DirectedOn ((fun s => g s) ⁻¹'o fun x x_1 => x x_1) f.sets
α: Type u_2

β✝: Type ?u.2792

γ: Type u_4

ι✝: Sort ?u.2798

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β✝

ι: Sort u_1

p: ιProp

s✝: ιSet α

f: Filter α

hf: HasBasis f p s✝

β: ιType u_3

pg: (i : ι) → β iProp

sg: (i : ι) → β iSet γ

g: Set αFilter γ

hg: ∀ (i : ι), HasBasis (g (s✝ i)) (pg i) (sg i)

gm: Monotone g

s: Set γ


refine'_2
(i, i f.sets s g i) i, p i x, pg i x sg i x s
α: Type u_2

β✝: Type ?u.2792

γ: Type u_4

ι✝: Sort ?u.2798

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β✝

ι: Sort u_1

p: ιProp

s✝: ιSet α

f: Filter α

hf: HasBasis f p s✝

β: ιType u_3

pg: (i : ι) → β iProp

sg: (i : ι) → β iSet γ

g: Set αFilter γ

hg: ∀ (i : ι), HasBasis (g (s✝ i)) (pg i) (sg i)

gm: Monotone g

s: Set γ

t₁: Set α

ht₁: t₁ f.sets

t₂: Set α

ht₂: t₂ f.sets


refine'_1
z, z f.sets ((fun s => g s) ⁻¹'o fun x x_1 => x x_1) t₁ z ((fun s => g s) ⁻¹'o fun x x_1 => x x_1) t₂ z
α: Type u_2

β✝: Type ?u.2792

γ: Type u_4

ι✝: Sort ?u.2798

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β✝

ι: Sort u_1

p: ιProp

s✝: ιSet α

f: Filter α

hf: HasBasis f p s✝

β: ιType u_3

pg: (i : ι) → β iProp

sg: (i : ι) → β iSet γ

g: Set αFilter γ

hg: ∀ (i : ι), HasBasis (g (s✝ i)) (pg i) (sg i)

gm: Monotone g

s: Set γ


refine'_1
DirectedOn ((fun s => g s) ⁻¹'o fun x x_1 => x x_1) f.sets

Goals accomplished! 🐙
α: Type u_2

β✝: Type ?u.2792

γ: Type u_4

ι✝: Sort ?u.2798

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β✝

ι: Sort u_1

p: ιProp

s✝: ιSet α

f: Filter α

hf: HasBasis f p s✝

β: ιType u_3

pg: (i : ι) → β iProp

sg: (i : ι) → β iSet γ

g: Set αFilter γ

hg: ∀ (i : ι), HasBasis (g (s✝ i)) (pg i) (sg i)

gm: Monotone g

s: Set γ


s Filter.lift f g i, p i x, pg i x sg i x s
α: Type u_2

β✝: Type ?u.2792

γ: Type u_4

ι✝: Sort ?u.2798

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β✝

ι: Sort u_1

p: ιProp

s✝: ιSet α

f: Filter α

hf: HasBasis f p s✝

β: ιType u_3

pg: (i : ι) → β iProp

sg: (i : ι) → β iSet γ

g: Set αFilter γ

hg: ∀ (i : ι), HasBasis (g (s✝ i)) (pg i) (sg i)

gm: Monotone g

s: Set γ


refine'_2
(i, i f.sets s g i) i, p i x, pg i x sg i x s
α: Type u_2

β✝: Type ?u.2792

γ: Type u_4

ι✝: Sort ?u.2798

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β✝

ι: Sort u_1

p: ιProp

s✝: ιSet α

f: Filter α

hf: HasBasis f p s✝

β: ιType u_3

pg: (i : ι) → β iProp

sg: (i : ι) → β iSet γ

g: Set αFilter γ

hg: ∀ (i : ι), HasBasis (g (s✝ i)) (pg i) (sg i)

gm: Monotone g

s: Set γ


refine'_2
(i, i f.sets s g i) i, p i x, pg i x sg i x s
α: Type u_2

β✝: Type ?u.2792

γ: Type u_4

ι✝: Sort ?u.2798

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β✝

ι: Sort u_1

p: ιProp

s✝: ιSet α

f: Filter α

hf: HasBasis f p s✝

β: ιType u_3

pg: (i : ι) → β iProp

sg: (i : ι) → β iSet γ

g: Set αFilter γ

hg: ∀ (i : ι), HasBasis (g (s✝ i)) (pg i) (sg i)

gm: Monotone g

s: Set γ


refine'_2
(i, i f.sets s g i) i, p i s g (s✝ i)
α: Type u_2

β✝: Type ?u.2792

γ: Type u_4

ι✝: Sort ?u.2798

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β✝

ι: Sort u_1

p: ιProp

s✝: ιSet α

f: Filter α

hf: HasBasis f p s✝

β: ιType u_3

pg: (i : ι) → β iProp

sg: (i : ι) → β iSet γ

g: Set αFilter γ

hg: ∀ (i : ι), HasBasis (g (s✝ i)) (pg i) (sg i)

gm: Monotone g

s: Set γ


refine'_2
(i, i f.sets s g i) i, p i x, pg i x sg i x s

Goals accomplished! 🐙
#align filter.has_basis.mem_lift_iff
Filter.HasBasis.mem_lift_iffₓ: ∀ {α : Type u_2} {γ : Type u_4} {ι : Sort u_1} {p : ιProp} {s : ιSet α} {f : Filter α}, HasBasis f p s∀ {β : ιType u_3} {pg : (i : ι) → β iProp} {sg : (i : ι) → β iSet γ} {g : Set αFilter γ}, (∀ (i : ι), HasBasis (g (s i)) (pg i) (sg i)) → Monotone g∀ {s : Set γ}, s Filter.lift f g i, p i x, pg i x sg i x s
Filter.HasBasis.mem_lift_iffₓ
/-- If `(p : ι → Prop, s : ι → Set α)` is a basis of a filter `f`, `g` is a monotone function `Set α → Filter γ`, and for each `i`, `(pg : β i → Prop, sg : β i → Set α)` is a basis of the filter `g (s i)`, then `(λ (i : ι) (x : β i), p i ∧ pg i x, λ (i : ι) (x : β i), sg i x)` is a basis of the filter `f.lift g`. This basis is parametrized by `i : ι` and `x : β i`, so in order to formulate this fact using `has_basis` one has to use `Σ i, β i` as the index type. See also `Filter.HasBasis.mem_lift_iff` for the corresponding `mem_iff` statement formulated without using a sigma type. -/ theorem
HasBasis.lift: ∀ {ι : Type u_1} {p : ιProp} {s : ιSet α} {f : Filter α}, HasBasis f p s∀ {β : ιType u_3} {pg : (i : ι) → β iProp} {sg : (i : ι) → β iSet γ} {g : Set αFilter γ}, (∀ (i : ι), HasBasis (g (s i)) (pg i) (sg i)) → Monotone gHasBasis (Filter.lift f g) (fun i => p i.fst pg i.fst i.snd) fun i => sg i.fst i.snd
HasBasis.lift
{
ι: ?m.3779
ι
} {
p: ιProp
p
:
ι: ?m.3779
ι
Prop: Type
Prop
} {
s: ιSet α
s
:
ι: ?m.3779
ι
Set: Type ?u.3788 → Type ?u.3788
Set
α: Type ?u.3740
α
} {
f: Filter α
f
:
Filter: Type ?u.3792 → Type ?u.3792
Filter
α: Type ?u.3740
α
} (
hf: HasBasis f p s
hf
:
f: Filter α
f
.
HasBasis: {α : Type ?u.3796} → {ι : Sort ?u.3795} → Filter α(ιProp) → (ιSet α) → Prop
HasBasis
p: ιProp
p
s: ιSet α
s
) {
β: ιType ?u.3818
β
:
ι: ?m.3779
ι
Type _: Type (?u.3818+1)
Type _
} {
pg: (i : ι) → β iProp
pg
: ∀
i: ?m.3822
i
,
β: ιType ?u.3818
β
i: ?m.3822
i
Prop: Type
Prop
} {
sg: (i : ι) → β iSet γ
sg
: ∀
i: ?m.3830
i
,
β: ιType ?u.3818
β
i: ?m.3830
i
Set: Type ?u.3835 → Type ?u.3835
Set
γ: Type ?u.3746
γ
} {
g: Set αFilter γ
g
:
Set: Type ?u.3841 → Type ?u.3841
Set
α: Type ?u.3740
α
Filter: Type ?u.3843 → Type ?u.3843
Filter
γ: Type ?u.3746
γ
} (
hg: ∀ (i : ι), HasBasis (g (s i)) (pg i) (sg i)
hg
: ∀
i: ?m.3847
i
, (
g: Set αFilter γ
g
(
s: ιSet α
s
i: ?m.3847
i
)).
HasBasis: {α : Type ?u.3853} → {ι : Sort ?u.3852} → Filter α(ιProp) → (ιSet α) → Prop
HasBasis
(
pg: (i : ι) → β iProp
pg
i: ?m.3847
i
) (
sg: (i : ι) → β iSet γ
sg
i: ?m.3847
i
)) (
gm: Monotone g
gm
:
Monotone: {α : Type ?u.3874} → {β : Type ?u.3873} → [inst : Preorder α] → [inst : Preorder β] → (αβ) → Prop
Monotone
g: Set αFilter γ
g
) : (
f: Filter α
f
.
lift: {α : Type ?u.4011} → {β : Type ?u.4010} → Filter α(Set αFilter β) → Filter β
lift
g: Set αFilter γ
g
).
HasBasis: {α : Type ?u.4023} → {ι : Sort ?u.4022} → Filter α(ιProp) → (ιSet α) → Prop
HasBasis
(fun
i: (i : ι) × β i
i
: Σ
i: ?m.4037
i
,
β: ιType ?u.3818
β
i: ?m.4037
i
=>
p: ιProp
p
i: (i : ι) × β i
i
.
1: {α : Type ?u.4043} → {β : αType ?u.4042} → Sigma βα
1
pg: (i : ι) → β iProp
pg
i: (i : ι) × β i
i
.
1: {α : Type ?u.4052} → {β : αType ?u.4051} → Sigma βα
1
i: (i : ι) × β i
i
.
2: {α : Type ?u.4058} → {β : αType ?u.4057} → (self : Sigma β) → β self.fst
2
) fun
i: (i : ι) × β i
i
: Σ
i: ?m.4071
i
,
β: ιType ?u.3818
β
i: ?m.4071
i
=>
sg: (i : ι) → β iSet γ
sg
i: (i : ι) × β i
i
.
1: {α : Type ?u.4078} → {β : αType ?u.4077} → Sigma βα
1
i: (i : ι) × β i
i
.
2: {α : Type ?u.4084} → {β : αType ?u.4083} → (self : Sigma β) → β self.fst
2
:=

Goals accomplished! 🐙
α: Type u_2

β✝: Type ?u.3743

γ: Type u_4

ι✝: Sort ?u.3749

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β✝

ι: Type u_1

p: ιProp

s: ιSet α

f: Filter α

hf: HasBasis f p s

β: ιType u_3

pg: (i : ι) → β iProp

sg: (i : ι) → β iSet γ

g: Set αFilter γ

hg: ∀ (i : ι), HasBasis (g (s i)) (pg i) (sg i)

gm: Monotone g


HasBasis (Filter.lift f g) (fun i => p i.fst pg i.fst i.snd) fun i => sg i.fst i.snd
α: Type u_2

β✝: Type ?u.3743

γ: Type u_4

ι✝: Sort ?u.3749

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β✝

ι: Type u_1

p: ιProp

s: ιSet α

f: Filter α

hf: HasBasis f p s

β: ιType u_3

pg: (i : ι) → β iProp

sg: (i : ι) → β iSet γ

g: Set αFilter γ

hg: ∀ (i : ι), HasBasis (g (s i)) (pg i) (sg i)

gm: Monotone g

t: Set γ


(i, p i x, pg i x sg i x t) i, (p i.fst pg i.fst i.snd) sg i.fst i.snd t
α: Type u_2

β✝: Type ?u.3743

γ: Type u_4

ι✝: Sort ?u.3749

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β✝

ι: Type u_1

p: ιProp

s: ιSet α

f: Filter α

hf: HasBasis f p s

β: ιType u_3

pg: (i : ι) → β iProp

sg: (i : ι) → β iSet γ

g: Set αFilter γ

hg: ∀ (i : ι), HasBasis (g (s i)) (pg i) (sg i)

gm: Monotone g


HasBasis (Filter.lift f g) (fun i => p i.fst pg i.fst i.snd) fun i => sg i.fst i.snd

Goals accomplished! 🐙
#align filter.has_basis.lift
Filter.HasBasis.lift: ∀ {α : Type u_2} {γ : Type u_4} {ι : Type u_1} {p : ιProp} {s : ιSet α} {f : Filter α}, HasBasis f p s∀ {β : ιType u_3} {pg : (i : ι) → β iProp} {sg : (i : ι) → β iSet γ} {g : Set αFilter γ}, (∀ (i : ι), HasBasis (g (s i)) (pg i) (sg i)) → Monotone gHasBasis (Filter.lift f g) (fun i => p i.fst pg i.fst i.snd) fun i => sg i.fst i.snd
Filter.HasBasis.lift
theorem
mem_lift_sets: ∀ {α : Type u_1} {β : Type u_2} {f : Filter α} {g : Set αFilter β}, Monotone g∀ {s : Set β}, s Filter.lift f g t, t f s g t
mem_lift_sets
(
hg: Monotone g
hg
:
Monotone: {α : Type ?u.8225} → {β : Type ?u.8224} → [inst : Preorder α] → [inst : Preorder β] → (αβ) → Prop
Monotone
g: Set αFilter β
g
) {
s: Set β
s
:
Set: Type ?u.8363 → Type ?u.8363
Set
β: Type ?u.8188
β
} :
s: Set β
s
f: Filter α
f
.
lift: {α : Type ?u.8374} → {β : Type ?u.8373} → Filter α(Set αFilter β) → Filter β
lift
g: Set αFilter β
g
↔ ∃
t: ?m.8397
t
f: Filter α
f
,
s: Set β
s
g: Set αFilter β
g
t: ?m.8397
t
:= (
f: Filter α
f
.
basis_sets: ∀ {α : Type ?u.8427} (l : Filter α), HasBasis l (fun s => s l) id
basis_sets
.
mem_lift_iff: ∀ {α : Type ?u.8431} {γ : Type ?u.8433} {ι : Sort ?u.8430} {p : ιProp} {s : ιSet α} {f : Filter α}, HasBasis f p s∀ {β : ιType ?u.8432} {pg : (i : ι) → β iProp} {sg : (i : ι) → β iSet γ} {g : Set αFilter γ}, (∀ (i : ι), HasBasis (g (s i)) (pg i) (sg i)) → Monotone g∀ {s : Set γ}, s Filter.lift f g i, p i x, pg i x sg i x s
mem_lift_iff
(fun
s: ?m.8475
s
=> (
g: Set αFilter β
g
s: ?m.8475
s
).
basis_sets: ∀ {α : Type ?u.8478} (l : Filter α), HasBasis l (fun s => s l) id
basis_sets
)
hg: Monotone g
hg
).
trans: ∀ {a b c : Prop}, (a b) → (b c) → (a c)
trans
<|

Goals accomplished! 🐙
α: Type u_1

β: Type u_2

γ: Type ?u.8191

ι: Sort ?u.8194

f, f₁, f₂: Filter α

g, g₁, g₂: Set αFilter β

hg: Monotone g

s: Set β


(i, i f x, x g i id x s) t, t f s g t

Goals accomplished! 🐙
#align filter.mem_lift_sets
Filter.mem_lift_sets: ∀ {α : Type u_1} {β : Type u_2} {f : Filter α} {g : Set αFilter β}, Monotone g∀ {s : Set β}, s Filter.lift f g t, t f s g t
Filter.mem_lift_sets
theorem
sInter_lift_sets: ∀ {α : Type u_1} {β : Type u_2} {f : Filter α} {g : Set αFilter β}, Monotone g⋂₀ { s | s Filter.lift f g } = iInter fun s => iInter fun h => ⋂₀ { t | t g s }
sInter_lift_sets
(
hg: Monotone g
hg
:
Monotone: {α : Type ?u.8846} → {β : Type ?u.8845} → [inst : Preorder α] → [inst : Preorder β] → (αβ) → Prop
Monotone
g: Set αFilter β
g
) : ⋂₀ {
s: ?m.8992
s
|
s: ?m.8992
s
f: Filter α
f
.
lift: {α : Type ?u.9001} → {β : Type ?u.9000} → Filter α(Set αFilter β) → Filter β
lift
g: Set αFilter β
g
} = ⋂
s: ?m.9033
s
f: Filter α
f
, ⋂₀ {
t: ?m.9086
t
|
t: ?m.9086
t
g: Set αFilter β
g
s: ?m.9033
s
} :=

Goals accomplished! 🐙
α: Type u_1

β: Type u_2

γ: Type ?u.8812

ι: Sort ?u.8815

f, f₁, f₂: Filter α

g, g₁, g₂: Set αFilter β

hg: Monotone g


⋂₀ { s | s Filter.lift f g } = iInter fun s => iInter fun h => ⋂₀ { t | t g s }

Goals accomplished! 🐙
#align filter.sInter_lift_sets
Filter.sInter_lift_sets: ∀ {α : Type u_1} {β : Type u_2} {f : Filter α} {g : Set αFilter β}, Monotone g⋂₀ { s | s Filter.lift f g } = iInter fun s => iInter fun h => ⋂₀ { t | t g s }
Filter.sInter_lift_sets
theorem
mem_lift: ∀ {α : Type u_2} {β : Type u_1} {f : Filter α} {g : Set αFilter β} {s : Set β} {t : Set α}, t fs g ts Filter.lift f g
mem_lift
{
s: Set β
s
:
Set: Type ?u.10994 → Type ?u.10994
Set
β: Type ?u.10958
β
} {
t: Set α
t
:
Set: Type ?u.10997 → Type ?u.10997
Set
α: Type ?u.10955
α
} (
ht: t f
ht
:
t: Set α
t
f: Filter α
f
) (
hs: s g t
hs
:
s: Set β
s
g: Set αFilter β
g
t: Set α
t
) :
s: Set β
s
f: Filter α
f
.
lift: {α : Type ?u.11094} → {β : Type ?u.11093} → Filter α(Set αFilter β) → Filter β
lift
g: Set αFilter β
g
:=
le_principal_iff: ∀ {α : Type ?u.11114} {s : Set α} {f : Filter α}, f 𝓟 s s f
le_principal_iff
.
mp: ∀ {a b : Prop}, (a b) → ab
mp
<| show
f: Filter α
f
.
lift: {α : Type ?u.11134} → {β : Type ?u.11133} → Filter α(Set αFilter β) → Filter β
lift
g: Set αFilter β
g
𝓟: Set ?m.11148Filter ?m.11148
𝓟
s: Set β
s
from
iInf_le_of_le: ∀ {α : Type ?u.11187} {ι : Sort ?u.11188} [inst : CompleteLattice α] {f : ια} {a : α} (i : ι), f i aiInf f a
iInf_le_of_le
t: Set α
t
<|
iInf_le_of_le: ∀ {α : Type ?u.11241} {ι : Sort ?u.11242} [inst : CompleteLattice α] {f : ια} {a : α} (i : ι), f i aiInf f a
iInf_le_of_le
ht: t f
ht
<|
le_principal_iff: ∀ {α : Type ?u.11277} {s : Set α} {f : Filter α}, f 𝓟 s s f
le_principal_iff
.
mpr: ∀ {a b : Prop}, (a b) → ba
mpr
hs: s g t
hs
#align filter.mem_lift
Filter.mem_lift: ∀ {α : Type u_2} {β : Type u_1} {f : Filter α} {g : Set αFilter β} {s : Set β} {t : Set α}, t fs g ts Filter.lift f g
Filter.mem_lift
theorem
lift_le: ∀ {f : Filter α} {g : Set αFilter β} {h : Filter β} {s : Set α}, s fg s hFilter.lift f g h
lift_le
{
f: Filter α
f
:
Filter: Type ?u.11362 → Type ?u.11362
Filter
α: Type ?u.11323
α
} {
g: Set αFilter β
g
:
Set: Type ?u.11366 → Type ?u.11366
Set
α: Type ?u.11323
α
Filter: Type ?u.11368 → Type ?u.11368
Filter
β: Type ?u.11326
β
} {
h: Filter β
h
:
Filter: Type ?u.11371 → Type ?u.11371
Filter
β: Type ?u.11326
β
} {
s: Set α
s
:
Set: Type ?u.11374 → Type ?u.11374
Set
α: Type ?u.11323
α
} (
hs: s f
hs
:
s: Set α
s
f: Filter α
f
) (
hg: g s h
hg
:
g: Set αFilter β
g
s: Set α
s
h: Filter β
h
) :
f: Filter α
f
.
lift: {α : Type ?u.11452} → {β : Type ?u.11451} → Filter α(Set αFilter β) → Filter β
lift
g: Set αFilter β
g
h: Filter β
h
:=
iInf₂_le_of_le: ∀ {α : Type ?u.11478} {ι : Sort ?u.11479} {κ : ιSort ?u.11480} [inst : CompleteLattice α] {a : α} {f : (i : ι) → κ iα} (i : ι) (j : κ i), f i j a(i, j, f i j) a
iInf₂_le_of_le
s: Set α
s
hs: s f
hs
hg: g s h
hg
#align filter.lift_le
Filter.lift_le: ∀ {α : Type u_1} {β : Type u_2} {f : Filter α} {g : Set αFilter β} {h : Filter β} {s : Set α}, s fg s hFilter.lift f g h
Filter.lift_le
theorem
le_lift: ∀ {f : Filter α} {g : Set αFilter β} {h : Filter β}, h Filter.lift f g ∀ (s : Set α), s fh g s
le_lift
{
f: Filter α
f
:
Filter: Type ?u.11639 → Type ?u.11639
Filter
α: Type ?u.11600
α
} {
g: Set αFilter β
g
:
Set: Type ?u.11643 → Type ?u.11643
Set
α: Type ?u.11600
α
Filter: Type ?u.11645 → Type ?u.11645
Filter
β: Type ?u.11603
β
} {
h: Filter β
h
:
Filter: Type ?u.11648 → Type ?u.11648
Filter
β: Type ?u.11603
β
} :
h: Filter β
h
f: Filter α
f
.
lift: {α : Type ?u.11653} → {β : Type ?u.11652} → Filter α(Set αFilter β) → Filter β
lift
g: Set αFilter β
g
↔ ∀
s: ?m.11701
s
f: Filter α
f
,
h: Filter β
h
g: Set αFilter β
g
s: ?m.11701
s
:=
le_iInf₂_iff: ∀ {α : Type ?u.11748} {ι : Sort ?u.11749} {κ : ιSort ?u.11750} [inst : CompleteLattice α] {a : α} {f : (i : ι) → κ iα}, (a i, j, f i j) ∀ (i : ι) (j : κ i), a f i j
le_iInf₂_iff
#align filter.le_lift
Filter.le_lift: ∀ {α : Type u_1} {β : Type u_2} {f : Filter α} {g : Set αFilter β} {h : Filter β}, h Filter.lift f g ∀ (s : Set α), s fh g s
Filter.le_lift
theorem
lift_mono: ∀ {α : Type u_1} {β : Type u_2} {f₁ f₂ : Filter α} {g₁ g₂ : Set αFilter β}, f₁ f₂g₁ g₂Filter.lift f₁ g₁ Filter.lift f₂ g₂
lift_mono
(
hf: f₁ f₂
hf
:
f₁: Filter α
f₁
f₂: Filter α
f₂
) (
hg: g₁ g₂
hg
:
g₁: Set αFilter β
g₁
g₂: Set αFilter β
g₂
) :
f₁: Filter α
f₁
.
lift: {α : Type ?u.12010} → {β : Type ?u.12009} → Filter α(Set αFilter β) → Filter β
lift
g₁: Set αFilter β
g₁
f₂: Filter α
f₂
.
lift: {α : Type ?u.12022} → {β : Type ?u.12021} → Filter α(Set αFilter β) → Filter β
lift
g₂: Set αFilter β
g₂
:=
iInf_mono: ∀ {α : Type ?u.12064} {ι : Sort ?u.12065} [inst : CompleteLattice α] {f g : ια}, (∀ (i : ι), f i g i) → iInf f iInf g
iInf_mono
fun
s: ?m.12121
s
=>
iInf_mono': ∀ {α : Type ?u.12124} {ι : Sort ?u.12123} {ι' : Sort ?u.12125} [inst : CompleteLattice α] {f : ια} {g : ι'α}, (∀ (i' : ι'), i, f i g i') → iInf f iInf g
iInf_mono'
fun
hs: ?m.12165
hs
=> ⟨
hf: f₁ f₂
hf
hs: ?m.12165
hs
,
hg: g₁ g₂
hg
s: ?m.12121
s
#align filter.lift_mono
Filter.lift_mono: ∀ {α : Type u_1} {β : Type u_2} {f₁ f₂ : Filter α} {g₁ g₂ : Set αFilter β}, f₁ f₂g₁ g₂Filter.lift f₁ g₁ Filter.lift f₂ g₂
Filter.lift_mono
theorem
lift_mono': (∀ (s : Set α), s fg₁ s g₂ s) → Filter.lift f g₁ Filter.lift f g₂
lift_mono'
(
hg: ∀ (s : Set α), s fg₁ s g₂ s
hg
: ∀
s: ?m.12267
s
f: Filter α
f
,
g₁: Set αFilter β
g₁
s: ?m.12267
s
g₂: Set αFilter β
g₂
s: ?m.12267
s
) :
f: Filter α
f
.
lift: {α : Type ?u.12348} → {β : Type ?u.12347} → Filter α(Set αFilter β) → Filter β
lift
g₁: Set αFilter β
g₁
f: Filter α
f
.
lift: {α : Type ?u.12361} → {β : Type ?u.12360} → Filter α(Set αFilter β) → Filter β
lift
g₂: Set αFilter β
g₂
:=
iInf₂_mono: ∀ {α : Type ?u.12379} {ι : Sort ?u.12380} {κ : ιSort ?u.12381} [inst : CompleteLattice α] {f g : (i : ι) → κ iα}, (∀ (i : ι) (j : κ i), f i j g i j) → (i, j, f i j) i, j, g i j
iInf₂_mono
hg: ∀ (s : Set α), s fg₁ s g₂ s
hg
#align filter.lift_mono'
Filter.lift_mono': ∀ {α : Type u_1} {β : Type u_2} {f : Filter α} {g₁ g₂ : Set αFilter β}, (∀ (s : Set α), s fg₁ s g₂ s) → Filter.lift f g₁ Filter.lift f g₂
Filter.lift_mono'
theorem
tendsto_lift: ∀ {α : Type u_3} {β : Type u_2} {γ : Type u_1} {f : Filter α} {g : Set αFilter β} {m : γβ} {l : Filter γ}, Tendsto m l (Filter.lift f g) ∀ (s : Set α), s fTendsto m l (g s)
tendsto_lift
{
m: γβ
m
:
γ: Type ?u.12534
γ
β: Type ?u.12531
β
} {
l: Filter γ
l
:
Filter: Type ?u.12571 → Type ?u.12571
Filter
γ: Type ?u.12534
γ
} :
Tendsto: {α : Type ?u.12575} → {β : Type ?u.12574} → (αβ) → Filter αFilter βProp
Tendsto
m: γβ
m
l: Filter γ
l
(
f: Filter α
f
.
lift: {α : Type ?u.12583} → {β : Type ?u.12582} → Filter α(Set αFilter β) → Filter β
lift
g: Set αFilter β
g
) ↔ ∀
s: ?m.12597
s
f: Filter α
f
,
Tendsto: {α : Type ?u.12635} → {β : Type ?u.12634} → (αβ) → Filter αFilter βProp
Tendsto
m: γβ
m
l: Filter γ
l
(
g: Set αFilter β
g
s: ?m.12597
s
) :=

Goals accomplished! 🐙
α: Type u_3

β: Type u_2

γ: Type u_1

ι: Sort ?u.12537

f, f₁, f₂: Filter α

g, g₁, g₂: Set αFilter β

m: γβ

l: Filter γ


Tendsto m l (Filter.lift f g) ∀ (s : Set α), s fTendsto m l (g s)

Goals accomplished! 🐙
#align filter.tendsto_lift
Filter.tendsto_lift: ∀ {α : Type u_3} {β : Type u_2} {γ : Type u_1} {f : Filter α} {g : Set αFilter β} {m : γβ} {l : Filter γ}, Tendsto m l (Filter.lift f g) ∀ (s : Set α), s fTendsto m l (g s)
Filter.tendsto_lift
theorem
map_lift_eq: ∀ {α : Type u_1} {β : Type u_2} {γ : Type u_3} {f : Filter α} {g : Set αFilter β} {m : βγ}, Monotone gmap m (Filter.lift f g) = Filter.lift f (map m g)
map_lift_eq
{
m: βγ
m
:
β: Type ?u.12982
β
γ: Type ?u.12985
γ
} (
hg: Monotone g
hg
:
Monotone: {α : Type ?u.13023} → {β : Type ?u.13022} → [inst : Preorder α] → [inst : Preorder β] → (αβ) → Prop
Monotone
g: Set αFilter β
g
) :
map: {α : Type ?u.13163} → {β : Type ?u.13162} → (αβ) → Filter αFilter β
map
m: βγ
m
(
f: Filter α
f
.
lift: {α : Type ?u.13170} → {β : Type ?u.13169} → Filter α(Set αFilter β) → Filter β
lift
g: Set αFilter β
g
) =
f: Filter α
f
.
lift: {α : Type ?u.13182} → {β : Type ?u.13181} → Filter α(Set αFilter β) → Filter β
lift
(
map: {α : Type ?u.13198} → {β : Type ?u.13197} → (αβ) → Filter αFilter β
map
m: βγ
m
g: Set αFilter β
g
) := have :
Monotone: {α : Type ?u.13223} → {β : Type ?u.13222} → [inst : Preorder α] → [inst : Preorder β] → (αβ) → Prop
Monotone
(
map: {α : Type ?u.13285} → {β : Type ?u.13284} → (αβ) → Filter αFilter β
map
m: βγ
m
g: Set αFilter β
g
) :=
map_mono: ∀ {α : Type ?u.13384} {β : Type ?u.13383} {m : αβ}, Monotone (map m)
map_mono
.
comp: ∀ {α : Type ?u.13390} {β : Type ?u.13389} {γ : Type ?u.13388} [inst : Preorder α] [inst_1 : Preorder β] [inst_2 : Preorder γ] {g : βγ} {f : αβ}, Monotone gMonotone fMonotone (g f)
comp
hg: Monotone g
hg
Filter.ext: ∀ {α : Type ?u.13528} {f g : Filter α}, (∀ (s : Set α), s f s g) → f = g
Filter.ext
fun
s: ?m.13537
s
=>

Goals accomplished! 🐙
α: Type u_1

β: Type u_2

γ: Type u_3

ι: Sort ?u.12988

f, f₁, f₂: Filter α

g, g₁, g₂: Set αFilter β

m: βγ

hg: Monotone g

this: Monotone (map m g)

s: Set γ


s map m (Filter.lift f g) s Filter.lift f (map m g)

Goals accomplished! 🐙
#align filter.map_lift_eq
Filter.map_lift_eq: ∀ {α : Type u_1} {β : Type u_2} {γ : Type u_3} {f : Filter α} {g : Set αFilter β} {m : βγ}, Monotone gmap m (Filter.lift f g) = Filter.lift f (map m g)
Filter.map_lift_eq
theorem
comap_lift_eq: ∀ {α : Type u_3} {β : Type u_2} {γ : Type u_1} {f : Filter α} {g : Set αFilter β} {m : γβ}, comap m (Filter.lift f g) = Filter.lift f (comap m g)
comap_lift_eq
{
m: γβ
m
:
γ: Type ?u.14100
γ
β: Type ?u.14097
β
} :
comap: {α : Type ?u.14139} → {β : Type ?u.14138} → (αβ) → Filter βFilter α
comap
m: γβ
m
(
f: Filter α
f
.
lift: {α : Type ?u.14146} → {β : Type ?u.14145} → Filter α(Set αFilter β) → Filter β
lift
g: Set αFilter β
g
) =
f: Filter α
f
.
lift: {α : Type ?u.14160} → {β : Type ?u.14159} → Filter α(Set αFilter β) → Filter β
lift
(
comap: {α : Type ?u.14176} → {β : Type ?u.14175} → (αβ) → Filter βFilter α
comap
m: γβ
m
g: Set αFilter β
g
) :=

Goals accomplished! 🐙
α: Type u_3

β: Type u_2

γ: Type u_1

ι: Sort ?u.14103

f, f₁, f₂: Filter α

g, g₁, g₂: Set αFilter β

m: γβ


α: Type u_3

β: Type u_2

γ: Type u_1

ι: Sort ?u.14103

f, f₁, f₂: Filter α

g, g₁, g₂: Set αFilter β

m: γβ


(i, i_1, comap m (g i)) = s, h, (comap m g) s
α: Type u_3

β: Type u_2

γ: Type u_1

ι: Sort ?u.14103

f, f₁, f₂: Filter α

g, g₁, g₂: Set αFilter β

m: γβ


(i, i_1, comap m (g i)) = s, h, (comap m g) s
α: Type u_3

β: Type u_2

γ: Type u_1

ι: Sort ?u.14103

f, f₁, f₂: Filter α

g, g₁, g₂: Set αFilter β

m: γβ



Goals accomplished! 🐙
#align filter.comap_lift_eq
Filter.comap_lift_eq: ∀ {α : Type u_3} {β : Type u_2} {γ : Type u_1} {f : Filter α} {g : Set αFilter β} {m : γβ}, comap m (Filter.lift f g) = Filter.lift f (comap m g)
Filter.comap_lift_eq
theorem
comap_lift_eq2: ∀ {m : βα} {g : Set βFilter γ}, Monotone gFilter.lift (comap m f) g = Filter.lift f (g preimage m)
comap_lift_eq2
{
m: βα
m
:
β: Type ?u.14814
β
α: Type ?u.14811
α
} {
g: Set βFilter γ
g
:
Set: Type ?u.14855 → Type ?u.14855
Set
β: Type ?u.14814
β
Filter: Type ?u.14857 → Type ?u.14857
Filter
γ: Type ?u.14817
γ
} (
hg: Monotone g
hg
:
Monotone: {α : Type ?u.14861} → {β : Type ?u.14860} → [inst : Preorder α] → [inst : Preorder β] → (αβ) → Prop
Monotone
g: Set βFilter γ
g
) : (
comap: {α : Type ?u.15001} → {β : Type ?u.15000} → (αβ) → Filter βFilter α
comap
m: βα
m
f: Filter α
f
).
lift: {α : Type ?u.15009} → {β : Type ?u.15008} → Filter α(Set αFilter β) → Filter β
lift
g: Set βFilter γ
g
=
f: Filter α
f
.
lift: {α : Type ?u.15022} → {β : Type ?u.15021} → Filter α(Set αFilter β) → Filter β
lift
(
g: Set βFilter γ
g
preimage: {α : Type ?u.15042} → {β : Type ?u.15041} → (αβ) → Set βSet α
preimage
m: βα
m
) :=
le_antisymm: ∀ {α : Type ?u.15064} [inst : PartialOrder α] {a b : α}, a bb aa = b
le_antisymm
(
le_iInf₂: ∀ {α : Type ?u.15116} {ι : Sort ?u.15117} {κ : ιSort ?u.15118} [inst : CompleteLattice α] {a : α} {f : (i : ι) → κ iα}, (∀ (i : ι) (j : κ i), a f i j) → a i, j, f i j
le_iInf₂
fun
s: ?m.15205
s
hs: ?m.15208
hs
=>
iInf₂_le: ∀ {α : Type ?u.15210} {ι : Sort ?u.15211} {κ : ιSort ?u.15212} [inst : CompleteLattice α] {f : (i : ι) → κ iα} (i : ι) (j : κ i), (i, j, f i j) f i j
iInf₂_le
(
m: βα
m
⁻¹'
s: ?m.15205
s
) ⟨
s: ?m.15205
s
,
hs: ?m.15208
hs
,
Subset.rfl: ∀ {α : Type ?u.15488} {s : Set α}, s s
Subset.rfl
⟩) (
le_iInf₂: ∀ {α : Type ?u.15326} {ι : Sort ?u.15327} {κ : ιSort ?u.15328} [inst : CompleteLattice α] {a : α} {f : (i : ι) → κ iα}, (∀ (i : ι) (j : κ i), a f i j) → a i, j, f i j
le_iInf₂
fun
_s: ?m.15365
_s
s': Set α
s'
,
hs': s' f
hs'
,
h_sub: m ⁻¹' s' _s
h_sub
⟩ =>
iInf₂_le_of_le: ∀ {α : Type ?u.15411} {ι : Sort ?u.15412} {κ : ιSort ?u.15413} [inst : CompleteLattice α] {a : α} {f : (i : ι) → κ iα} (i : ι) (j : κ i), f i j a(i, j, f i j) a
iInf₂_le_of_le
s': Set α
s'
hs': s' f
hs'
<|
hg: Monotone g
hg
h_sub: m ⁻¹' s' _s
h_sub
) #align filter.comap_lift_eq2
Filter.comap_lift_eq2: ∀ {α : Type u_3} {β : Type u_1} {γ : Type u_2} {f : Filter α} {m : βα} {g : Set βFilter γ}, Monotone gFilter.lift (comap m f) g = Filter.lift f (g preimage m)
Filter.comap_lift_eq2
theorem
lift_map_le: ∀ {α : Type u_3} {β : Type u_1} {γ : Type u_2} {f : Filter α} {g : Set βFilter γ} {m : αβ}, Filter.lift (map m f) g Filter.lift f (g image m)
lift_map_le
{
g: Set βFilter γ
g
:
Set: Type ?u.15738 → Type ?u.15738
Set
β: Type ?u.15701
β
Filter: Type ?u.15740 → Type ?u.15740
Filter
γ: Type ?u.15704
γ
} {
m: αβ
m
:
α: Type ?u.15698
α
β: Type ?u.15701
β
} : (
map: {α : Type ?u.15749} → {β : Type ?u.15748} → (αβ) → Filter αFilter β
map
m: αβ
m
f: Filter α
f
).
lift: {α : Type ?u.15757} → {β : Type ?u.15756} → Filter α(Set αFilter β) → Filter β
lift
g: Set βFilter γ
g
f: Filter α
f
.
lift: {α : Type ?u.15772} → {β : Type ?u.15771} → Filter α(Set αFilter β) → Filter β
lift
(
g: Set βFilter γ
g
image: {α : Type ?u.15792} → {β : Type ?u.15791} → (αβ) → Set αSet β
image
m: αβ
m
) :=
le_lift: ∀ {α : Type ?u.15847} {β : Type ?u.15848} {f : Filter α} {g : Set αFilter β} {h : Filter β}, h Filter.lift f g ∀ (s : Set α), s fh g s
le_lift
.
2: ∀ {a b : Prop}, (a b) → ba
2
fun
_s: ?m.15881
_s
hs: ?m.15884
hs
=>
lift_le: ∀ {α : Type ?u.15886} {β : Type ?u.15887} {f : Filter α} {g : Set αFilter β} {h : Filter β} {s : Set α}, s fg s hFilter.lift f g h
lift_le
(
image_mem_map: ∀ {α : Type ?u.15909} {β : Type ?u.15908} {f : Filter α} {m : αβ} {s : Set α}, s fm '' s map m f
image_mem_map
hs: ?m.15884
hs
)
le_rfl: ∀ {α : Type ?u.15932} [inst : Preorder α] {a : α}, a a
le_rfl
#align filter.lift_map_le
Filter.lift_map_le: ∀ {α : Type u_3} {β : Type u_1} {γ : Type u_2} {f : Filter α} {g : Set βFilter γ} {m : αβ}, Filter.lift (map m f) g Filter.lift f (g image m)
Filter.lift_map_le
theorem
map_lift_eq2: ∀ {α : Type u_3} {β : Type u_1} {γ : Type u_2} {f : Filter α} {g : Set βFilter γ} {m : αβ}, Monotone gFilter.lift (map m f) g = Filter.lift f (g image m)
map_lift_eq2
{
g: Set βFilter γ
g
:
Set: Type ?u.16048 → Type ?u.16048
Set
β: Type ?u.16011
β
Filter: Type ?u.16050 → Type ?u.16050
Filter
γ: Type ?u.16014
γ
} {
m: αβ
m
:
α: Type ?u.16008
α
β: Type ?u.16011
β
} (
hg: Monotone g
hg
:
Monotone: {α : Type ?u.16058} → {β : Type ?u.16057} → [inst : Preorder α] → [inst : Preorder β] → (αβ) → Prop
Monotone
g: Set βFilter γ
g
) : (
map: {α : Type ?u.16198} → {β : Type ?u.16197} → (αβ) → Filter αFilter β
map
m: αβ
m
f: Filter α
f
).
lift: {α : Type ?u.16206} → {β : Type ?u.16205} → Filter α(Set αFilter β) → Filter β
lift
g: Set βFilter γ
g
=
f: Filter α
f
.
lift: {α : Type ?u.16219} → {β : Type ?u.16218} → Filter α(Set αFilter β) → Filter β
lift
(
g: Set βFilter γ
g
image: {α : Type ?u.16239} → {β : Type ?u.16238} → (αβ) → Set αSet β
image
m: αβ
m
) :=
lift_map_le: ∀ {α : Type ?u.16263} {β : Type ?u.16261} {γ : Type ?u.16262} {f : Filter α} {g : Set βFilter γ} {m : αβ}, Filter.lift (map m f) g Filter.lift f (g image m)
lift_map_le
.
antisymm: ∀ {α : Type ?u.16270} [inst : PartialOrder α] {a b : α}, a bb aa = b
antisymm
<|
le_lift: ∀ {α : Type ?u.16334} {β : Type ?u.16335} {f : Filter α} {g : Set αFilter β} {h : Filter β}, h Filter.lift f g ∀ (s : Set α), s fh g s
le_lift
.
2: ∀ {a b : Prop}, (a b) → ba
2
fun
_s: ?m.16361
_s
hs: ?m.16364
hs
=>
lift_le: ∀ {α : Type ?u.16366} {β : Type ?u.16367} {f : Filter α} {g : Set αFilter β} {h : Filter β} {s : Set α}, s fg s hFilter.lift f g h
lift_le
hs: ?m.16364
hs
<|
hg: Monotone g
hg
<|
image_preimage_subset: ∀ {α : Type ?u.16412} {β : Type ?u.16411} (f : αβ) (s : Set β), f '' (f ⁻¹' s) s
image_preimage_subset
_: ?m.16413?m.16414
_
_: Set ?m.16414
_
#align filter.map_lift_eq2
Filter.map_lift_eq2: ∀ {α : Type u_3} {β : Type u_1} {γ : Type u_2} {f : Filter α} {g : Set βFilter γ} {m : αβ}, Monotone gFilter.lift (map m f) g = Filter.lift f (g image m)
Filter.map_lift_eq2
theorem
lift_comm: ∀ {α : Type u_2} {β : Type u_1} {γ : Type u_3} {f : Filter α} {g : Filter β} {h : Set αSet βFilter γ}, (Filter.lift f fun s => Filter.lift g (h s)) = Filter.lift g fun t => Filter.lift f fun s => h s t
lift_comm
{
g: Filter β
g
:
Filter: Type ?u.16505 → Type ?u.16505
Filter
β: Type ?u.16469
β
} {
h: Set αSet βFilter γ
h
:
Set: Type ?u.16509 → Type ?u.16509
Set
α: Type ?u.16466
α
Set: Type ?u.16512 → Type ?u.16512
Set
β: Type ?u.16469
β
Filter: Type ?u.16514 → Type ?u.16514
Filter
γ: Type ?u.16472
γ
} : (
f: Filter α
f
.
lift: {α : Type ?u.16519} → {β : Type ?u.16518} → Filter α(Set αFilter β) → Filter β
lift
fun
s: ?m.16528
s
=>
g: Filter β
g
.
lift: {α : Type ?u.16531} → {β : Type ?u.16530} → Filter α(Set αFilter β) → Filter β
lift
(
h: Set αSet βFilter γ
h
s: ?m.16528
s
)) =
g: Filter β
g
.
lift: {α : Type ?u.16554} → {β : Type ?u.16553} → Filter α(Set αFilter β) → Filter β
lift
fun
t: ?m.16562
t
=>
f: Filter α
f
.
lift: {α : Type ?u.16565} → {β : Type ?u.16564} → Filter α(Set αFilter β) → Filter β
lift
fun
s: ?m.16575
s
=>
h: Set αSet βFilter γ
h
s: ?m.16575
s
t: ?m.16562
t
:=
le_antisymm: ∀ {α : Type ?u.16588} [inst : PartialOrder α] {a b : α}, a bb aa = b
le_antisymm
(
le_iInf: ∀ {α : Type ?u.16640} {ι : Sort ?u.16641} [inst : CompleteLattice α] {f : ια} {a : α}, (∀ (i : ι), a f i) → a iInf f
le_iInf
fun
i: ?m.16714
i
=>
le_iInf: ∀ {α : Type ?u.16716} {ι : Sort ?u.16717} [inst : CompleteLattice α] {f : ια} {a : α}, (∀ (i : ι), a f i) → a iInf f
le_iInf
fun
hi: ?m.16754
hi
=>
le_iInf: ∀ {α : Type ?u.16756} {ι : Sort ?u.16757} [inst : CompleteLattice α] {f : ια} {a : α}, (∀ (i : ι), a f i) → a iInf f
le_iInf
fun
j: ?m.16793
j
=>
le_iInf: ∀ {α : Type ?u.16795} {ι : Sort ?u.16796} [inst : CompleteLattice α] {f : ια} {a : α}, (∀ (i : ι), a f i) → a iInf f
le_iInf
fun
hj: ?m.16828
hj
=>
iInf_le_of_le: ∀ {α : Type ?u.16830} {ι : Sort ?u.16831} [inst : CompleteLattice α] {f : ια} {a : α} (i : ι), f i aiInf f a
iInf_le_of_le
j: ?m.16793
j
<|
iInf_le_of_le: ∀ {α : Type ?u.16862} {ι : Sort ?u.16863} [inst : CompleteLattice α] {f : ια} {a : α} (i : ι), f i aiInf f a
iInf_le_of_le
hj: ?m.16828
hj
<|
iInf_le_of_le: ∀ {α : Type ?u.16894} {ι : Sort ?u.16895} [inst : CompleteLattice α] {f : ια} {a : α} (i : ι), f i aiInf f a
iInf_le_of_le
i: ?m.16714
i
<|
iInf_le: ∀ {α : Type ?u.16926} {ι : Sort ?u.16927} [inst : CompleteLattice α] (f : ια) (i : ι), iInf f f i
iInf_le
_: ?m.16929?m.16928
_
hi: ?m.16754
hi
) (
le_iInf: ∀ {α : Type ?u.17006} {ι : Sort ?u.17007} [inst : CompleteLattice α] {f : ια} {a : α}, (∀ (i : ι), a f i) → a iInf f
le_iInf
fun
i: ?m.17039
i
=>
le_iInf: ∀ {α : Type ?u.17041} {ι : Sort ?u.17042} [inst : CompleteLattice α] {f : ια} {a : α}, (∀ (i : ι), a f i) → a iInf f
le_iInf
fun
hi: ?m.17073
hi
=>
le_iInf: ∀ {α : Type ?u.17075} {ι : Sort ?u.17076} [inst : CompleteLattice α] {f : ια} {a : α}, (∀ (i : ι), a f i) → a iInf f
le_iInf
fun
j: ?m.17107
j
=>
le_iInf: ∀ {α : Type ?u.17109} {ι : Sort ?u.17110} [inst : CompleteLattice α] {f : ια} {a : α}, (∀ (i : ι), a f i) → a iInf f
le_iInf
fun
hj: ?m.17141
hj
=>
iInf_le_of_le: ∀ {α : Type ?u.17143} {ι : Sort ?u.17144} [inst : CompleteLattice α] {f : ια} {a : α} (i : ι), f i aiInf f a
iInf_le_of_le
j: ?m.17107
j
<|
iInf_le_of_le: ∀ {α : Type ?u.17174} {ι : Sort ?u.17175} [inst : CompleteLattice α] {f : ια} {a : α} (i : ι), f i aiInf f a
iInf_le_of_le
hj: ?m.17141
hj
<|
iInf_le_of_le: ∀ {α : Type ?u.17205} {ι : Sort ?u.17206} [inst : CompleteLattice α] {f : ια} {a : α} (i : ι), f i aiInf f a
iInf_le_of_le
i: ?m.17039
i
<|
iInf_le: ∀ {α : Type ?u.17237} {ι : Sort ?u.17238} [inst : CompleteLattice α] (f : ια) (i : ι), iInf f f i
iInf_le
_: ?m.17240?m.17239
_
hi: ?m.17073
hi
) #align filter.lift_comm
Filter.lift_comm: ∀ {α : Type u_2} {β : Type u_1} {γ : Type u_3} {f : Filter α} {g : Filter β} {h : Set αSet βFilter γ}, (Filter.lift f fun s => Filter.lift g (h s)) = Filter.lift g fun t => Filter.lift f fun s => h s t
Filter.lift_comm
theorem
lift_assoc: ∀ {α : Type u_3} {β : Type u_1} {γ : Type u_2} {f : Filter α} {g : Set αFilter β} {h : Set βFilter γ}, Monotone gFilter.lift (Filter.lift f g) h = Filter.lift f fun s => Filter.lift (g s) h
lift_assoc
{
h: Set βFilter γ
h
:
Set: Type ?u.17396 → Type ?u.17396
Set
β: Type ?u.17359
β
Filter: Type ?u.17398 → Type ?u.17398
Filter
γ: Type ?u.17362
γ
} (
hg: Monotone g
hg
:
Monotone: {α : Type ?u.17402} → {β : Type ?u.17401} → [inst : Preorder α] → [inst : Preorder β] → (αβ) → Prop
Monotone
g: Set αFilter β
g
) : (
f: Filter α
f
.
lift: {α : Type ?u.17542} → {β : Type ?u.17541} → Filter α(Set αFilter β) → Filter β
lift
g: Set αFilter β
g
).
lift: {α : Type ?u.17555} → {β : Type ?u.17554} → Filter α(Set αFilter β) → Filter β
lift
h: Set βFilter γ
h
=
f: Filter α
f
.
lift: {α : Type ?u.17569} → {β : Type ?u.17568} → Filter α(Set αFilter β) → Filter β
lift
fun
s: ?m.17577
s
=> (
g: Set αFilter β
g
s: ?m.17577
s
).
lift: {α : Type ?u.17581} → {β : Type ?u.17580} → Filter α(Set αFilter β) → Filter β
lift
h: Set βFilter γ
h
:=
le_antisymm: ∀ {α : Type ?u.17600} [inst : PartialOrder α] {a b : α}, a bb aa = b
le_antisymm
(
le_iInf₂: ∀ {α : Type ?u.17652} {ι : Sort ?u.17653} {κ : ιSort ?u.17654} [inst : CompleteLattice α] {a : α} {f : (i : ι) → κ iα}, (∀ (i : ι) (j : κ i), a f i j) → a i, j, f i j
le_iInf₂
fun
_s: ?m.17742
_s
hs: ?m.17745
hs
=>
le_iInf₂: ∀ {α : Type ?u.17747} {ι : Sort ?u.17748} {κ : ιSort ?u.17749} [inst : CompleteLattice α] {a : α} {f : (i : ι) → κ iα}, (∀ (i : ι) (j : κ i), a f i j) → a i, j, f i j
le_iInf₂
fun
t: ?m.17792
t
ht: ?m.17795
ht
=>
iInf_le_of_le: ∀ {α : Type ?u.17797} {ι : Sort ?u.17798} [inst : CompleteLattice α] {f : ια} {a : α} (i : ι), f i aiInf f a
iInf_le_of_le
t: ?m.17792
t
<|
iInf_le: ∀ {α : Type ?u.17829} {ι : Sort ?u.17830} [inst : CompleteLattice α] (f : ια) (i : ι), iInf f f i
iInf_le
_: ?m.17832?m.17831
_
<| (
mem_lift_sets: ∀ {α : Type ?u.17835} {β : Type ?u.17836} {f : Filter α} {g : Set αFilter β}, Monotone g∀ {s : Set β}, s Filter.lift f g t, t f s g t
mem_lift_sets
hg: Monotone g
hg
).
mpr: ∀ {a b : Prop}, (a b) → ba
mpr
_: ?m.17874
_
,
hs: ?m.17745
hs
,
ht: ?m.17795
ht
⟩) (
le_iInf₂: ∀ {α : Type ?u.18001} {ι : Sort ?u.18002} {κ : ιSort ?u.18003} [inst : CompleteLattice α] {a : α} {f : (i : ι) → κ iα}, (∀ (i : ι) (j : κ i), a f i j) → a i, j, f i j
le_iInf₂
fun
t: ?m.18043
t
ht: ?m.18046
ht
=> let
s: Set α
s
,
hs: s f
hs
,
h': t g s
h'
⟩ := (
mem_lift_sets: ∀ {α : Type ?u.18048} {β : Type ?u.18049} {f : Filter α} {g : Set αFilter β}, Monotone g∀ {s : Set β}, s Filter.lift f g t, t f s g t
mem_lift_sets
hg: Monotone g
hg
).
mp: ∀ {a b : Prop}, (a b) → ab
mp
ht: ?m.18046
ht
iInf_le_of_le: ∀ {α : Type ?u.18120} {ι : Sort ?u.18121} [inst : CompleteLattice α] {f : ια} {a : α} (i : ι), f i aiInf f a
iInf_le_of_le
s: Set α
s
<|
iInf_le_of_le: ∀ {α : Type ?u.18152} {ι : Sort ?u.18153} [inst : CompleteLattice α] {f : ια} {a : α} (i : ι), f i aiInf f a
iInf_le_of_le
hs: s f
hs
<|
iInf_le_of_le: ∀ {α : Type ?u.18183} {ι : Sort ?u.18184} [inst : CompleteLattice α] {f : ια} {a : α} (i : ι), f i aiInf f a
iInf_le_of_le
t: ?m.18043
t
<|
iInf_le: ∀ {α : Type ?u.18215} {ι : Sort ?u.18216} [inst : CompleteLattice α] (f : ια) (i : ι), iInf f f i
iInf_le
_: ?m.18218?m.18217
_
h': t g s
h'
) #align filter.lift_assoc
Filter.lift_assoc: ∀ {α : Type u_3} {β : Type u_1} {γ : Type u_2} {f : Filter α} {g : Set αFilter β} {h : Set βFilter γ}, Monotone gFilter.lift (Filter.lift f g) h = Filter.lift f fun s => Filter.lift (g s) h
Filter.lift_assoc
theorem
lift_lift_same_le_lift: ∀ {α : Type u_1} {β : Type u_2} {f : Filter α} {g : Set αSet αFilter β}, (Filter.lift f fun s => Filter.lift f (g s)) Filter.lift f fun s => g s s
lift_lift_same_le_lift
{
g: Set αSet αFilter β
g
:
Set: Type ?u.18514 → Type ?u.18514
Set
α: Type ?u.18474
α
Set: Type ?u.18517 → Type ?u.18517
Set
α: Type ?u.18474
α
Filter: Type ?u.18519 → Type ?u.18519
Filter
β: Type ?u.18477
β
} : (
f: Filter α
f
.
lift: {α : Type ?u.18524} → {β : Type ?u.18523} → Filter α(Set αFilter β) → Filter β
lift
fun
s: ?m.18533
s
=>
f: Filter α
f
.
lift: {α : Type ?u.18536} → {β : Type ?u.18535} → Filter α(Set αFilter β) → Filter β
lift
(
g: Set αSet αFilter β
g
s: ?m.18533
s
)) ≤
f: Filter α
f
.
lift: {α : Type ?u.18557} → {β : Type ?u.18556} → Filter α(Set αFilter β) → Filter β
lift
fun
s: ?m.18565
s
=>
g: Set αSet αFilter β
g
s: ?m.18565
s
s: ?m.18565
s
:=
le_lift: ∀ {α : Type ?u.18608} {β : Type ?u.18609} {f : Filter α} {g : Set αFilter β} {h : Filter β}, h Filter.lift f g ∀ (s : Set α), s fh g s
le_lift
.
2: ∀ {a b : Prop}, (a b) → ba
2
fun
_s: ?m.18643
_s
hs: ?m.18646
hs
=>
lift_le: ∀ {α : Type ?u.18648} {β : Type ?u.18649} {f : Filter α} {g : Set αFilter β} {h : Filter β} {s : Set α}, s fg s hFilter.lift f g h
lift_le
hs: ?m.18646
hs
<|
lift_le: ∀ {α : Type ?u.18669} {β : Type ?u.18670} {f : Filter α} {g : Set αFilter β} {h : Filter β} {s : Set α}, s fg s hFilter.lift f g h
lift_le
hs: ?m.18646
hs
le_rfl: ∀ {α : Type ?u.18684} [inst : Preorder α] {a : α}, a a
le_rfl
#align filter.lift_lift_same_le_lift
Filter.lift_lift_same_le_lift: ∀ {α : Type u_1} {β : Type u_2} {f : Filter α} {g : Set αSet αFilter β}, (Filter.lift f fun s => Filter.lift f (g s)) Filter.lift f fun s => g s s
Filter.lift_lift_same_le_lift
theorem
lift_lift_same_eq_lift: ∀ {g : Set αSet αFilter β}, (∀ (s : Set α), Monotone fun t => g s t) → (∀ (t : Set α), Monotone fun s => g s t) → (Filter.lift f fun s => Filter.lift f (g s)) = Filter.lift f fun s => g s s
lift_lift_same_eq_lift
{
g: Set αSet αFilter β
g
:
Set: Type ?u.18794 → Type ?u.18794
Set
α: Type ?u.18754
α
Set: Type ?u.18797 → Type ?u.18797
Set
α: Type ?u.18754
α
Filter: Type ?u.18799 → Type ?u.18799
Filter
β: Type ?u.18757
β
} (
hg₁: ∀ (s : Set α), Monotone fun t => g s t
hg₁
: ∀
s: ?m.18803
s
,
Monotone: {α : Type ?u.18807} → {β : Type ?u.18806} → [inst : Preorder α] → [inst : Preorder β] → (αβ) → Prop
Monotone
fun
t: ?m.18861
t
=>
g: Set αSet αFilter β
g
s: ?m.18803
s
t: ?m.18861
t
) (
hg₂: ∀ (t : Set α), Monotone fun s => g s t
hg₂
: ∀
t: ?m.18948
t
,
Monotone: {α : Type ?u.18952} → {β : Type ?u.18951} → [inst : Preorder α] → [inst : Preorder β] → (αβ) → Prop
Monotone
fun
s: ?m.19006
s
=>
g: Set αSet αFilter β
g
s: ?m.19006
s
t: ?m.18948
t
) : (
f: Filter α
f
.
lift: {α : Type ?u.19015} → {β : Type ?u.19014} → Filter α(Set αFilter β) → Filter β
lift
fun
s: ?m.19024
s
=>
f: Filter α
f
.
lift: {α : Type ?u.19027} → {β : Type ?u.19026} → Filter α(Set αFilter β) → Filter β
lift
(
g: Set αSet αFilter β
g
s: ?m.19024
s
)) =
f: Filter α
f
.
lift: {α : Type ?u.19047} → {β : Type ?u.19046} → Filter α(Set αFilter β) → Filter β
lift
fun
s: ?m.19055
s
=>
g: Set αSet αFilter β
g
s: ?m.19055
s
s: ?m.19055
s
:=
lift_lift_same_le_lift: ∀ {α : Type ?u.19069} {β : Type ?u.19070} {f : Filter α} {g : Set αSet αFilter β}, (Filter.lift f fun s => Filter.lift f (g s)) Filter.lift f fun s => g s s
lift_lift_same_le_lift
.
antisymm: ∀ {α : Type ?u.19075} [inst : PartialOrder α] {a b : α}, a bb aa = b
antisymm
<|
le_lift: ∀ {α : Type ?u.19131} {β : Type ?u.19132} {f : Filter α} {g : Set αFilter β} {h : Filter β}, h Filter.lift f g ∀ (s : Set α), s fh g s
le_lift
.
2: ∀ {a b : Prop}, (a b) → ba
2
fun
s: ?m.19158
s
hs: ?m.19161
hs
=>
le_lift: ∀ {α : Type ?u.19163} {β : Type ?u.19164} {f : Filter α} {g : Set αFilter β} {h : Filter β}, h Filter.lift f g ∀ (s : Set α), s fh g s
le_lift
.
2: ∀ {a b : Prop}, (a b) → ba
2
fun
t: ?m.19183
t
ht: ?m.19186
ht
=>
lift_le: ∀ {α : Type ?u.19188} {β : Type ?u.19189} {f : Filter α} {g : Set αFilter β} {h : Filter β} {s : Set α}, s fg s hFilter.lift f g h
lift_le
(
inter_mem: ∀ {α : Type ?u.19204} {f : Filter α} {s t : Set α}, s ft fs t f
inter_mem
hs: ?m.19161
hs
ht: ?m.19186
ht
) <| calc
g: Set αSet αFilter β
g
(
s: ?m.19158
s
t: ?m.19183
t
) (
s: ?m.19158
s
t: ?m.19183
t
) ≤
g: Set αSet αFilter β
g
s: ?m.19158
s
(
s: ?m.19158
s
t: ?m.19183
t
) :=
hg₂: ∀ (t : Set α), Monotone fun s => g s t
hg₂
(
s: ?m.19158
s
t: ?m.19183
t
) (
inter_subset_left: ∀ {α : Type ?u.19317} (s t : Set α), s t s
inter_subset_left
_: Set ?m.19318
_
_: Set ?m.19318
_
)
_: ?m✝
_
g: Set αSet αFilter β
g
s: ?m.19158
s
t: ?m.19183
t
:=
hg₁: ∀ (s : Set α), Monotone fun t => g s t
hg₁
s: ?m.19158
s
(
inter_subset_right: ∀ {α : Type ?u.19360} (s t : Set α), s t t
inter_subset_right
_: Set ?m.19361
_
_: Set ?m.19361
_
) #align filter.lift_lift_same_eq_lift
Filter.lift_lift_same_eq_lift: ∀ {α : Type u_1} {β : Type u_2} {f : Filter α} {g : Set αSet αFilter β}, (∀ (s : Set α), Monotone fun t => g s t) → (∀ (t : Set α), Monotone fun s => g s t) → (Filter.lift f fun s => Filter.lift f (g s)) = Filter.lift f fun s => g s s
Filter.lift_lift_same_eq_lift
theorem
lift_principal: ∀ {α : Type u_1} {β : Type u_2} {g : Set αFilter β} {s : Set α}, Monotone gFilter.lift (𝓟 s) g = g s
lift_principal
{
s: Set α
s
:
Set: Type ?u.19524 → Type ?u.19524
Set
α: Type ?u.19485
α
} (
hg: Monotone g
hg
:
Monotone: {α : Type ?u.19528} → {β : Type ?u.19527} → [inst : Preorder α] → [inst : Preorder β] → (αβ) → Prop
Monotone
g: Set αFilter β
g
) : (
𝓟: Set ?m.19668Filter ?m.19668
𝓟
s: Set α
s
).
lift: {α : Type ?u.19673} → {β : Type ?u.19672} → Filter α(Set αFilter β) → Filter β
lift
g: Set αFilter β
g
=
g: Set αFilter β
g
s: Set α
s
:= (
lift_le: ∀ {α : Type ?u.19690} {β : Type ?u.19691} {f : Filter α} {g : Set αFilter β} {h : Filter β} {s : Set α}, s fg s hFilter.lift f g h
lift_le
(
mem_principal_self: ∀ {α : Type ?u.19698} (s : Set α), s 𝓟 s
mem_principal_self
_: Set ?m.19699
_
)
le_rfl: ∀ {α : Type ?u.19715} [inst : Preorder α] {a : α}, a a
le_rfl
).
antisymm: ∀ {α : Type ?u.19778} [inst : PartialOrder α] {a b : α}, a bb aa = b
antisymm
(
le_lift: ∀ {α : Type ?u.19821} {β : Type ?u.19822} {f : Filter α} {g : Set αFilter β} {h : Filter β}, h Filter.lift f g ∀ (s : Set α), s fh g s
le_lift
.
2: ∀ {a b : Prop}, (a b) → ba
2
fun
_t: ?m.19848
_t
ht: ?m.19851
ht
=>
hg: Monotone g
hg
ht: ?m.19851
ht
) #align filter.lift_principal
Filter.lift_principal: ∀ {α : Type u_1} {β : Type u_2} {g : Set αFilter β} {s : Set α}, Monotone gFilter.lift (𝓟 s) g = g s
Filter.lift_principal
theorem
monotone_lift: ∀ {α : Type u_2} {β : Type u_3} {γ : Type u_1} [inst : Preorder γ] {f : γFilter α} {g : γSet αFilter β}, Monotone fMonotone gMonotone fun c => Filter.lift (f c) (g c)
monotone_lift
[
Preorder: Type ?u.19911 → Type ?u.19911
Preorder
γ: Type ?u.19878
γ
] {
f: γFilter α
f
:
γ: Type ?u.19878
γ
Filter: Type ?u.19916 → Type ?u.19916
Filter
α: Type ?u.19872
α
} {
g: γSet αFilter β
g
:
γ: Type ?u.19878
γ
Set: Type ?u.19922 → Type ?u.19922
Set
α: Type ?u.19872
α
Filter: Type ?u.19924 → Type ?u.19924
Filter
β: Type ?u.19875
β
} (
hf: Monotone f
hf
:
Monotone: {α : Type ?u.19928} → {β : Type ?u.19927} → [inst : Preorder α] → [inst : Preorder β] → (αβ) → Prop
Monotone
f: γFilter α
f
) (
hg: Monotone g
hg
:
Monotone: {α : Type ?u.20014} → {β : Type ?u.20013} → [inst : Preorder α] → [inst : Preorder β] → (αβ) → Prop
Monotone
g: γSet αFilter β
g
) :
Monotone: {α : Type ?u.20124} → {β : Type ?u.20123} → [inst : Preorder α] → [inst : Preorder β] → (αβ) → Prop
Monotone
fun
c: ?m.20174
c
=> (
f: γFilter α
f
c: ?m.20174
c
).
lift: {α : Type ?u.20177} → {β : Type ?u.20176} → Filter α(Set αFilter β) → Filter β
lift
(
g: γSet αFilter β
g
c: ?m.20174
c
) := fun
_: ?m.20226
_
_: ?m.20229
_
h: ?m.20232
h
=>
lift_mono: ∀ {α : Type ?u.20234} {β : Type ?u.20235} {f₁ f₂ : Filter α} {g₁ g₂ : Set αFilter β}, f₁ f₂g₁ g₂Filter.lift f₁ g₁ Filter.lift f₂ g₂
lift_mono
(
hf: Monotone f
hf
h: ?m.20232
h
) (
hg: Monotone g
hg
h: ?m.20232
h
) #align filter.monotone_lift
Filter.monotone_lift: ∀ {α : Type u_2} {β : Type u_3} {γ : Type u_1} [inst : Preorder γ] {f : γFilter α} {g : γSet αFilter β}, Monotone fMonotone gMonotone fun c => Filter.lift (f c) (g c)
Filter.monotone_lift
theorem
lift_neBot_iff: ∀ {α : Type u_1} {β : Type u_2} {f : Filter α} {g : Set αFilter β}, Monotone g → (NeBot (Filter.lift f g) ∀ (s : Set α), s fNeBot (g s))
lift_neBot_iff
(
hm: Monotone g
hm
:
Monotone: {α : Type ?u.20372} → {β : Type ?u.20371} → [inst : Preorder α] → [inst : Preorder β] → (αβ) → Prop
Monotone
g: Set αFilter β
g
) : (
NeBot: {α : Type ?u.20510} → Filter αProp
NeBot
(
f: Filter α
f
.
lift: {α : Type ?u.20513} → {β : Type ?u.20512} → Filter α(Set αFilter β) → Filter β
lift
g: Set αFilter β
g
)) ↔ ∀
s: ?m.20527
s
f: Filter α
f
,
NeBot: {α : Type ?u.20564} → Filter αProp
NeBot
(
g: Set αFilter β
g
s: ?m.20527
s
) :=

Goals accomplished! 🐙
α: Type u_1

β: Type u_2

γ: Type ?u.20338

ι: Sort ?u.20341

f, f₁, f₂: Filter α

g, g₁, g₂: Set αFilter β

hm: Monotone g


NeBot (Filter.lift f g) ∀ (s : Set α), s fNeBot (g s)

Goals accomplished! 🐙
#align filter.lift_ne_bot_iff
Filter.lift_neBot_iff: ∀ {α : Type u_1} {β : Type u_2} {f : Filter α} {g : Set αFilter β}, Monotone g → (NeBot (Filter.lift f g) ∀ (s : Set α), s fNeBot (g s))
Filter.lift_neBot_iff
@[simp] theorem
lift_const: ∀ {α : Type u_1} {β : Type u_2} {f : Filter α} {g : Filter β}, (Filter.lift f fun x => g) = g
lift_const
{
f: Filter α
f
:
Filter: Type ?u.21046 → Type ?u.21046
Filter
α: Type ?u.21007
α
} {
g: Filter β
g
:
Filter: Type ?u.21049 → Type ?u.21049
Filter
β: Type ?u.21010
β
} : (
f: Filter α
f
.
lift: {α : Type ?u.21054} → {β : Type ?u.21053} → Filter α(Set αFilter β) → Filter β
lift
fun
_: ?m.21063
_
=>
g: Filter β
g
) =
g: Filter β
g
:=
iInf_subtype': ∀ {α : Type ?u.21074} {ι : Sort ?u.21075} [inst : CompleteLattice α] {p : ιProp} {f : (i : ι) → p iα}, (i, h, f i h) = x, f x (_ : p x)
iInf_subtype'
.
trans: ∀ {α : Sort ?u.21097} {a b c : α}, a = bb = ca = c
trans
iInf_const: ∀ {α : Type ?u.21144} {ι : Sort ?u.21143} [inst : CompleteLattice α] {a : α} [inst_1 : Nonempty ι], (_b, a) = a
iInf_const
#align filter.lift_const
Filter.lift_const: ∀ {α : Type u_1} {β : Type u_2} {f : Filter α} {g : Filter β}, (Filter.lift f fun x => g) = g
Filter.lift_const
@[simp] theorem
lift_inf: ∀ {α : Type u_1} {β : Type u_2} {f : Filter α} {g h : Set αFilter β}, (Filter.lift f fun x => g x h x) = Filter.lift f g Filter.lift f h
lift_inf
{
f: Filter α
f
:
Filter: Type ?u.21483 → Type ?u.21483
Filter
α: Type ?u.21444
α
} {
g: Set αFilter β
g
h: Set αFilter β
h
:
Set: Type ?u.21493 → Type ?u.21493
Set
α: Type ?u.21444
α
Filter: Type ?u.21495 → Type ?u.21495
Filter
β: Type ?u.21447
β
} : (
f: Filter α
f
.
lift: {α : Type ?u.21500} → {β : Type ?u.21499} → Filter α(Set αFilter β) → Filter β
lift
fun
x: ?m.21509
x
=>
g: Set αFilter β
g
x: ?m.21509
x
h: Set αFilter β
h
x: ?m.21509
x
) =
f: Filter α
f
.
lift: {α : Type ?u.21553} → {β : Type ?u.21552} → Filter α(Set αFilter β) → Filter β
lift
g: Set αFilter β
g
f: Filter α
f
.
lift: {α : Type ?u.21565} → {β : Type ?u.21564} → Filter α(Set αFilter β) → Filter β
lift
h: Set αFilter β
h
:=

Goals accomplished! 🐙
α: Type u_1

β: Type u_2

γ: Type ?u.21450

ι: Sort ?u.21453

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β

f: Filter α

g, h: Set αFilter β


(Filter.lift f fun x => g x h x) = Filter.lift f g Filter.lift f h

Goals accomplished! 🐙
#align filter.lift_inf
Filter.lift_inf: ∀ {α : Type u_1} {β : Type u_2} {f : Filter α} {g h : Set αFilter β}, (Filter.lift f fun x => g x h x) = Filter.lift f g Filter.lift f h
Filter.lift_inf
@[simp] theorem
lift_principal2: ∀ {α : Type u_1} {f : Filter α}, Filter.lift f 𝓟 = f
lift_principal2
{
f: Filter α
f
:
Filter: Type ?u.22493 → Type ?u.22493
Filter
α: Type ?u.22454
α
} :
f: Filter α
f
.
lift: {α : Type ?u.22498} → {β : Type ?u.22497} → Filter α(Set αFilter β) → Filter β
lift
𝓟: Set ?m.22507Filter ?m.22507
𝓟
=
f: Filter α
f
:=
le_antisymm: ∀ {α : Type ?u.22516} [inst : PartialOrder α] {a b : α}, a bb aa = b
le_antisymm
(fun
s: ?m.22569
s
hs: ?m.22572
hs
=>
mem_lift: ∀ {α : Type ?u.22575} {β : Type ?u.22574} {f : Filter α} {g : Set αFilter β} {s : Set β} {t : Set α}, t fs g ts Filter.lift f g
mem_lift
hs: ?m.22572
hs
(
mem_principal_self: ∀ {α : Type ?u.22590} (s : Set α), s 𝓟 s
mem_principal_self
s: ?m.22569
s
)) (
le_iInf: ∀ {α : Type ?u.22645} {ι : Sort ?u.22646} [inst : CompleteLattice α] {f : ια} {a : α}, (∀ (i : ι), a f i) → a iInf f
le_iInf
fun
s: ?m.22699
s
=>
le_iInf: ∀ {α : Type ?u.22701} {ι : Sort ?u.22702} [inst : CompleteLattice α] {f : ια} {a : α}, (∀ (i : ι), a f i) → a iInf f
le_iInf
fun
hs: ?m.22738
hs
=>

Goals accomplished! 🐙
α: Type u_1

β: Type ?u.22457

γ: Type ?u.22460

ι: Sort ?u.22463

f✝, f₁, f₂: Filter α

g, g₁, g₂: Set αFilter β

f: Filter α

s: Set α

hs: s f


f 𝓟 s

Goals accomplished! 🐙
) #align filter.lift_principal2
Filter.lift_principal2: ∀ {α : Type u_1} {f : Filter α}, Filter.lift f 𝓟 = f
Filter.lift_principal2
theorem
lift_iInf_le: ∀ {f : ιFilter α} {g : Set αFilter β}, Filter.lift (iInf f) g i, Filter.lift (f i) g
lift_iInf_le
{
f: ιFilter α
f
:
ι: Sort ?u.22922
ι
Filter: Type ?u.22954 → Type ?u.22954
Filter
α: Type ?u.22913
α
} {
g: Set αFilter β
g
:
Set: Type ?u.22958 → Type ?u.22958
Set
α: Type ?u.22913
α
Filter: Type ?u.22960 → Type ?u.22960
Filter
β: Type ?u.22916
β
} : (
iInf: {α : Type ?u.22965} → [inst : InfSet α] → {ι : Sort ?u.22964} → (ια) → α
iInf
f: ιFilter α
f
).
lift: {α : Type ?u.23009} → {β : Type ?u.23008} → Filter α(Set αFilter β) → Filter β
lift
g: Set αFilter β
g
≤ ⨅
i: ?m.23028
i
, (
f: ιFilter α
f
i: ?m.23028
i
).
lift: {α : Type ?u.23031} → {β : Type ?u.23030} → Filter α(Set αFilter β) → Filter β
lift
g: Set αFilter β
g
:=
le_iInf: ∀ {α : Type ?u.23117} {ι : Sort ?u.23118} [inst : CompleteLattice α] {f : ια} {a : α}, (∀ (i : ι), a f i) → a iInf f
le_iInf
fun
_: ?m.23172
_
=>
lift_mono: ∀ {α : Type ?u.23174} {β : Type ?u.23175} {f₁ f₂ : Filter α} {g₁ g₂ : Set αFilter β}, f₁ f₂g₁ g₂Filter.lift f₁ g₁ Filter.lift f₂ g₂
lift_mono
(
iInf_le: ∀ {α : Type ?u.23200} {ι : Sort ?u.23201} [inst : CompleteLattice α] (f : ια) (i : ι), iInf f f i
iInf_le
_: ?m.23203?m.23202
_
_: ?m.23203
_
)
le_rfl: ∀ {α : Type ?u.23260} [inst : Preorder α] {a : α}, a a
le_rfl
#align filter.lift_infi_le
Filter.lift_iInf_le: ∀ {α : Type u_1} {β : Type u_2} {ι : Sort u_3} {f : ιFilter α} {g : Set αFilter β}, Filter.lift (iInf f) g i, Filter.lift (f i) g
Filter.lift_iInf_le
theorem
lift_iInf: ∀ {α : Type u_2} {β : Type u_3} {ι : Sort u_1} [inst : Nonempty ι] {f : ιFilter α} {g : Set αFilter β}, (∀ (s t : Set α), g (s t) = g s g t) → Filter.lift (iInf f) g = i, Filter.lift (f i) g
lift_iInf
[
Nonempty: Sort ?u.23411 → Prop
Nonempty
ι: Sort ?u.23381
ι
] {
f: ιFilter α
f
:
ι: Sort ?u.23381
ι
Filter: Type ?u.23416 → Type ?u.23416
Filter
α: Type ?u.23372
α
} {
g: Set αFilter β
g
:
Set: Type ?u.23420 → Type ?u.23420
Set
α: Type ?u.23372
α
Filter: Type ?u.23422 → Type ?u.23422
Filter
β: Type ?u.23375
β
} (
hg: ∀ (s t : Set α), g (s t) = g s g t
hg
: ∀
s: ?m.23426
s
t: ?m.23429
t
,
g: Set αFilter β
g
(
s: ?m.23426
s
t: ?m.23429
t
) =
g: Set αFilter β
g
s: ?m.23426
s
g: Set αFilter β
g
t: ?m.23429
t
) : (
iInf: {α : Type ?u.23469} → [inst : InfSet α] → {ι : Sort ?u.23468} → (ια) → α
iInf
f: ιFilter α
f
).
lift: {α : Type ?u.23513} → {β : Type ?u.23512} → Filter α(Set αFilter β) → Filter β
lift
g: Set αFilter β
g
= ⨅
i: ?m.23531
i
, (
f: ιFilter α
f
i: ?m.23531
i
).
lift: {α : Type ?u.23534} → {β : Type ?u.23533} → Filter α(Set αFilter β) → Filter β
lift
g: Set αFilter β
g
:=

Goals accomplished! 🐙
α: Type u_2

β: Type u_3

γ: Type ?u.23378

ι: Sort u_1

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β

inst✝: Nonempty ι

f: ιFilter α

g: Set αFilter β

hg: ∀ (s t : Set α), g (s t) = g s g t


Filter.lift (iInf f) g = i, Filter.lift (f i) g
α: Type u_2

β: Type u_3

γ: Type ?u.23378

ι: Sort u_1

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β

inst✝: Nonempty ι

f: ιFilter α

g: Set αFilter β

hg: ∀ (s t : Set α), g (s t) = g s g t

s: Set β


s Filter.lift (iInf f) gs i, Filter.lift (f i) g
α: Type u_2

β: Type u_3

γ: Type ?u.23378

ι: Sort u_1

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β

inst✝: Nonempty ι

f: ιFilter α

g: Set αFilter β

hg: ∀ (s t : Set α), g (s t) = g s g t


Filter.lift (iInf f) g = i, Filter.lift (f i) g
α: Type u_2

β: Type u_3

γ: Type ?u.23378

ι: Sort u_1

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β

inst✝: Nonempty ι

f: ιFilter α

g: Set αFilter β

hg: ∀ (s t : Set α), g (s t) = g s g t

s: Set β


s Filter.lift (iInf f) gs i, Filter.lift (f i) g

Goals accomplished! 🐙
α: Type u_2

β: Type u_3

γ: Type ?u.23378

ι: Sort u_1

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β

inst✝: Nonempty ι

f: ιFilter α

g: Set αFilter β

hg: ∀ (s t : Set α), g (s t) = g s g t

s: Set β


∀ (t : Set α), t iInf f(i, Filter.lift (f i) g) g t
α: Type u_2

β: Type u_3

γ: Type ?u.23378

ι: Sort u_1

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β

inst✝: Nonempty ι

f: ιFilter α

g: Set αFilter β

hg: ∀ (s t : Set α), g (s t) = g s g t

s: Set β

t: Set α

ht: t iInf f


(i, Filter.lift (f i) g) g t
α: Type u_2

β: Type u_3

γ: Type ?u.23378

ι: Sort u_1

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β

inst✝: Nonempty ι

f: ιFilter α

g: Set αFilter β

hg: ∀ (s t : Set α), g (s t) = g s g t

s: Set β


∀ (t : Set α), t iInf f(i, Filter.lift (f i) g) g t
α: Type u_2

β: Type u_3

γ: Type ?u.23378

ι: Sort u_1

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β

inst✝: Nonempty ι

f: ιFilter α

g: Set αFilter β

hg: ∀ (s t : Set α), g (s t) = g s g t

s: Set β

t: Set α

ht: t iInf f


refine'_1
(i, Filter.lift (f i) g) g univ
α: Type u_2

β: Type u_3

γ: Type ?u.23378

ι: Sort u_1

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β

inst✝: Nonempty ι

f: ιFilter α

g: Set αFilter β

hg: ∀ (s t : Set α), g (s t) = g s g t

s: Set β

t: Set α

ht✝: t iInf f

i✝: ι

s₁✝, s₂✝: Set α

hs: s₁✝ f i✝

ht: (i, Filter.lift (f i) g) g s₂✝


refine'_2
(i, Filter.lift (f i) g) g (s₁✝ s₂✝)
α: Type u_2

β: Type u_3

γ: Type ?u.23378

ι: Sort u_1

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β

inst✝: Nonempty ι

f: ιFilter α

g: Set αFilter β

hg: ∀ (s t : Set α), g (s t) = g s g t

s: Set β


∀ (t : Set α), t iInf f(i, Filter.lift (f i) g) g t
α: Type u_2

β: Type u_3

γ: Type ?u.23378

ι: Sort u_1

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β

inst✝: Nonempty ι

f: ιFilter α

g: Set αFilter β

hg: ∀ (s t : Set α), g (s t) = g s g t

s: Set β

t: Set α

ht: t iInf f


refine'_1
(i, Filter.lift (f i) g) g univ
α: Type u_2

β: Type u_3

γ: Type ?u.23378

ι: Sort u_1

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β

inst✝: Nonempty ι

f: ιFilter α

g: Set αFilter β

hg: ∀ (s t : Set α), g (s t) = g s g t

s: Set β

t: Set α

ht: t iInf f


refine'_1
(i, Filter.lift (f i) g) g univ
α: Type u_2

β: Type u_3

γ: Type ?u.23378

ι: Sort u_1

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β

inst✝: Nonempty ι

f: ιFilter α

g: Set αFilter β

hg: ∀ (s t : Set α), g (s t) = g s g t

s: Set β

t: Set α

ht✝: t iInf f

i✝: ι

s₁✝, s₂✝: Set α

hs: s₁✝ f i✝

ht: (i, Filter.lift (f i) g) g s₂✝


refine'_2
(i, Filter.lift (f i) g) g (s₁✝ s₂✝)
α: Type u_2

β: Type u_3

γ: Type ?u.23378

ι: Sort u_1

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β

inst✝: Nonempty ι

f: ιFilter α

g: Set αFilter β

hg: ∀ (s t : Set α), g (s t) = g s g t

s: Set β

t: Set α

ht: t iInf f

inhabited_h: Inhabited ι


refine'_1
(i, Filter.lift (f i) g) g univ
α: Type u_2

β: Type u_3

γ: Type ?u.23378

ι: Sort u_1

f✝, f₁, f₂: Filter α

g✝, g₁, g₂: Set αFilter β

inst✝: Nonempty ι

f: ιFilter α

g: Set αFilter β

hg: ∀ (s t : Set α), g (s t) = g s g t

s: Set β

t: Set α

ht: t iInf