@@ -280,38 +280,81 @@ variables {α : Type u} [partial_order α] {a b : α}
280
280
@[simp] lemma Icc_self (a : α) : Icc a a = {a} :=
281
281
set.ext $ by simp [Icc, le_antisymm_iff, and_comm]
282
282
283
- lemma Ico_diff_Ioo_eq_singleton (h : a < b) : Ico a b \ Ioo a b = {a} :=
284
- set.ext $ λ x, begin
285
- simp [not_and'], split,
286
- { rintro ⟨⟨ax, xb⟩, hne⟩,
287
- exact (eq_or_lt_of_le ax).elim eq.symm (λ h', absurd h' (hne xb)) },
288
- { rintro rfl, exact ⟨⟨le_refl _, h⟩, λ _, lt_irrefl x⟩ }
289
- end
283
+ lemma Icc_diff_left : Icc a b \ {a} = Ioc a b :=
284
+ ext $ λ x, by simp [lt_iff_le_and_ne, eq_comm, and.right_comm]
290
285
291
- lemma Ioc_diff_Ioo_eq_singleton (h : a < b) : Ioc a b \ Ioo a b = {b} :=
292
- set.ext $ λ x, begin
293
- simp, split,
294
- { rintro ⟨⟨ax, xb⟩, hne⟩,
295
- exact (eq_or_lt_of_le xb).elim id (λ h', absurd h' (hne ax)) },
296
- { rintro rfl, exact ⟨⟨h, le_refl _⟩, λ _, lt_irrefl x⟩ }
297
- end
286
+ lemma Icc_diff_right : Icc a b \ {b} = Ico a b :=
287
+ ext $ λ x, by simp [lt_iff_le_and_ne, and_assoc]
298
288
299
- lemma Icc_diff_Ico_eq_singleton (h : a ≤ b) : Icc a b \ Ico a b = {b} :=
300
- set.ext $ λ x, begin
301
- simp, split,
302
- { rintro ⟨⟨ax, xb⟩, h⟩,
303
- exact classical.by_contradiction
304
- (λ ne, h ax (lt_of_le_of_ne xb ne)) },
305
- { rintro rfl, exact ⟨⟨h, le_refl _⟩, λ _, lt_irrefl x⟩ }
306
- end
289
+ lemma Ico_diff_left : Ico a b \ {a} = Ioo a b :=
290
+ ext $ λ x, by simp [and.right_comm, ← lt_iff_le_and_ne, eq_comm]
291
+
292
+ lemma Ioc_diff_right : Ioc a b \ {b} = Ioo a b :=
293
+ ext $ λ x, by simp [and_assoc, ← lt_iff_le_and_ne]
294
+
295
+ lemma Icc_diff_both : Icc a b \ {a, b} = Ioo a b :=
296
+ by rw [insert_eq, ← diff_diff, Icc_diff_left, Ioc_diff_right]
297
+
298
+ lemma Ici_diff_left : Ici a \ {a} = Ioi a :=
299
+ ext $ λ x, by simp [lt_iff_le_and_ne, eq_comm]
300
+
301
+ lemma Iic_diff_right : Iic a \ {a} = Iio a :=
302
+ ext $ λ x, by simp [lt_iff_le_and_ne]
303
+
304
+ lemma Ico_diff_Ioo_same (h : a < b) : Ico a b \ Ioo a b = {a} :=
305
+ by rw [← Ico_diff_left, diff_diff_cancel_left (singleton_subset_iff.2 $ left_mem_Ico.2 h)]
306
+
307
+ lemma Ioc_diff_Ioo_same (h : a < b) : Ioc a b \ Ioo a b = {b} :=
308
+ by rw [← Ioc_diff_right, diff_diff_cancel_left (singleton_subset_iff.2 $ right_mem_Ioc.2 h)]
309
+
310
+ lemma Icc_diff_Ico_same (h : a ≤ b) : Icc a b \ Ico a b = {b} :=
311
+ by rw [← Icc_diff_right, diff_diff_cancel_left (singleton_subset_iff.2 $ right_mem_Icc.2 h)]
307
312
308
- lemma Icc_diff_Ioc_eq_singleton (h : a ≤ b) : Icc a b \ Ioc a b = {a} :=
309
- set.ext $ λ x, begin
310
- simp [not_and'], split,
311
- { rintro ⟨⟨ax, xb⟩, h⟩,
312
- exact classical.by_contradiction
313
- (λ hne, h xb (lt_of_le_of_ne ax (ne.symm hne))) },
314
- { rintro rfl, exact ⟨⟨le_refl _, h⟩, λ _, lt_irrefl x⟩ }
313
+ lemma Icc_diff_Ioc_same (h : a ≤ b) : Icc a b \ Ioc a b = {a} :=
314
+ by rw [← Icc_diff_left, diff_diff_cancel_left (singleton_subset_iff.2 $ left_mem_Icc.2 h)]
315
+
316
+ lemma Icc_diff_Ioo_same (h : a ≤ b) : Icc a b \ Ioo a b = {a, b} :=
317
+ by { rw [← Icc_diff_both, diff_diff_cancel_left], simp [insert_subset, h] }
318
+
319
+ lemma Ici_diff_Ioi_same : Ici a \ Ioi a = {a} :=
320
+ by rw [← Ici_diff_left, diff_diff_cancel_left (singleton_subset_iff.2 left_mem_Ici)]
321
+
322
+ lemma Iic_diff_Iio_same : Iic a \ Iio a = {a} :=
323
+ by rw [← Iic_diff_right, diff_diff_cancel_left (singleton_subset_iff.2 right_mem_Iic)]
324
+
325
+ lemma Ioi_union_left : Ioi a ∪ {a} = Ici a := ext $ λ x, by simp [eq_comm, le_iff_eq_or_lt]
326
+
327
+ lemma Iio_union_right : Iio a ∪ {a} = Iic a := ext $ λ x, le_iff_lt_or_eq.symm
328
+
329
+ lemma mem_Ici_Ioi_of_subset_of_subset {s : set α} (ho : Ioi a ⊆ s) (hc : s ⊆ Ici a) :
330
+ s ∈ ({Ici a, Ioi a} : set (set α)) :=
331
+ classical.by_cases
332
+ (λ h : a ∈ s, or.inl $ subset.antisymm hc $ by simp [← Ioi_union_left, insert_subset, *])
333
+ (λ h, or.inr $ subset.antisymm (λ x hx, lt_of_le_of_ne (hc hx) (λ heq, h $ heq.symm ▸ hx)) ho)
334
+
335
+ lemma mem_Iic_Iio_of_subset_of_subset {s : set α} (ho : Iio a ⊆ s) (hc : s ⊆ Iic a) :
336
+ s ∈ ({Iic a, Iio a} : set (set α)) :=
337
+ @mem_Ici_Ioi_of_subset_of_subset (order_dual α) _ a s ho hc
338
+
339
+ lemma mem_Icc_Ico_Ioc_Ioo_of_subset_of_subset {s : set α} (ho : Ioo a b ⊆ s) (hc : s ⊆ Icc a b) :
340
+ s ∈ ({Icc a b, Ico a b, Ioc a b, Ioo a b} : set (set α)) :=
341
+ begin
342
+ classical,
343
+ by_cases ha : a ∈ s; by_cases hb : b ∈ s,
344
+ { refine or.inl (subset.antisymm hc _),
345
+ rwa [← Ico_diff_left, diff_singleton_subset_iff, insert_eq_of_mem ha,
346
+ ← Icc_diff_right, diff_singleton_subset_iff, insert_eq_of_mem hb] at ho },
347
+ { refine (or.inr $ or.inl $ subset.antisymm _ _),
348
+ { rw [← Icc_diff_right],
349
+ exact subset_diff_singleton hc hb },
350
+ { rwa [← Ico_diff_left, diff_singleton_subset_iff, insert_eq_of_mem ha] at ho } },
351
+ { refine (or.inr $ or.inr $ or.inl $ subset.antisymm _ _),
352
+ { rw [← Icc_diff_left],
353
+ exact subset_diff_singleton hc ha },
354
+ { rwa [← Ioc_diff_right, diff_singleton_subset_iff, insert_eq_of_mem hb] at ho } },
355
+ { refine (or.inr $ or.inr $ or.inr $ subset.antisymm _ ho),
356
+ rw [← Ico_diff_left, ← Icc_diff_right],
357
+ apply_rules [subset_diff_singleton] }
315
358
end
316
359
317
360
end partial_order
0 commit comments