Theorem: cbiSup_eq_of_not_forall
File: Mathlib/Order/ConditionallyCompleteLattice/Basic.lean

tactic: rcases not_forall.1 hp with ⟨i₀, hi₀⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
⊢ ⨆ i, ⨆ (h : p i), f ⟨i, h⟩ = iSup f ⊔ sSup ∅
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
⊢ ⨆ i, ⨆ (h : p i), f ⟨i, h⟩ = iSup f ⊔ sSup ∅

tactic: have : Nonempty ι := ⟨i₀⟩
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
⊢ ⨆ i, ⨆ (h : p i), f ⟨i, h⟩ = iSup f ⊔ sSup ∅
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
⊢ ⨆ i, ⨆ (h : p i), f ⟨i, h⟩ = iSup f ⊔ sSup ∅

tactic: simp only [ciSup_eq_ite]
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
⊢ ⨆ i, ⨆ (h : p i), f ⟨i, h⟩ = iSup f ⊔ sSup ∅
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
⊢ (⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅) = iSup f ⊔ sSup ∅

tactic: by_cases H : BddAbove (range f)
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
⊢ (⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅) = iSup f ⊔ sSup ∅
state_after: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
⊢ (⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅) = iSup f ⊔ sSup ∅

case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : ¬BddAbove (range f)
⊢ (⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅) = iSup f ⊔ sSup ∅

tactic: apply le_antisymm
state_before: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
⊢ (⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅) = iSup f ⊔ sSup ∅
state_after: case pos.a
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
⊢ (⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅) ≤ iSup f ⊔ sSup ∅

case pos.a
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
⊢ iSup f ⊔ sSup ∅ ≤ ⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅

tactic: rcases H with ⟨c, hc⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
⊢ BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
c : α
hc : c ∈ upperBounds (range f)
⊢ BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)

tactic: refine ⟨c ⊔ sSup ∅, ?_⟩
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
c : α
hc : c ∈ upperBounds (range f)
⊢ BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
c : α
hc : c ∈ upperBounds (range f)
⊢ c ⊔ sSup ∅ ∈ upperBounds (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)

tactic: rintro - ⟨i, rfl⟩
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
c : α
hc : c ∈ upperBounds (range f)
⊢ c ⊔ sSup ∅ ∈ upperBounds (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
state_after: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
c : α
hc : c ∈ upperBounds (range f)
i : ι
⊢ (fun i => if h : p i then f ⟨i, h⟩ else sSup ∅) i ≤ c ⊔ sSup ∅

tactic: by_cases hi : p i
state_before: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
c : α
hc : c ∈ upperBounds (range f)
i : ι
⊢ (fun i => if h : p i then f ⟨i, h⟩ else sSup ∅) i ≤ c ⊔ sSup ∅
state_after: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
c : α
hc : c ∈ upperBounds (range f)
i : ι
hi : p i
⊢ (fun i => if h : p i then f ⟨i, h⟩ else sSup ∅) i ≤ c ⊔ sSup ∅

case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
c : α
hc : c ∈ upperBounds (range f)
i : ι
hi : ¬p i
⊢ (fun i => if h : p i then f ⟨i, h⟩ else sSup ∅) i ≤ c ⊔ sSup ∅

tactic: simp only [hi, dite_true, ge_iff_le, le_sup_iff, hc (mem_range_self _), true_or]
state_before: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
c : α
hc : c ∈ upperBounds (range f)
i : ι
hi : p i
⊢ (fun i => if h : p i then f ⟨i, h⟩ else sSup ∅) i ≤ c ⊔ sSup ∅
state_after: no goals

tactic: simp only [hi, dite_false, ge_iff_le, le_sup_right]
state_before: case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
c : α
hc : c ∈ upperBounds (range f)
i : ι
hi : ¬p i
⊢ (fun i => if h : p i then f ⟨i, h⟩ else sSup ∅) i ≤ c ⊔ sSup ∅
state_after: no goals

tactic: apply ciSup_le (fun i ↦ ?_)
state_before: case pos.a
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
⊢ (⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅) ≤ iSup f ⊔ sSup ∅
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
i : ι
⊢ (if h : p i then f ⟨i, h⟩ else sSup ∅) ≤ iSup f ⊔ sSup ∅

tactic: by_cases hi : p i
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
i : ι
⊢ (if h : p i then f ⟨i, h⟩ else sSup ∅) ≤ iSup f ⊔ sSup ∅
state_after: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
i : ι
hi : p i
⊢ (if h : p i then f ⟨i, h⟩ else sSup ∅) ≤ iSup f ⊔ sSup ∅

case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
i : ι
hi : ¬p i
⊢ (if h : p i then f ⟨i, h⟩ else sSup ∅) ≤ iSup f ⊔ sSup ∅

tactic: simp only [hi, dite_true, ge_iff_le, le_sup_iff]
state_before: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
i : ι
hi : p i
⊢ (if h : p i then f ⟨i, h⟩ else sSup ∅) ≤ iSup f ⊔ sSup ∅
state_after: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
i : ι
hi : p i
⊢ f ⟨i, ⋯⟩ ≤ iSup f ∨ f ⟨i, ⋯⟩ ≤ sSup ∅

tactic: left
state_before: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
i : ι
hi : p i
⊢ f ⟨i, ⋯⟩ ≤ iSup f ∨ f ⟨i, ⋯⟩ ≤ sSup ∅
state_after: case pos.h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
i : ι
hi : p i
⊢ f ⟨i, ⋯⟩ ≤ iSup f

tactic: exact le_ciSup H _
state_before: case pos.h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
i : ι
hi : p i
⊢ f ⟨i, ⋯⟩ ≤ iSup f
state_after: no goals

tactic: simp [hi]
state_before: case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
i : ι
hi : ¬p i
⊢ (if h : p i then f ⟨i, h⟩ else sSup ∅) ≤ iSup f ⊔ sSup ∅
state_after: no goals

tactic: apply sup_le
state_before: case pos.a
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
⊢ iSup f ⊔ sSup ∅ ≤ ⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅
state_after: case pos.a.a
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
⊢ iSup f ≤ ⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅

case pos.a.a
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
⊢ sSup ∅ ≤ ⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅

tactic: rcases isEmpty_or_nonempty (Subtype p) with hp|hp
state_before: case pos.a.a
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
⊢ iSup f ≤ ⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅
state_after: case pos.a.a.inl
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp✝ : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
hp : IsEmpty (Subtype p)
⊢ iSup f ≤ ⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅

case pos.a.a.inr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp✝ : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
hp : Nonempty (Subtype p)
⊢ iSup f ≤ ⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅

tactic: simp [iSup_of_empty']
state_before: case pos.a.a.inl
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp✝ : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
hp : IsEmpty (Subtype p)
⊢ iSup f ≤ ⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅
state_after: case pos.a.a.inl
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp✝ : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
hp : IsEmpty (Subtype p)
⊢ sSup ∅ ≤ ⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅

tactic: convert le_ciSup B i₀
state_before: case pos.a.a.inl
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp✝ : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
hp : IsEmpty (Subtype p)
⊢ sSup ∅ ≤ ⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅
state_after: case h.e'_3
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp✝ : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
hp : IsEmpty (Subtype p)
⊢ sSup ∅ = if h : p i₀ then f ⟨i₀, h⟩ else sSup ∅

tactic: simp [hi₀]
state_before: case h.e'_3
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp✝ : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
hp : IsEmpty (Subtype p)
⊢ sSup ∅ = if h : p i₀ then f ⟨i₀, h⟩ else sSup ∅
state_after: no goals

tactic: apply ciSup_le
state_before: case pos.a.a.inr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp✝ : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
hp : Nonempty (Subtype p)
⊢ iSup f ≤ ⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅
state_after: case pos.a.a.inr.H
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp✝ : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
hp : Nonempty (Subtype p)
⊢ ∀ (x : Subtype p), f x ≤ ⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅

tactic: rintro ⟨i, hi⟩
state_before: case pos.a.a.inr.H
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp✝ : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
hp : Nonempty (Subtype p)
⊢ ∀ (x : Subtype p), f x ≤ ⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅
state_after: case pos.a.a.inr.H.mk
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp✝ : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
hp : Nonempty (Subtype p)
i : ι
hi : p i
⊢ f ⟨i, hi⟩ ≤ ⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅

tactic: convert le_ciSup B i
state_before: case pos.a.a.inr.H.mk
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp✝ : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
hp : Nonempty (Subtype p)
i : ι
hi : p i
⊢ f ⟨i, hi⟩ ≤ ⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅
state_after: case h.e'_3
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp✝ : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
hp : Nonempty (Subtype p)
i : ι
hi : p i
⊢ f ⟨i, hi⟩ = if h : p i then f ⟨i, h⟩ else sSup ∅

tactic: simp [hi]
state_before: case h.e'_3
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp✝ : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
hp : Nonempty (Subtype p)
i : ι
hi : p i
⊢ f ⟨i, hi⟩ = if h : p i then f ⟨i, h⟩ else sSup ∅
state_after: no goals

tactic: convert le_ciSup B i₀
state_before: case pos.a.a
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
⊢ sSup ∅ ≤ ⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅
state_after: case h.e'_3
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
⊢ sSup ∅ = if h : p i₀ then f ⟨i₀, h⟩ else sSup ∅

tactic: simp [hi₀]
state_before: case h.e'_3
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : BddAbove (range f)
B : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
⊢ sSup ∅ = if h : p i₀ then f ⟨i₀, h⟩ else sSup ∅
state_after: no goals

tactic: have : iSup f = sSup (∅ : Set α) := csSup_of_not_bddAbove H
state_before: case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this : Nonempty ι
H : ¬BddAbove (range f)
⊢ (⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅) = iSup f ⊔ sSup ∅
state_after: case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this✝ : Nonempty ι
H : ¬BddAbove (range f)
this : iSup f = sSup ∅
⊢ (⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅) = iSup f ⊔ sSup ∅

tactic: simp only [this, le_refl, sup_of_le_left]
state_before: case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this✝ : Nonempty ι
H : ¬BddAbove (range f)
this : iSup f = sSup ∅
⊢ (⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅) = iSup f ⊔ sSup ∅
state_after: case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this✝ : Nonempty ι
H : ¬BddAbove (range f)
this : iSup f = sSup ∅
⊢ (⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅) = sSup ∅

tactic: apply csSup_of_not_bddAbove
state_before: case neg
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this✝ : Nonempty ι
H : ¬BddAbove (range f)
this : iSup f = sSup ∅
⊢ (⨆ i, if h : p i then f ⟨i, h⟩ else sSup ∅) = sSup ∅
state_after: case neg.hs
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this✝ : Nonempty ι
H : ¬BddAbove (range f)
this : iSup f = sSup ∅
⊢ ¬BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)

tactic: contrapose! H
state_before: case neg.hs
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this✝ : Nonempty ι
H : ¬BddAbove (range f)
this : iSup f = sSup ∅
⊢ ¬BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
state_after: case neg.hs
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this✝ : Nonempty ι
this : iSup f = sSup ∅
H : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
⊢ BddAbove (range f)

tactic: apply H.mono
state_before: case neg.hs
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this✝ : Nonempty ι
this : iSup f = sSup ∅
H : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
⊢ BddAbove (range f)
state_after: case neg.hs
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this✝ : Nonempty ι
this : iSup f = sSup ∅
H : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
⊢ range f ⊆ range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅

tactic: rintro - ⟨i, rfl⟩
state_before: case neg.hs
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this✝ : Nonempty ι
this : iSup f = sSup ∅
H : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
⊢ range f ⊆ range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅
state_after: case neg.hs.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this✝ : Nonempty ι
this : iSup f = sSup ∅
H : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
i : Subtype p
⊢ f i ∈ range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅

tactic: convert mem_range_self i.1
state_before: case neg.hs.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this✝ : Nonempty ι
this : iSup f = sSup ∅
H : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
i : Subtype p
⊢ f i ∈ range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅
state_after: case h.e'_4
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this✝ : Nonempty ι
this : iSup f = sSup ∅
H : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
i : Subtype p
⊢ f i = if h : p ↑i then f ⟨↑i, h⟩ else sSup ∅

tactic: simp [i.2]
state_before: case h.e'_4
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrder α
s t : Set α
a b : α
p : ι → Prop
f : Subtype p → α
hp : ¬∀ (i : ι), p i
i₀ : ι
hi₀ : ¬p i₀
this✝ : Nonempty ι
this : iSup f = sSup ∅
H : BddAbove (range fun i => if h : p i then f ⟨i, h⟩ else sSup ∅)
i : Subtype p
⊢ f i = if h : p ↑i then f ⟨↑i, h⟩ else sSup ∅
state_after: no goals