Encodability of Pi types #
This file provides instances of Encodable
for types of vectors and (dependent) functions:
Encodable.List.Vector.encodable
: vectors of lengthn
(represented by lists) are encodableEncodable.finArrow
: vectors of lengthn
(represented byFin
-indexed functions) are encodableEncodable.fintypeArrow
,Encodable.fintypePi
: (dependent) functions with finite domain and countable codomain are encodable
instance
Encodable.List.Vector.encodable
{α : Type u_1}
[Encodable α]
{n : ℕ}
:
Encodable (List.Vector α n)
If α
is encodable, then so is Vector α n
.
instance
Encodable.List.Vector.countable
{α : Type u_1}
[Countable α]
{n : ℕ}
:
Countable (List.Vector α n)
If α
is countable, then so is Vector α n
.
If α
is encodable, then so is Fin n → α
.
Equations
def
Encodable.fintypeArrow
(α : Type u_2)
(β : Type u_3)
[DecidableEq α]
[Fintype α]
[Encodable β]
:
When α
is finite and β
is encodable, α → β
is encodable too. Because the encoding is not
unique, we wrap it in Trunc
to preserve computability.
Equations
- Encodable.fintypeArrow α β = Trunc.map (fun (f : α ≃ Fin (Fintype.card α)) => Encodable.ofEquiv (Fin (Fintype.card α) → β) (f.arrowCongr (Equiv.refl β))) (Fintype.truncEquivFin α)
Instances For
def
Encodable.fintypePi
(α : Type u_2)
(π : α → Type u_3)
[DecidableEq α]
[Fintype α]
[(a : α) → Encodable (π a)]
:
When α
is finite and all π a
are encodable, Π a, π a
is encodable too. Because the
encoding is not unique, we wrap it in Trunc
to preserve computability.
Equations
- One or more equations did not get rendered due to their size.