Theorem: Set.mem_Icc_Ico_Ioc_Ioo_of_subset_of_subset
File: Mathlib/Order/Interval/Set/Basic.lean

tactic: by_cases ha : a ∈ s <;> by_cases hb : b ∈ s
state_before: α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
⊢ s ∈ {Icc a b, Ico a b, Ioc a b, Ioo a b}
state_after: case pos
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
ha : a ∈ s
hb : b ∈ s
⊢ s ∈ {Icc a b, Ico a b, Ioc a b, Ioo a b}

case neg
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
ha : a ∈ s
hb : b ∉ s
⊢ s ∈ {Icc a b, Ico a b, Ioc a b, Ioo a b}

case pos
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
ha : a ∉ s
hb : b ∈ s
⊢ s ∈ {Icc a b, Ico a b, Ioc a b, Ioo a b}

case neg
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
ha : a ∉ s
hb : b ∉ s
⊢ s ∈ {Icc a b, Ico a b, Ioc a b, Ioo a b}

tactic: refine Or.inl (Subset.antisymm hc ?_)
state_before: case pos
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
ha : a ∈ s
hb : b ∈ s
⊢ s ∈ {Icc a b, Ico a b, Ioc a b, Ioo a b}
state_after: case pos
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
ha : a ∈ s
hb : b ∈ s
⊢ Icc a b ⊆ s

tactic: rwa [← Ico_diff_left, diff_singleton_subset_iff, insert_eq_of_mem ha, ← Icc_diff_right,
  diff_singleton_subset_iff, insert_eq_of_mem hb] at ho
state_before: case pos
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
ha : a ∈ s
hb : b ∈ s
⊢ Icc a b ⊆ s
state_after: no goals

tactic: refine Or.inr <| Or.inl <| Subset.antisymm ?_ ?_
state_before: case neg
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
ha : a ∈ s
hb : b ∉ s
⊢ s ∈ {Icc a b, Ico a b, Ioc a b, Ioo a b}
state_after: case neg.refine_1
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
ha : a ∈ s
hb : b ∉ s
⊢ s ⊆ Ico a b

case neg.refine_2
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
ha : a ∈ s
hb : b ∉ s
⊢ Ico a b ⊆ s

tactic: rw [← Icc_diff_right]
state_before: case neg.refine_1
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
ha : a ∈ s
hb : b ∉ s
⊢ s ⊆ Ico a b
state_after: case neg.refine_1
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
ha : a ∈ s
hb : b ∉ s
⊢ s ⊆ Icc a b \ {b}

tactic: exact subset_diff_singleton hc hb
state_before: case neg.refine_1
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
ha : a ∈ s
hb : b ∉ s
⊢ s ⊆ Icc a b \ {b}
state_after: no goals

tactic: rwa [← Ico_diff_left, diff_singleton_subset_iff, insert_eq_of_mem ha] at ho
state_before: case neg.refine_2
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
ha : a ∈ s
hb : b ∉ s
⊢ Ico a b ⊆ s
state_after: no goals

tactic: refine Or.inr <| Or.inr <| Or.inl <| Subset.antisymm ?_ ?_
state_before: case pos
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
ha : a ∉ s
hb : b ∈ s
⊢ s ∈ {Icc a b, Ico a b, Ioc a b, Ioo a b}
state_after: case pos.refine_1
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
ha : a ∉ s
hb : b ∈ s
⊢ s ⊆ Ioc a b

case pos.refine_2
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
ha : a ∉ s
hb : b ∈ s
⊢ Ioc a b ⊆ s

tactic: rw [← Icc_diff_left]
state_before: case pos.refine_1
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
ha : a ∉ s
hb : b ∈ s
⊢ s ⊆ Ioc a b
state_after: case pos.refine_1
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
ha : a ∉ s
hb : b ∈ s
⊢ s ⊆ Icc a b \ {a}

tactic: exact subset_diff_singleton hc ha
state_before: case pos.refine_1
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
ha : a ∉ s
hb : b ∈ s
⊢ s ⊆ Icc a b \ {a}
state_after: no goals

tactic: rwa [← Ioc_diff_right, diff_singleton_subset_iff, insert_eq_of_mem hb] at ho
state_before: case pos.refine_2
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
ha : a ∉ s
hb : b ∈ s
⊢ Ioc a b ⊆ s
state_after: no goals

tactic: refine Or.inr <| Or.inr <| Or.inr <| Subset.antisymm ?_ ho
state_before: case neg
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
ha : a ∉ s
hb : b ∉ s
⊢ s ∈ {Icc a b, Ico a b, Ioc a b, Ioo a b}
state_after: case neg
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
ha : a ∉ s
hb : b ∉ s
⊢ s ⊆ Ioo a b

tactic: rw [← Ico_diff_left, ← Icc_diff_right]
state_before: case neg
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
ha : a ∉ s
hb : b ∉ s
⊢ s ⊆ Ioo a b
state_after: case neg
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
ha : a ∉ s
hb : b ∉ s
⊢ s ⊆ (Icc a b \ {b}) \ {a}

tactic: apply_rules [subset_diff_singleton]
state_before: case neg
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
s : Set α
ho : Ioo a b ⊆ s
hc : s ⊆ Icc a b
ha : a ∉ s
hb : b ∉ s
⊢ s ⊆ (Icc a b \ {b}) \ {a}
state_after: no goals