Dependent product and sum of QPFs are QPFs
Dependent sum of of an n
-ary functor. The sum can range over
data types like ℕ
or over Type.{u-1}
Equations
- mvqpf.sigma F v = Σ (α : A), F α v
@[instance]
def
mvqpf.sigma.mvfunctor
{n : ℕ}
{A : Type u}
(F : A → typevec n → Type u)
[Π (α : A), mvfunctor (F α)] :
mvfunctor (mvqpf.sigma F)
def
mvqpf.sigma.P
{n : ℕ}
{A : Type u}
(F : A → typevec n → Type u)
[Π (α : A), mvfunctor (F α)]
[Π (α : A), mvqpf (F α)] :
polynomial functor representation of a dependent sum
def
mvqpf.sigma.abs
{n : ℕ}
{A : Type u}
(F : A → typevec n → Type u)
[Π (α : A), mvfunctor (F α)]
[Π (α : A), mvqpf (F α)]
⦃α : typevec n⦄
(a : (mvqpf.sigma.P F).obj α) :
mvqpf.sigma F α
abstraction function for dependent sums
def
mvqpf.sigma.repr
{n : ℕ}
{A : Type u}
(F : A → typevec n → Type u)
[Π (α : A), mvfunctor (F α)]
[Π (α : A), mvqpf (F α)]
⦃α : typevec n⦄
(a : mvqpf.sigma F α) :
(mvqpf.sigma.P F).obj α
representation function for dependent sums
Equations
- mvqpf.sigma.repr F ⟨a, f⟩ = let x : (mvqpf.P (F a)).obj α := mvqpf.repr f in ⟨⟨a, x.fst⟩, x.snd⟩
@[instance]
def
mvqpf.sigma.mvqpf
{n : ℕ}
{A : Type u}
(F : A → typevec n → Type u)
[Π (α : A), mvfunctor (F α)]
[Π (α : A), mvqpf (F α)] :
mvqpf (mvqpf.sigma F)
Equations
- mvqpf.sigma.mvqpf F = {P := mvqpf.sigma.P F (λ (α : A), _inst_2 α), abs := mvqpf.sigma.abs F (λ (α : A), _inst_2 α), repr := mvqpf.sigma.repr F (λ (α : A), _inst_2 α), abs_repr := _, abs_map := _}
def
mvqpf.pi.P
{n : ℕ}
{A : Type u}
(F : A → typevec n → Type u)
[Π (α : A), mvfunctor (F α)]
[Π (α : A), mvqpf (F α)] :
polynomial functor representation of a dependent product
def
mvqpf.pi.abs
{n : ℕ}
{A : Type u}
(F : A → typevec n → Type u)
[Π (α : A), mvfunctor (F α)]
[Π (α : A), mvqpf (F α)]
⦃α : typevec n⦄
(a : (mvqpf.pi.P F).obj α) :
mvqpf.pi F α
abstraction function for dependent products
def
mvqpf.pi.repr
{n : ℕ}
{A : Type u}
(F : A → typevec n → Type u)
[Π (α : A), mvfunctor (F α)]
[Π (α : A), mvqpf (F α)]
⦃α : typevec n⦄
(a : mvqpf.pi F α) :
(mvqpf.pi.P F).obj α
representation function for dependent products
Equations
- mvqpf.pi.repr F f = ⟨λ (a : A), (mvqpf.repr (f a)).fst, λ (i : fin2 n) (a : (mvqpf.pi.P F).B (λ (a : A), (mvqpf.repr (f a)).fst) i), (mvqpf.repr (f a.fst)).snd i a.snd⟩
@[instance]
def
mvqpf.pi.mvqpf
{n : ℕ}
{A : Type u}
(F : A → typevec n → Type u)
[Π (α : A), mvfunctor (F α)]
[Π (α : A), mvqpf (F α)] :
Equations
- mvqpf.pi.mvqpf F = {P := mvqpf.pi.P F (λ (α : A), _inst_2 α), abs := mvqpf.pi.abs F (λ (α : A), _inst_2 α), repr := mvqpf.pi.repr F (λ (α : A), _inst_2 α), abs_repr := _, abs_map := _}