# Coalgebras of polynomial endofunctors
```agda
module trees.coalgebras-polynomial-endofunctors where
```
<details><summary>Imports</summary>
```agda
open import foundation.dependent-pair-types
open import foundation.universe-levels
open import trees.polynomial-endofunctors
```
</details>
## Idea
**Coalgebras** for polynomial endofunctors are types `X` equipped with a
function
```text
X → Σ (a : A), B a → X
```
## Definitions
```agda
module _
{l1 l2 : Level} (l : Level) (A : UU l1) (B : A → UU l2)
where
coalgebra-polynomial-endofunctor : UU (l1 ⊔ l2 ⊔ lsuc l)
coalgebra-polynomial-endofunctor =
Σ (UU l) (λ X → X → type-polynomial-endofunctor A B X)
module _
{l1 l2 l3 : Level} {A : UU l1} {B : A → UU l2}
(X : coalgebra-polynomial-endofunctor l3 A B)
where
type-coalgebra-polynomial-endofunctor : UU l3
type-coalgebra-polynomial-endofunctor = pr1 X
structure-coalgebra-polynomial-endofunctor :
type-coalgebra-polynomial-endofunctor →
type-polynomial-endofunctor A B type-coalgebra-polynomial-endofunctor
structure-coalgebra-polynomial-endofunctor = pr2 X
shape-coalgebra-polynomial-endofunctor :
type-coalgebra-polynomial-endofunctor → A
shape-coalgebra-polynomial-endofunctor x =
pr1 (structure-coalgebra-polynomial-endofunctor x)
component-coalgebra-polynomial-endofunctor :
(x : type-coalgebra-polynomial-endofunctor) →
B (shape-coalgebra-polynomial-endofunctor x) →
type-coalgebra-polynomial-endofunctor
component-coalgebra-polynomial-endofunctor x =
pr2 (structure-coalgebra-polynomial-endofunctor x)
```