Induction principles for Π i, finset (α i)
#
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
In this file we prove a few induction principles for functions Π i : ι, finset (α i)
defined on a
finite type.
-
finset.induction_on_pi
is 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_max
andfinset.induction_on_pi_min
: generalizations offinset.induction_on_max
; these versions requireΠ i, linear_order (α i)
but assume∀ y ∈ g i, y < x
and∀ y ∈ g i, x < y
respectively 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)`.