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.314713
ι' : Type ?u.314716
α : Type u_1
β : Type ?u.314722
γ : Type ?u.314725
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ 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.314713
ι' : Type ?u.314716
α : Type u_1
β : Type ?u.314722
γ : Type ?u.314725
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

tactic: constructor
state_before: ι : Type ?u.314713
ι' : Type ?u.314716
α : Type u_1
β : Type ?u.314722
γ : Type ?u.314725
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 : ↑s), 𝓟 (Subtype.val '' Ici i)) ∧ ∀ (i : ↑s), Subtype.val '' Ici i ∈ ⨅ (a : α), 𝓟 (Ici a)

tactic: intro x y
state_before: ι : Type ?u.314713
ι' : Type ?u.314716
α : Type u_1
β : Type ?u.314722
γ : Type ?u.314725
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ s
this : Nonempty ↑s
⊢ Directed (fun x x_1 => x ≥ x_1) fun x => 𝓟 (Ici x)

tactic: use ⟨x ⊔ y ⊔ a, h le_sup_right⟩
state_before: ι : Type ?u.314713
ι' : Type ?u.314716
α : Type u_1
β : Type ?u.314722
γ : Type ?u.314725
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)

tactic: simp only [ge_iff_le, principal_mono, Ici_subset_Ici, ← Subtype.coe_le_coe, Subtype.coe_mk]
state_before: ι : Type ?u.314713
ι' : Type ?u.314716
α : Type u_1
β : Type ?u.314722
γ : Type ?u.314725
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)) { val := ↑x ⊔ ↑y ⊔ a, property := (_ : ↑x ⊔ ↑y ⊔ a ∈ s) }) ∧
    (fun x x_1 => x ≥ x_1) ((fun x => 𝓟 (Ici x)) y)
      ((fun x => 𝓟 (Ici x)) { val := ↑x ⊔ ↑y ⊔ a, property := (_ : ↑x ⊔ ↑y ⊔ a ∈ s) })

tactic: exact ⟨le_sup_left.trans le_sup_left, le_sup_right.trans le_sup_left⟩
state_before: ι : Type ?u.314713
ι' : Type ?u.314716
α : Type u_1
β : Type ?u.314722
γ : Type ?u.314725
inst✝ : SemilatticeSup α
a : α
s : Set α
h : Ici a ⊆ s
this : Nonempty ↑s
x y : ↑s
⊢ ↑x ≤ ↑x ⊔ ↑y ⊔ a ∧ ↑y ≤ ↑x ⊔ ↑y ⊔ a

tactic: intro x
state_before: case left
ι : Type ?u.314713
ι' : Type ?u.314716
α : Type u_1
β : Type ?u.314722
γ : Type ?u.314725
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 : ↑s), 𝓟 (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.314713
ι' : Type ?u.314716
α : Type u_1
β : Type ?u.314722
γ : Type ?u.314725
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 : ↑s), 𝓟 (Subtype.val '' Ici i)

tactic: rintro _ ⟨y, hy, rfl⟩
state_before: case left
ι : Type ?u.314713
ι' : Type ?u.314716
α : Type u_1
β : Type ?u.314722
γ : Type ?u.314725
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 { val := x ⊔ a, property := (_ : x ⊔ a ∈ s) } ⊆ Ici x

tactic: exact le_trans le_sup_left (Subtype.coe_le_coe.2 hy)
state_before: case left.intro.intro
ι : Type ?u.314713
ι' : Type ?u.314716
α : Type u_1
β : Type ?u.314722
γ : Type ?u.314725
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 { val := x ⊔ a, property := (_ : x ⊔ a ∈ s) }
⊢ ↑y ∈ Ici x

tactic: intro x
state_before: case right
ι : Type ?u.314713
ι' : Type ?u.314716
α : Type u_1
β : Type ?u.314722
γ : Type ?u.314725
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: filter_upwards [mem_atTop (↑x ⊔ a)]with b hb
state_before: case right
ι : Type ?u.314713
ι' : Type ?u.314716
α : Type u_1
β : Type ?u.314722
γ : Type ?u.314725
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: 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.314713
ι' : Type ?u.314716
α : Type u_1
β : Type ?u.314722
γ : Type ?u.314725
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