Theorem: Filter.map_val_atTop_of_Ici_subset
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: haveI : Nonempty s := ⟨⟨a, h le_rfl⟩⟩
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ s
⊢ map Subtype.val atTop = atTop
state_after: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ s
this : Nonempty ↑s
⊢ map Subtype.val atTop = atTop

tactic: simp only [le_antisymm_iff, atTop, le_iInf_iff, le_principal_iff, mem_map, mem_setOf_eq,
  map_iInf_eq this, map_principal]
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ s
this✝ : Nonempty ↑s
this : Directed (fun x x_1 => x ≥ x_1) fun x => 𝓟 (Ici x)
⊢ map Subtype.val atTop = atTop
state_after: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ s
this✝ : Nonempty ↑s
this : Directed (fun x x_1 => x ≥ x_1) fun x => 𝓟 (Ici x)
⊢ (∀ (i : α), Ici i ∈ ⨅ i, 𝓟 (Subtype.val '' Ici i)) ∧ ∀ (i : ↑s), Subtype.val '' Ici i ∈ ⨅ a, 𝓟 (Ici a)

tactic: constructor
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ s
this✝ : Nonempty ↑s
this : Directed (fun x x_1 => x ≥ x_1) fun x => 𝓟 (Ici x)
⊢ (∀ (i : α), Ici i ∈ ⨅ i, 𝓟 (Subtype.val '' Ici i)) ∧ ∀ (i : ↑s), Subtype.val '' Ici i ∈ ⨅ a, 𝓟 (Ici a)
state_after: case left
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ s
this✝ : Nonempty ↑s
this : Directed (fun x x_1 => x ≥ x_1) fun x => 𝓟 (Ici x)
⊢ ∀ (i : α), Ici i ∈ ⨅ i, 𝓟 (Subtype.val '' Ici i)

case right
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ s
this✝ : Nonempty ↑s
this : Directed (fun x x_1 => x ≥ x_1) fun x => 𝓟 (Ici x)
⊢ ∀ (i : ↑s), Subtype.val '' Ici i ∈ ⨅ a, 𝓟 (Ici a)

tactic: use ⟨x ⊔ y ⊔ a, h le_sup_right⟩
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ s
this : Nonempty ↑s
x y : ↑s
⊢ ∃ z,
    (fun x x_1 => x ≥ x_1) ((fun x => 𝓟 (Ici x)) x) ((fun x => 𝓟 (Ici x)) z) ∧
      (fun x x_1 => x ≥ x_1) ((fun x => 𝓟 (Ici x)) y) ((fun x => 𝓟 (Ici x)) z)
state_after: case h
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ s
this : Nonempty ↑s
x y : ↑s
⊢ (fun x x_1 => x ≥ x_1) ((fun x => 𝓟 (Ici x)) x) ((fun x => 𝓟 (Ici x)) ⟨↑x ⊔ ↑y ⊔ a, ⋯⟩) ∧
    (fun x x_1 => x ≥ x_1) ((fun x => 𝓟 (Ici x)) y) ((fun x => 𝓟 (Ici x)) ⟨↑x ⊔ ↑y ⊔ a, ⋯⟩)

tactic: simp only [principal_mono, Ici_subset_Ici, ← Subtype.coe_le_coe, Subtype.coe_mk]
state_before: case h
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ s
this : Nonempty ↑s
x y : ↑s
⊢ (fun x x_1 => x ≥ x_1) ((fun x => 𝓟 (Ici x)) x) ((fun x => 𝓟 (Ici x)) ⟨↑x ⊔ ↑y ⊔ a, ⋯⟩) ∧
    (fun x x_1 => x ≥ x_1) ((fun x => 𝓟 (Ici x)) y) ((fun x => 𝓟 (Ici x)) ⟨↑x ⊔ ↑y ⊔ a, ⋯⟩)
state_after: case h
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ s
this : Nonempty ↑s
x y : ↑s
⊢ ↑x ≤ ↑x ⊔ ↑y ⊔ a ∧ ↑y ≤ ↑x ⊔ ↑y ⊔ a

tactic: exact ⟨le_sup_left.trans le_sup_left, le_sup_right.trans le_sup_left⟩
state_before: case h
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ s
this : Nonempty ↑s
x y : ↑s
⊢ ↑x ≤ ↑x ⊔ ↑y ⊔ a ∧ ↑y ≤ ↑x ⊔ ↑y ⊔ a
state_after: no goals

tactic: intro x
state_before: case left
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ s
this✝ : Nonempty ↑s
this : Directed (fun x x_1 => x ≥ x_1) fun x => 𝓟 (Ici x)
⊢ ∀ (i : α), Ici i ∈ ⨅ i, 𝓟 (Subtype.val '' Ici i)
state_after: case left
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ s
this✝ : Nonempty ↑s
this : Directed (fun x x_1 => x ≥ x_1) fun x => 𝓟 (Ici x)
x : α
⊢ Ici x ∈ ⨅ i, 𝓟 (Subtype.val '' Ici i)

tactic: refine mem_of_superset (mem_iInf_of_mem ⟨x ⊔ a, h le_sup_right⟩ (mem_principal_self _)) ?_
state_before: case left
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ s
this✝ : Nonempty ↑s
this : Directed (fun x x_1 => x ≥ x_1) fun x => 𝓟 (Ici x)
x : α
⊢ Ici x ∈ ⨅ i, 𝓟 (Subtype.val '' Ici i)
state_after: case left
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ s
this✝ : Nonempty ↑s
this : Directed (fun x x_1 => x ≥ x_1) fun x => 𝓟 (Ici x)
x : α
⊢ Subtype.val '' Ici ⟨x ⊔ a, ⋯⟩ ⊆ Ici x

tactic: rintro _ ⟨y, hy, rfl⟩
state_before: case left
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ s
this✝ : Nonempty ↑s
this : Directed (fun x x_1 => x ≥ x_1) fun x => 𝓟 (Ici x)
x : α
⊢ Subtype.val '' Ici ⟨x ⊔ a, ⋯⟩ ⊆ Ici x
state_after: case left.intro.intro
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ s
this✝ : Nonempty ↑s
this : Directed (fun x x_1 => x ≥ x_1) fun x => 𝓟 (Ici x)
x : α
y : ↑s
hy : y ∈ Ici ⟨x ⊔ a, ⋯⟩
⊢ ↑y ∈ Ici x

tactic: exact le_trans le_sup_left (Subtype.coe_le_coe.2 hy)
state_before: case left.intro.intro
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ s
this✝ : Nonempty ↑s
this : Directed (fun x x_1 => x ≥ x_1) fun x => 𝓟 (Ici x)
x : α
y : ↑s
hy : y ∈ Ici ⟨x ⊔ a, ⋯⟩
⊢ ↑y ∈ Ici x
state_after: no goals

tactic: intro x
state_before: case right
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ s
this✝ : Nonempty ↑s
this : Directed (fun x x_1 => x ≥ x_1) fun x => 𝓟 (Ici x)
⊢ ∀ (i : ↑s), Subtype.val '' Ici i ∈ ⨅ a, 𝓟 (Ici a)
state_after: case right
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ s
this✝ : Nonempty ↑s
this : Directed (fun x x_1 => x ≥ x_1) fun x => 𝓟 (Ici x)
x : ↑s
⊢ Subtype.val '' Ici x ∈ ⨅ a, 𝓟 (Ici a)

tactic: filter_upwards [mem_atTop (↑x ⊔ a)] with b hb
state_before: case right
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ s
this✝ : Nonempty ↑s
this : Directed (fun x x_1 => x ≥ x_1) fun x => 𝓟 (Ici x)
x : ↑s
⊢ Subtype.val '' Ici x ∈ ⨅ a, 𝓟 (Ici a)
state_after: case h
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ s
this✝ : Nonempty ↑s
this : Directed (fun x x_1 => x ≥ x_1) fun x => 𝓟 (Ici x)
x : ↑s
b : α
hb : ↑x ⊔ a ≤ b
⊢ b ∈ Subtype.val '' Ici x

tactic: exact ⟨⟨b, h <| le_sup_right.trans hb⟩, Subtype.coe_le_coe.1 (le_sup_left.trans hb), rfl⟩
state_before: case h
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ s
this✝ : Nonempty ↑s
this : Directed (fun x x_1 => x ≥ x_1) fun x => 𝓟 (Ici x)
x : ↑s
b : α
hb : ↑x ⊔ a ≤ b
⊢ b ∈ Subtype.val '' Ici x
state_after: no goals