Module Test.Contract

This library defines some auxiliaries to check contracts based on specifications or pre- and postconditions provided in a Curry module. The interface might probably change with the further development of the contract implementation.

Author: Michael Hanus

Version: December 2018

Summary of exported operations:

withContract1 :: (Show a, Show b) => String -> (a -> Bool) -> (a -> b -> Bool) -> (b -> b) -> (a -> b) -> a -> b   
withContract1ND :: (Show a, Show b) => String -> (a -> Values Bool) -> (a -> b -> Values Bool) -> (b -> b) -> (a -> b) -> a -> b   
withContract2 :: (Show a, Show b, Show c) => String -> (a -> b -> Bool) -> (a -> b -> c -> Bool) -> (c -> c) -> (a -> b -> c) -> a -> b -> c   
withContract2ND :: (Show a, Show b, Show c) => String -> (a -> b -> Values Bool) -> (a -> b -> c -> Values Bool) -> (c -> c) -> (a -> b -> c) -> a -> b -> c   
withPreContract1 :: Show a => String -> (a -> Bool) -> (a -> b) -> a -> b   
withPreContract2 :: (Show a, Show b) => String -> (a -> b -> Bool) -> (a -> b -> c) -> a -> b -> c   
withPostContract0 :: Show a => String -> (a -> Bool) -> (a -> a) -> a -> a   
withPostContract0ND :: Show a => String -> (a -> Values Bool) -> (a -> a) -> a -> a   
withPostContract1 :: (Show a, Show b) => String -> (a -> b -> Bool) -> (b -> b) -> (a -> b) -> a -> b   
withPostContract1ND :: (Show a, Show b) => String -> (a -> b -> Values Bool) -> (b -> b) -> (a -> b) -> a -> b   
withPostContract2 :: (Show a, Show b, Show c) => String -> (a -> b -> c -> Bool) -> (c -> c) -> (a -> b -> c) -> a -> b -> c   
withPostContract2ND :: (Show a, Show b, Show c) => String -> (a -> b -> c -> Values Bool) -> (c -> c) -> (a -> b -> c) -> a -> b -> c   

Exported operations:

withContract1 :: (Show a, Show b) => String -> (a -> Bool) -> (a -> b -> Bool) -> (b -> b) -> (a -> b) -> a -> b   

withContract1ND :: (Show a, Show b) => String -> (a -> Values Bool) -> (a -> b -> Values Bool) -> (b -> b) -> (a -> b) -> a -> b   

withContract2 :: (Show a, Show b, Show c) => String -> (a -> b -> Bool) -> (a -> b -> c -> Bool) -> (c -> c) -> (a -> b -> c) -> a -> b -> c   

withContract2ND :: (Show a, Show b, Show c) => String -> (a -> b -> Values Bool) -> (a -> b -> c -> Values Bool) -> (c -> c) -> (a -> b -> c) -> a -> b -> c   

withPreContract1 :: Show a => String -> (a -> Bool) -> (a -> b) -> a -> b   

withPreContract2 :: (Show a, Show b) => String -> (a -> b -> Bool) -> (a -> b -> c) -> a -> b -> c   

withPostContract0 :: Show a => String -> (a -> Bool) -> (a -> a) -> a -> a   

withPostContract0ND :: Show a => String -> (a -> Values Bool) -> (a -> a) -> a -> a   

withPostContract1 :: (Show a, Show b) => String -> (a -> b -> Bool) -> (b -> b) -> (a -> b) -> a -> b   

withPostContract1ND :: (Show a, Show b) => String -> (a -> b -> Values Bool) -> (b -> b) -> (a -> b) -> a -> b   

withPostContract2 :: (Show a, Show b, Show c) => String -> (a -> b -> c -> Bool) -> (c -> c) -> (a -> b -> c) -> a -> b -> c   

withPostContract2ND :: (Show a, Show b, Show c) => String -> (a -> b -> c -> Values Bool) -> (c -> c) -> (a -> b -> c) -> a -> b -> c