@@ -1427,15 +1427,19 @@ ext $ assume a, by simp only [mem_filter, and_false]; refl
1427
1427
1428
1428
variables {p q}
1429
1429
1430
+ lemma filter_eq_self (s : finset α) :
1431
+ s.filter p = s ↔ ∀ x ∈ s, p x :=
1432
+ by simp [finset.ext_iff]
1433
+
1430
1434
/-- If all elements of a `finset` satisfy the predicate `p`, `s.filter p` is `s`. -/
1431
1435
@[simp] lemma filter_true_of_mem {s : finset α} (h : ∀ x ∈ s, p x) : s.filter p = s :=
1432
- ext $ λ x, ⟨λ h, (mem_filter. 1 h). 1 , λ hx, mem_filter. 2 ⟨hx, h x hx⟩⟩
1436
+ (filter_eq_self s).mpr h
1433
1437
1434
1438
/-- If all elements of a `finset` fail to satisfy the predicate `p`, `s.filter p` is `∅`. -/
1435
1439
lemma filter_false_of_mem {s : finset α} (h : ∀ x ∈ s, ¬ p x) : s.filter p = ∅ :=
1436
1440
eq_empty_of_forall_not_mem (by simpa)
1437
1441
1438
- lemma filter_eq_empty_iff (s : finset α) (p : α → Prop ) [decidable_pred p] :
1442
+ lemma filter_eq_empty_iff (s : finset α) :
1439
1443
(s.filter p = ∅) ↔ ∀ x ∈ s, ¬ p x :=
1440
1444
begin
1441
1445
refine ⟨_, filter_false_of_mem⟩,
@@ -1457,7 +1461,7 @@ lemma filter_empty : filter p ∅ = ∅ := subset_empty.1 $ filter_subset _ _
1457
1461
lemma filter_subset_filter {s t : finset α} (h : s ⊆ t) : s.filter p ⊆ t.filter p :=
1458
1462
assume a ha, mem_filter.2 ⟨h (mem_filter.1 ha).1 , (mem_filter.1 ha).2 ⟩
1459
1463
1460
- lemma monotone_filter_left (p : α → Prop ) [decidable_pred p] : monotone (filter p) :=
1464
+ lemma monotone_filter_left : monotone (filter p) :=
1461
1465
λ _ _, filter_subset_filter p
1462
1466
1463
1467
lemma monotone_filter_right (s : finset α) ⦃p q : α → Prop ⦄
0 commit comments