@@ -6,6 +6,7 @@ Authors: Yaël Dillies, Sara Rousta
6
6
import data.set_like.basic
7
7
import data.set.intervals.ord_connected
8
8
import data.set.intervals.order_iso
9
+ import tactic.by_contra
9
10
10
11
/-!
11
12
# Up-sets and down-sets
@@ -135,10 +136,10 @@ iff.rfl
135
136
@[simp] lemma is_upper_set_preimage_to_dual_iff {s : set αᵒᵈ} :
136
137
is_upper_set (to_dual ⁻¹' s) ↔ is_lower_set s := iff.rfl
137
138
138
- alias is_lower_set_preimage_of_dual_iff ↔ _ is_upper_set.of_dual
139
- alias is_upper_set_preimage_of_dual_iff ↔ _ is_lower_set.of_dual
140
- alias is_lower_set_preimage_to_dual_iff ↔ _ is_upper_set.to_dual
141
- alias is_upper_set_preimage_to_dual_iff ↔ _ is_lower_set.to_dual
139
+ alias is_lower_set_preimage_of_dual_iff ↔ _ is_upper_set.to_dual
140
+ alias is_upper_set_preimage_of_dual_iff ↔ _ is_lower_set.to_dual
141
+ alias is_lower_set_preimage_to_dual_iff ↔ _ is_upper_set.of_dual
142
+ alias is_upper_set_preimage_to_dual_iff ↔ _ is_lower_set.of_dual
142
143
143
144
end has_le
144
145
@@ -266,6 +267,24 @@ alias is_lower_set_iff_Iio_subset ↔ is_lower_set.Iio_subset _
266
267
267
268
end partial_order
268
269
270
+ section linear_order
271
+ variables [linear_order α] {s t : set α}
272
+
273
+ lemma is_upper_set.total (hs : is_upper_set s) (ht : is_upper_set t) : s ⊆ t ∨ t ⊆ s :=
274
+ begin
275
+ by_contra' h,
276
+ simp_rw set.not_subset at h,
277
+ obtain ⟨⟨a, has, hat⟩, b, hbt, hbs⟩ := h,
278
+ obtain hab | hba := le_total a b,
279
+ { exact hbs (hs hab has) },
280
+ { exact hat (ht hba hbt) }
281
+ end
282
+
283
+ lemma is_lower_set.total (hs : is_lower_set s) (ht : is_lower_set t) : s ⊆ t ∨ t ⊆ s :=
284
+ hs.to_dual.total ht.to_dual
285
+
286
+ end linear_order
287
+
269
288
/-! ### Bundled upper/lower sets -/
270
289
271
290
section has_le
@@ -519,6 +538,32 @@ end lower_set
519
538
520
539
end has_le
521
540
541
+ section linear_order
542
+ variables [linear_order α]
543
+
544
+ instance upper_set.is_total_le : is_total (upper_set α) (≤) := ⟨λ s t, t.upper.total s.upper⟩
545
+ instance lower_set.is_total_le : is_total (lower_set α) (≤) := ⟨λ s t, s.lower.total t.lower⟩
546
+
547
+ noncomputable instance : complete_linear_order (upper_set α) :=
548
+ { le_total := is_total.total,
549
+ decidable_le := classical.dec_rel _,
550
+ decidable_eq := classical.dec_rel _,
551
+ decidable_lt := classical.dec_rel _,
552
+ max_def := by classical; exact sup_eq_max_default,
553
+ min_def := by classical; exact inf_eq_min_default,
554
+ ..upper_set.complete_distrib_lattice }
555
+
556
+ noncomputable instance : complete_linear_order (lower_set α) :=
557
+ { le_total := is_total.total,
558
+ decidable_le := classical.dec_rel _,
559
+ decidable_eq := classical.dec_rel _,
560
+ decidable_lt := classical.dec_rel _,
561
+ max_def := by classical; exact sup_eq_max_default,
562
+ min_def := by classical; exact inf_eq_min_default,
563
+ ..lower_set.complete_distrib_lattice }
564
+
565
+ end linear_order
566
+
522
567
/-! #### Map -/
523
568
524
569
section
0 commit comments