{-@ LIQUID "--no-termination" @-}

module T1096_Types where

data Foo = A Foo | B 

size :: Foo -> Integer 

{-@ measure size @-}
{- invariant {t:Foo | 0 <= size t} @-}
{-@ size :: Foo -> {v:Integer |  0 <= v }  @-}
size (A x) = 1 + size x
size B     = 0 
