1
{-# OPTIONS --no-positivity-check #-}
14
open Functor.Recursive
15
open Functor.Semantics
29
plus : Nat -> Nat -> Nat
30
plus n m = fold NatF φ n where
31
φ : ⟦ NatF ⟧ Nat -> Nat
35
ListF : (A : Set) -> U
36
ListF A = K [1] + K A × Id
38
List' : (A : Set) -> Set
41
nil : {A : Set} -> List' A
44
cons : {A : Set} -> A -> List' A -> List' A
45
cons x xs = inn (inr < x , xs >)
47
sum : List' Nat -> Nat
48
sum = fold (ListF Nat) φ where
49
φ : ⟦ ListF Nat ⟧ Nat -> Nat
51
φ (inr < n , m >) = plus n m
54
TreeF = K [1] + Id × Id
62
node : Tree -> Tree -> Tree
63
node l r = inn (inr < l , r >)