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, α isending eachito 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, α iwhich respects setoidS ifor eachican 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
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
- Trunc.finChoiceEquiv = { toFun := Trunc.finChoice, invFun := fun (q : Trunc ((i : ι) → α i)) (i : ι) => Trunc.map (fun (x : (i : ι) → α i) => x i) q, left_inv := ⋯, right_inv := ⋯ }
Instances For
Recursion principle for Truncs indexed by a finite type.
Equations
- Trunc.finRecOn q f h = Quotient.finRecOn q (fun (x : (i : ι) → α i) => f x) ⋯