Skip to content

Commit 4235d67

Browse files
committed
feat: Lemmas specialised to piFinset fun _ : Fin n ↦ s (#15329)
Those lemmas are specifically useful for rewriting backwards when the indexing type doesn't matter (and also sometimes useful forwardly). From LeanAPAP
1 parent c934de6 commit 4235d67

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

Mathlib/Data/Fintype/BigOperators.lean

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,21 @@ namespace Fintype
112112
@[simp] lemma card_piFinset (s : ∀ i, Finset (α i)) :
113113
(piFinset s).card = ∏ i, (s i).card := by simp [piFinset, card_map]
114114

115+
/-- This lemma is specifically designed to be used backwards, whence the specialisation to `Fin n`
116+
as the indexing type doesn't matter in practice. The more general forward direction lemma here is
117+
`Fintype.card_piFinset`. -/
118+
lemma card_piFinset_const {α : Type*} (s : Finset α) (n : ℕ) :
119+
(piFinset fun _ : Fin n ↦ s).card = s.card ^ n := by simp
120+
115121
@[simp] lemma card_pi [DecidableEq ι] [∀ i, Fintype (α i)] : card (∀ i, α i) = ∏ i, card (α i) :=
116122
card_piFinset _
117123

124+
/-- This lemma is specifically designed to be used backwards, whence the specialisation to `Fin n`
125+
as the indexing type doesn't matter in practice. The more general forward direction lemma here is
126+
`Fintype.card_pi`. -/
127+
lemma card_pi_const (α : Type*) [Fintype α] (n : ℕ) : card (Fin n → α) = card α ^ n :=
128+
card_piFinset_const _ _
129+
118130
@[simp] nonrec lemma card_sigma [Fintype ι] [∀ i, Fintype (α i)] :
119131
card (Sigma α) = ∑ i, card (α i) := card_sigma _ _
120132

Mathlib/Data/Fintype/Pi.lean

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ theorem piFinset_empty [Nonempty α] : piFinset (fun _ => ∅ : ∀ i, Finset (
5656
lemma piFinset_nonempty : (piFinset s).Nonempty ↔ ∀ a, (s a).Nonempty := by
5757
simp [Finset.Nonempty, Classical.skolem]
5858

59+
lemma _root_.Finset.Nonempty.piFinset_const {ι : Type*} [Fintype ι] [DecidableEq ι] {s : Finset α}
60+
(hs : s.Nonempty) : (piFinset fun _ : ι ↦ s).Nonempty := piFinset_nonempty.2 fun _ ↦ hs
61+
5962
@[simp]
6063
lemma piFinset_of_isEmpty [IsEmpty α] (s : ∀ a, Finset (γ a)) : piFinset s = univ :=
6164
eq_univ_of_forall fun _ ↦ by simp

0 commit comments

Comments
 (0)