-- FIX: module ExportMeasure (llen) where
    
module ExportMeasure () where

{-@ data LL [llen] @-}
data LL a = N | C a (LL a)

{-@ invariant {v:LL a | (llen v) >= 0} @-}

{-@ measure llen @-}
llen :: (LL a) -> Int 
llen(N)      = 0
llen(C x xs) = 1 + (llen xs)

{-@ lmap :: (a -> b) -> xs:(LL a) -> {v: LL b | llen v = llen xs } @-} 
lmap f N = N
lmap f (C x xs) = C (f x) (lmap f xs)