------------------------------------------------------------------------------
-- A partial function: iter₀
------------------------------------------------------------------------------

{-# OPTIONS --exact-split              #-}
{-# OPTIONS --no-sized-types           #-}
{-# OPTIONS --no-universe-polymorphism #-}
{-# OPTIONS --without-K                #-}

module FOTC.Program.Iter0.Iter0 where

open import FOTC.Base
open import FOTC.Base.List

------------------------------------------------------------------------------

postulate
  iter₀    : D  D  D
  iter₀-eq :  f n  iter₀ f n 
             (if (iszero₁ n) then [] else (n  iter₀ f (f · n)))
{-# ATP axiom iter₀-eq #-}