Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 36ce13f

Browse files
committed
chore(finset/nat/antidiagonal): simplify some proofs (#3225)
Replace some proofs with `rfl`, and avoid `multiset.to_finset` when there is a `nodup` available. Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
1 parent c4f9176 commit 36ce13f

File tree

3 files changed

+8
-10
lines changed

3 files changed

+8
-10
lines changed

src/data/finset.lean

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1402,6 +1402,8 @@ def card (s : finset α) : nat := s.1.card
14021402

14031403
theorem card_def (s : finset α) : s.card = s.1.card := rfl
14041404

1405+
@[simp] lemma card_mk {m nodup} : (⟨m, nodup⟩ : finset α).card = m.card := rfl
1406+
14051407
@[simp] theorem card_empty : card (∅ : finset α) = 0 := rfl
14061408

14071409
@[simp] theorem card_eq_zero {s : finset α} : card s = 0 ↔ s = ∅ :=
@@ -2972,20 +2974,20 @@ namespace nat
29722974
/-- The antidiagonal of a natural number `n` is
29732975
the finset of pairs `(i,j)` such that `i+j = n`. -/
29742976
def antidiagonal (n : ℕ) : finset (ℕ × ℕ) :=
2975-
(multiset.nat.antidiagonal n).to_finset
2977+
multiset.nat.antidiagonal n, multiset.nat.nodup_antidiagonal n⟩
29762978

29772979
/-- A pair (i,j) is contained in the antidiagonal of `n` if and only if `i+j=n`. -/
29782980
@[simp] lemma mem_antidiagonal {n : ℕ} {x : ℕ × ℕ} :
29792981
x ∈ antidiagonal n ↔ x.1 + x.2 = n :=
2980-
by rw [antidiagonal, multiset.mem_to_finset, multiset.nat.mem_antidiagonal]
2982+
by rw [antidiagonal, finset.mem_def, multiset.nat.mem_antidiagonal]
29812983

29822984
/-- The cardinality of the antidiagonal of `n` is `n+1`. -/
29832985
@[simp] lemma card_antidiagonal (n : ℕ) : (antidiagonal n).card = n+1 :=
2984-
by simpa using list.to_finset_card_of_nodup (list.nat.nodup_antidiagonal n)
2986+
by simp [antidiagonal]
29852987

29862988
/-- The antidiagonal of `0` is the list `[(0,0)]` -/
29872989
@[simp] lemma antidiagonal_zero : antidiagonal 0 = {(0, 0)} :=
2988-
by { rw [antidiagonal, multiset.nat.antidiagonal_zero], refl }
2990+
rfl
29892991

29902992
end nat
29912993

src/data/list/antidiagonal.lean

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,7 @@ by rw [antidiagonal, length_map, length_range]
3131

3232
/-- The antidiagonal of `0` is the list `[(0,0)]` -/
3333
@[simp] lemma antidiagonal_zero : antidiagonal 0 = [(0, 0)] :=
34-
ext_le (length_antidiagonal 0) $ λ n h₁ h₂,
35-
begin
36-
rw [length_antidiagonal, lt_succ_iff, le_zero_iff] at h₁,
37-
subst n, simp [antidiagonal]
38-
end
34+
rfl
3935

4036
/-- The antidiagonal of `n` does not contain duplicate entries. -/
4137
lemma nodup_antidiagonal (n : ℕ) : nodup (antidiagonal n) :=

src/data/multiset.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3270,7 +3270,7 @@ by rw [antidiagonal, coe_card, list.nat.length_antidiagonal]
32703270

32713271
/-- The antidiagonal of `0` is the list `[(0,0)]` -/
32723272
@[simp] lemma antidiagonal_zero : antidiagonal 0 = {(0, 0)} :=
3273-
by { rw [antidiagonal, list.nat.antidiagonal_zero], refl }
3273+
rfl
32743274

32753275
/-- The antidiagonal of `n` does not contain duplicate entries. -/
32763276
@[simp] lemma nodup_antidiagonal (n : ℕ) : nodup (antidiagonal n) :=

0 commit comments

Comments
 (0)