# Algebras for polynomial endofunctors
```agda
module trees.algebras-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
Given a polynomial endofunctor `P A B`, an **algebra** for `P A B` conisists of
a type `X` and a map `P A B X → X`.
## Definitions
### Algebras for polynomial endofunctors
```agda
algebra-polynomial-endofunctor :
(l : Level) {l1 l2 : Level} (A : UU l1) (B : A → UU l2) →
UU (lsuc l ⊔ l1 ⊔ l2)
algebra-polynomial-endofunctor l A B =
Σ (UU l) (λ X → type-polynomial-endofunctor A B X → X)
type-algebra-polynomial-endofunctor :
{l l1 l2 : Level} {A : UU l1} {B : A → UU l2} →
algebra-polynomial-endofunctor l A B → UU l
type-algebra-polynomial-endofunctor X = pr1 X
structure-algebra-polynomial-endofunctor :
{l l1 l2 : Level} {A : UU l1} {B : A → UU l2}
(X : algebra-polynomial-endofunctor l A B) →
type-polynomial-endofunctor A B (type-algebra-polynomial-endofunctor X) →
type-algebra-polynomial-endofunctor X
structure-algebra-polynomial-endofunctor X = pr2 X
```