Theorem: Interval.coe_sInf
File: Mathlib/Order/Interval.lean

tactic: change setLike.coe (dite _ _ _) = ⋂ (s : Interval α) (_ : s ∈ S), (s : Set α)
state_before: α : Type u_1
β : Type ?u.53885
γ : Type ?u.53888
δ : Type ?u.53891
ι : Sort ?u.53894
κ : ι → Sort ?u.53899
inst✝¹ : CompleteLattice α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
S : Set (Interval α)
⊢ ↑(sInf S) = ⋂ (s : Interval α) (_ : s ∈ S), ↑s

tactic: split_ifs with h
state_before: α : Type u_1
β : Type ?u.53885
γ : Type ?u.53888
δ : Type ?u.53891
ι : Sort ?u.53894
κ : ι → Sort ?u.53899
inst✝¹ : CompleteLattice α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
S : Set (Interval α)
⊢ ↑(if h : ¬⊥ ∈ S ∧ ∀ ⦃s : NonemptyInterval α⦄, ↑s ∈ S → ∀ ⦃t : NonemptyInterval α⦄, ↑t ∈ S → s.fst ≤ t.snd then
        some
          { toProd := (⨆ (s : NonemptyInterval α) (_ : ↑s ∈ S), s.fst, ⨅ (s : NonemptyInterval α) (_ : ↑s ∈ S), s.snd),
            fst_le_snd :=
              (_ :
                (⨆ (i : NonemptyInterval α) (_ : ↑i ∈ S), i.fst) ≤
                  (⨆ (s : NonemptyInterval α) (_ : ↑s ∈ S), s.fst,
                      ⨅ (s : NonemptyInterval α) (_ : ↑s ∈ S), s.snd).snd) }
      else ⊥) =
    ⋂ (s : Interval α) (_ : s ∈ S), ↑s

tactic: simp_rw [not_and_or, Classical.not_not] at h
state_before: case inr
α : Type u_1
β : Type ?u.53885
γ : Type ?u.53888
δ : Type ?u.53891
ι : Sort ?u.53894
κ : ι → Sort ?u.53899
inst✝¹ : CompleteLattice α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
S : Set (Interval α)
h : ¬(¬⊥ ∈ S ∧ ∀ ⦃s : NonemptyInterval α⦄, ↑s ∈ S → ∀ ⦃t : NonemptyInterval α⦄, ↑t ∈ S → s.fst ≤ t.snd)
⊢ ↑⊥ = ⋂ (s : Interval α) (_ : s ∈ S), ↑s

tactic: rcases h with h | h
state_before: case inr
α : Type u_1
β : Type ?u.53885
γ : Type ?u.53888
δ : Type ?u.53891
ι : Sort ?u.53894
κ : ι → Sort ?u.53899
inst✝¹ : CompleteLattice α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
S : Set (Interval α)
h : ⊥ ∈ S ∨ ¬∀ ⦃s : NonemptyInterval α⦄, ↑s ∈ S → ∀ ⦃t : NonemptyInterval α⦄, ↑t ∈ S → s.fst ≤ t.snd
⊢ ↑⊥ = ⋂ (s : Interval α) (_ : s ∈ S), ↑s

tactic: ext
state_before: case inl
α : Type u_1
β : Type ?u.53885
γ : Type ?u.53888
δ : Type ?u.53891
ι : Sort ?u.53894
κ : ι → Sort ?u.53899
inst✝¹ : CompleteLattice α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
S : Set (Interval α)
h : ¬⊥ ∈ S ∧ ∀ ⦃s : NonemptyInterval α⦄, ↑s ∈ S → ∀ ⦃t : NonemptyInterval α⦄, ↑t ∈ S → s.fst ≤ t.snd
⊢ ↑(some
        { toProd := (⨆ (s : NonemptyInterval α) (_ : ↑s ∈ S), s.fst, ⨅ (s : NonemptyInterval α) (_ : ↑s ∈ S), s.snd),
          fst_le_snd :=
            (_ :
              (⨆ (i : NonemptyInterval α) (_ : ↑i ∈ S), i.fst) ≤
                (⨆ (s : NonemptyInterval α) (_ : ↑s ∈ S), s.fst,
                    ⨅ (s : NonemptyInterval α) (_ : ↑s ∈ S), s.snd).snd) }) =
    ⋂ (s : Interval α) (_ : s ∈ S), ↑s

tactic: simp [WithBot.some_eq_coe, Interval.forall, h.1, ← forall_and, ← NonemptyInterval.mem_def]
state_before: case inl.h
α : Type u_1
β : Type ?u.53885
γ : Type ?u.53888
δ : Type ?u.53891
ι : Sort ?u.53894
κ : ι → Sort ?u.53899
inst✝¹ : CompleteLattice α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
S : Set (Interval α)
h : ¬⊥ ∈ S ∧ ∀ ⦃s : NonemptyInterval α⦄, ↑s ∈ S → ∀ ⦃t : NonemptyInterval α⦄, ↑t ∈ S → s.fst ≤ t.snd
x✝ : α
⊢ x✝ ∈
      ↑(some
          { toProd := (⨆ (s : NonemptyInterval α) (_ : ↑s ∈ S), s.fst, ⨅ (s : NonemptyInterval α) (_ : ↑s ∈ S), s.snd),
            fst_le_snd :=
              (_ :
                (⨆ (i : NonemptyInterval α) (_ : ↑i ∈ S), i.fst) ≤
                  (⨆ (s : NonemptyInterval α) (_ : ↑s ∈ S), s.fst,
                      ⨅ (s : NonemptyInterval α) (_ : ↑s ∈ S), s.snd).snd) }) ↔
    x✝ ∈ ⋂ (s : Interval α) (_ : s ∈ S), ↑s

tactic: refine' (eq_empty_of_subset_empty _).symm
state_before: case inr.inl
α : Type u_1
β : Type ?u.53885
γ : Type ?u.53888
δ : Type ?u.53891
ι : Sort ?u.53894
κ : ι → Sort ?u.53899
inst✝¹ : CompleteLattice α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
S : Set (Interval α)
h : ⊥ ∈ S
⊢ ↑⊥ = ⋂ (s : Interval α) (_ : s ∈ S), ↑s

tactic: exact iInter₂_subset_of_subset _ h Subset.rfl
state_before: case inr.inl
α : Type u_1
β : Type ?u.53885
γ : Type ?u.53888
δ : Type ?u.53891
ι : Sort ?u.53894
κ : ι → Sort ?u.53899
inst✝¹ : CompleteLattice α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
S : Set (Interval α)
h : ⊥ ∈ S
⊢ (⋂ (s : Interval α) (_ : s ∈ S), ↑s) ⊆ ∅

tactic: refine' (not_nonempty_iff_eq_empty.1 _).symm
state_before: case inr.inr
α : Type u_1
β : Type ?u.53885
γ : Type ?u.53888
δ : Type ?u.53891
ι : Sort ?u.53894
κ : ι → Sort ?u.53899
inst✝¹ : CompleteLattice α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
S : Set (Interval α)
h : ¬∀ ⦃s : NonemptyInterval α⦄, ↑s ∈ S → ∀ ⦃t : NonemptyInterval α⦄, ↑t ∈ S → s.fst ≤ t.snd
⊢ ↑⊥ = ⋂ (s : Interval α) (_ : s ∈ S), ↑s

tactic: rintro ⟨x, hx⟩
state_before: case inr.inr
α : Type u_1
β : Type ?u.53885
γ : Type ?u.53888
δ : Type ?u.53891
ι : Sort ?u.53894
κ : ι → Sort ?u.53899
inst✝¹ : CompleteLattice α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
S : Set (Interval α)
h : ¬∀ ⦃s : NonemptyInterval α⦄, ↑s ∈ S → ∀ ⦃t : NonemptyInterval α⦄, ↑t ∈ S → s.fst ≤ t.snd
⊢ ¬Set.Nonempty (⋂ (s : Interval α) (_ : s ∈ S), ↑s)

tactic: rw [mem_iInter₂] at hx
state_before: case inr.inr.intro
α : Type u_1
β : Type ?u.53885
γ : Type ?u.53888
δ : Type ?u.53891
ι : Sort ?u.53894
κ : ι → Sort ?u.53899
inst✝¹ : CompleteLattice α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
S : Set (Interval α)
h : ¬∀ ⦃s : NonemptyInterval α⦄, ↑s ∈ S → ∀ ⦃t : NonemptyInterval α⦄, ↑t ∈ S → s.fst ≤ t.snd
x : α
hx : x ∈ ⋂ (s : Interval α) (_ : s ∈ S), ↑s
⊢ False

tactic: exact h fun s ha t hb => (hx _ ha).1.trans (hx _ hb).2
state_before: case inr.inr.intro
α : Type u_1
β : Type ?u.53885
γ : Type ?u.53888
δ : Type ?u.53891
ι : Sort ?u.53894
κ : ι → Sort ?u.53899
inst✝¹ : CompleteLattice α
inst✝ : DecidableRel fun x x_1 => x ≤ x_1
S : Set (Interval α)
h : ¬∀ ⦃s : NonemptyInterval α⦄, ↑s ∈ S → ∀ ⦃t : NonemptyInterval α⦄, ↑t ∈ S → s.fst ≤ t.snd
x : α
hx : ∀ (i : Interval α), i ∈ S → x ∈ ↑i
⊢ False