Quotients of families indexed by a finite type #
This file proves some basic facts and defines lifting and recursion principle for quotients indexed by a finite type.
Main definitions #
Quotient.finChoice
: Given a functionf : Π i, Quotient (S i)
on a fintypeι
, returns the class of functionsΠ i, α i
sending eachi
to an element of the classf i
.Quotient.finChoiceEquiv
: A finite family of quotients is equivalent to a quotient of finite families.Quotient.finLiftOn
: Given a fintypeι
. A function onΠ i, α i
which respects setoidS i
for eachi
can be lifted to a function onΠ i, Quotient (S i)
.Quotient.finRecOn
: Recursion principle for quotients indexed by a finite type. It is the dependent version ofQuotient.finLiftOn
.
Given a collection of setoids indexed by a type ι
, a list l
of indices, and a function that
for each i ∈ l
gives a term of the corresponding quotient type, then there is a corresponding
term in the quotient of the product of the setoids indexed by l
.
Equations
- Quotient.listChoice q_2 = ⟦fun (a : ι) (a_1 : a ∈ []) => nomatch a, a_1⟧
- Quotient.listChoice q_2 = (List.Pi.head q_2).liftOn₂ (Quotient.listChoice (List.Pi.tail q_2)) (fun (x1 : α i) (x2 : (i : ι) → i ∈ tail → α i) => ⟦List.Pi.cons i tail x1 x2⟧) ⋯
Instances For
Choice-free induction principle for quotients indexed by a List
.
Choice-free induction principle for quotients indexed by a finite type.
See Quotient.induction_on_pi
for the general version assuming Classical.choice
.
Choice-free induction principle for quotients indexed by a finite type.
See Quotient.induction_on_pi
for the general version assuming Classical.choice
.
Given a collection of setoids indexed by a fintype ι
and a function that for each i : ι
gives a term of the corresponding quotient type, then there is corresponding term in the quotient
of the product of the setoids.
See Quotient.choice
for the noncomputable general version.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Lift a function on ∀ i, α i
to a function on ∀ i, Quotient (S i)
.
Equations
- Quotient.finLiftOn q f h = (Quotient.finChoice q).liftOn f h
Instances For
Quotient.finChoice
as an equivalence.
Equations
- Quotient.finChoiceEquiv = { toFun := Quotient.finChoice, invFun := Quotient.eval, left_inv := ⋯, right_inv := ⋯ }
Instances For
Recursion principle for quotients indexed by a finite type.
Equations
- Quotient.finHRecOn q f h = ⋯ ▸ Quotient.hrecOn (Quotient.finChoice q) f h
Instances For
Recursion principle for quotients indexed by a finite type.
Equations
- Quotient.finRecOn q f h = Quotient.finHRecOn q f ⋯
Instances For
Given a function that for each i : ι
gives a term of the corresponding
truncation type, then there is corresponding term in the truncation of the product.
Equations
- Trunc.finChoice q = Quotient.map' id ⋯ (Quotient.finChoice q)
Instances For
Lift a function on ∀ i, α i
to a function on ∀ i, Trunc (α i)
.
Equations
- Trunc.finLiftOn q f h = Quotient.finLiftOn q f ⋯
Instances For
Trunc.finChoice
as an equivalence.
Equations
Instances For
Recursion principle for Trunc
s indexed by a finite type.
Equations
- Trunc.finRecOn q f h = Quotient.finRecOn q (fun (x : (i : ι) → α i) => f x) ⋯