Question: Is psum
equivalent to sum
?
plus
{-@ sumDistr :: xs:[Int] -> ys:[Int] ->
{sum (xs ++ ys) == plus (sum xs) (sum ys)} @-}
{-@ plusRightId :: xs:[Int] ->
{plus (sum xs) (sum []) == sum xs} @-}
If f
distributes and op
has right-id, then it is OK to map-reduce.
Lets prove right identity!
We proved program equivalence of map-reduce.
Prove crucial properties for Haskell in Haskell!
where Haskell = a general purspose programming language.