module Sum where {-@ ssum :: forall

Bool, q :: a -> Bool>. {{v:a | v == 0} <: a} {x::a

|- {v:a | x <= v} <: a} xs:[{v:a

| 0 <= v}] -> {v:a | len xs >= 0 && 0 <= v } @-} ssum :: Num a => [a] -> a ssum [] = 0 ssum [x] = x ssum (x:xs) = x + ssum xs