@@ -113,6 +113,9 @@ theorem encard_ne_zero : s.encard ≠ 0 ↔ s.Nonempty := by
113113
114114protected alias ⟨_, Nonempty.encard_pos⟩ := encard_pos
115115
116+ theorem encard_ne_zero_of_mem {a : α} (h : a ∈ s) : s.encard ≠ 0 :=
117+ (encard_pos.mpr ⟨a, h⟩).ne.symm
118+
116119@[simp] theorem encard_singleton (e : α) : ({e} : Set α).encard = 1 := by
117120 rw [encard, ENat.card_eq_coe_fintype_card, Fintype.card_ofSubsingleton, Nat.cast_one]
118121
@@ -177,12 +180,21 @@ section Lattice
177180theorem encard_le_encard (h : s ⊆ t) : s.encard ≤ t.encard := by
178181 rw [← union_diff_cancel h, encard_union_eq disjoint_sdiff_right]; exact le_self_add
179182
183+ theorem encard_le_card : s.encard ≤ ENat.card α :=
184+ encard_univ _ ▸ encard_le_encard s.subset_univ
185+
180186theorem encard_mono {α : Type *} : Monotone (encard : Set α → ℕ∞) :=
181187 fun _ _ ↦ encard_le_encard
182188
183189theorem encard_diff_add_encard_of_subset (h : s ⊆ t) : (t \ s).encard + s.encard = t.encard := by
184190 rw [← encard_union_eq disjoint_sdiff_left, diff_union_self, union_eq_self_of_subset_right h]
185191
192+ theorem encard_diff (h : s ⊆ t) (hs : s.Finite) :
193+ (t \ s).encard = t.encard - s.encard := by
194+ rw [← @Set.encard_diff_add_encard_of_subset _ s t h]
195+ exact AddLECancellable.eq_tsub_of_add_eq
196+ (ENat.addLECancellable_of_ne_top (encard_ne_top_iff.mpr hs)) rfl
197+
186198@[simp] theorem one_le_encard_iff_nonempty : 1 ≤ s.encard ↔ s.Nonempty := by
187199 rw [nonempty_iff_ne_empty, Ne, ← encard_eq_zero, ENat.one_le_iff_ne_zero]
188200
@@ -262,6 +274,9 @@ variable {a b : α}
262274theorem encard_insert_le (s : Set α) (x : α) : (insert x s).encard ≤ s.encard + 1 := by
263275 rw [← union_singleton, ← encard_singleton x]; apply encard_union_le
264276
277+ theorem one_le_encard_insert (s : Set α) : 1 ≤ (insert a s).encard :=
278+ ENat.one_le_iff_ne_zero.mpr <| encard_ne_zero_of_mem (mem_insert a s)
279+
265280theorem encard_singleton_inter (s : Set α) (x : α) : ({x} ∩ s).encard ≤ 1 := by
266281 rw [← encard_singleton x]; exact encard_le_encard inter_subset_left
267282
@@ -653,6 +668,10 @@ theorem ncard_insert_le (a : α) (s : Set α) : (insert a s).ncard ≤ s.ncard +
653668 rw [(hs.mono (subset_insert a s)).ncard]
654669 exact Nat.zero_le _
655670
671+ theorem one_le_ncard_insert (a : α) (s : Set α) (hs : s.Finite := by toFinite_tac) :
672+ 1 ≤ (insert a s).ncard :=
673+ Nat.one_le_iff_ne_zero.mpr <| ncard_ne_zero_of_mem (mem_insert a s) (by simp [hs])
674+
656675theorem ncard_insert_eq_ite {a : α} [Decidable (a ∈ s)] (hs : s.Finite := by toFinite_tac) :
657676 ncard (insert a s) = if a ∈ s then s.ncard else s.ncard + 1 := by
658677 by_cases h : a ∈ s
0 commit comments