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 ι],[decidable_eq ι], and[Π i, decidable_eq (α 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, linear_order (α 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 λ _, ∅ 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, linear_order (α 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 λ _, ∅ 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 linear_order instances on all α i. See also finset.induction_on_pi for a
version that x ∉ g i instead of does not needΠ i, linear_order (α 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 λ _, ∅ 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 linear_order instances on all α i. See also finset.induction_on_pi for a
version that x ∉ g i instead of does not needΠ i, linear_order (α i)`.