@@ -459,22 +459,36 @@ theorem card_inter_add_card_union (s t : Finset α) :
459
459
(s ∩ t).card + (s ∪ t).card = s.card + t.card := by rw [add_comm, card_union_add_card_inter]
460
460
#align finset.card_inter_add_card_union Finset.card_inter_add_card_union
461
461
462
+ lemma card_union (s t : Finset α) : (s ∪ t).card = s.card + t.card - (s ∩ t).card := by
463
+ rw [← card_union_add_card_inter, Nat.add_sub_cancel]
464
+
465
+ lemma card_inter (s t : Finset α) : (s ∩ t).card = s.card + t.card - (s ∪ t).card := by
466
+ rw [← card_inter_add_card_union, Nat.add_sub_cancel]
467
+
462
468
theorem card_union_le (s t : Finset α) : (s ∪ t).card ≤ s.card + t.card :=
463
469
card_union_add_card_inter s t ▸ Nat.le_add_right _ _
464
470
#align finset.card_union_le Finset.card_union_le
465
471
466
- theorem card_union_eq (h : Disjoint s t) : (s ∪ t).card = s.card + t.card := by
472
+ @[simp] lemma card_union_of_disjoint (h : Disjoint s t) : (s ∪ t).card = s.card + t.card := by
467
473
rw [← disjUnion_eq_union s t h, card_disjUnion _ _ _]
468
- #align finset.card_union_eq Finset.card_union_eq
474
+ #align finset.card_union_eq Finset.card_union_of_disjoint
475
+ #align finset.card_disjoint_union Finset.card_union_of_disjoint
469
476
470
- @[simp]
471
- theorem card_disjoint_union (h : Disjoint s t) : card (s ∪ t) = s.card + t.card :=
472
- card_union_eq h
473
- #align finset.card_disjoint_union Finset.card_disjoint_union
477
+ -- 2024-02-09
478
+ @[deprecated] alias card_union_eq := card_union_of_disjoint
479
+ @[deprecated] alias card_disjoint_union := card_union_of_disjoint
480
+
481
+ lemma cast_card_inter [AddGroupWithOne R] :
482
+ ((s ∩ t).card : R) = s.card + t.card - (s ∪ t).card := by
483
+ rw [eq_sub_iff_add_eq, ← cast_add, card_inter_add_card_union, cast_add]
484
+
485
+ lemma cast_card_union [AddGroupWithOne R] :
486
+ ((s ∪ t).card : R) = s.card + t.card - (s ∩ t).card := by
487
+ rw [eq_sub_iff_add_eq, ← cast_add, card_union_add_card_inter, cast_add]
474
488
475
489
theorem card_sdiff (h : s ⊆ t) : card (t \ s) = t.card - s.card := by
476
490
suffices card (t \ s) = card (t \ s ∪ s) - s.card by rwa [sdiff_union_of_subset h] at this
477
- rw [card_disjoint_union sdiff_disjoint, add_tsub_cancel_right]
491
+ rw [card_union_of_disjoint sdiff_disjoint, add_tsub_cancel_right]
478
492
#align finset.card_sdiff Finset.card_sdiff
479
493
480
494
lemma cast_card_sdiff [AddGroupWithOne R] (h : s ⊆ t) : ((t \ s).card : R) = t.card - s.card := by
@@ -497,7 +511,7 @@ theorem card_le_card_sdiff_add_card : s.card ≤ (s \ t).card + t.card :=
497
511
#align finset.card_le_card_sdiff_add_card Finset.card_le_card_sdiff_add_card
498
512
499
513
theorem card_sdiff_add_card : (s \ t).card + t.card = (s ∪ t).card := by
500
- rw [← card_disjoint_union sdiff_disjoint, sdiff_union_self_eq_union]
514
+ rw [← card_union_of_disjoint sdiff_disjoint, sdiff_union_self_eq_union]
501
515
#align finset.card_sdiff_add_card Finset.card_sdiff_add_card
502
516
503
517
lemma card_sdiff_comm (h : s.card = t.card) : (s \ t).card = (t \ s).card :=
@@ -507,7 +521,7 @@ lemma card_sdiff_comm (h : s.card = t.card) : (s \ t).card = (t \ s).card :=
507
521
@[simp]
508
522
lemma card_sdiff_add_card_inter (s t : Finset α) :
509
523
(s \ t).card + (s ∩ t).card = s.card := by
510
- rw [← card_disjoint_union (disjoint_sdiff_inter _ _), sdiff_union_inter]
524
+ rw [← card_union_of_disjoint (disjoint_sdiff_inter _ _), sdiff_union_inter]
511
525
512
526
@[simp]
513
527
lemma card_inter_add_card_sdiff (s t : Finset α) :
@@ -519,7 +533,8 @@ end Lattice
519
533
theorem filter_card_add_filter_neg_card_eq_card
520
534
(p : α → Prop ) [DecidablePred p] [∀ x, Decidable (¬p x)] :
521
535
(s.filter p).card + (s.filter (fun a => ¬ p a)).card = s.card := by
522
- classical rw [← card_union_eq (disjoint_filter_filter_neg _ _ _), filter_union_filter_neg_eq]
536
+ classical
537
+ rw [← card_union_of_disjoint (disjoint_filter_filter_neg _ _ _), filter_union_filter_neg_eq]
523
538
#align finset.filter_card_add_filter_neg_card_eq_card Finset.filter_card_add_filter_neg_card_eq_card
524
539
525
540
/-- Given a set `A` and a set `B` inside it, we can shrink `A` to any appropriate size, and keep `B`
0 commit comments