Induction principles for ∀ i, Finset (α i) #
In this file we prove a few induction principles for functions Π i : ι, Finset (α i) defined on a
finite type.
Finset.induction_on_piis a generic lemma that requires only[Finite ι],[DecidableEq ι], and[∀ i, DecidableEq (α i)]; this version can be seen as a direct generalization ofFinset.induction_on.Finset.induction_on_pi_maxandFinset.induction_on_pi_min: generalizations ofFinset.induction_on_max; these versions require∀ i, LinearOrder (α i)but assume∀ y ∈ g i, y < xand∀ y ∈ g i, x < yrespectively in the induction step.
Tags #
finite set, finite type, induction, function
General theorem for Finset.induction_on_pi-style induction principles.
Given a predicate on functions ∀ i, Finset (α i) defined on a finite type, it is true on all
maps provided that it is true on fun _ ↦ ∅ and for any function g : ∀ i, Finset (α i), an index
i : ι, and x ∉ g i, p g implies p (update g i (insert x (g i))).
See also Finset.induction_on_pi_max and Finset.induction_on_pi_min for specialized versions
that require ∀ i, LinearOrder (α i).
Given a predicate on functions ∀ i, Finset (α i) defined on a finite type, it is true on all
maps provided that it is true on fun _ ↦ ∅ and for any function g : ∀ i, Finset (α i), an index
i : ι, and an elementx : α i that is strictly greater than all elements of g i, p g implies
p (update g i (insert x (g i))).
This lemma requires LinearOrder instances on all α i. See also Finset.induction_on_pi for a
version that needs x ∉ g i and does not need ∀ i, LinearOrder (α i).
Given a predicate on functions ∀ i, Finset (α i) defined on a finite type, it is true on all
maps provided that it is true on fun _ ↦ ∅ and for any function g : ∀ i, Finset (α i), an index
i : ι, and an elementx : α i that is strictly less than all elements of g i, p g implies
p (update g i (insert x (g i))).
This lemma requires LinearOrder instances on all α i. See also Finset.induction_on_pi for a
version that needs x ∉ g i and does not need ∀ i, LinearOrder (α i).