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: November 2023
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












