definition module gastyStart /* Pieter Koopman, Radboud University, 2016 - 2018 pieter@cs.ru.nl Advanced programming A simplified MBT tool based on logical properties Use the iTask environment! Execute with "Basic values only" option */ import StdEnv, StdGeneric, Data.GenEq test :: p -> [String] | prop p class prop a where holds :: a Prop -> [Prop] :: Prop instance prop Bool instance prop (a->b) | prop b & testArg a class testArg a | gen{|*|}, string{|*|}, gEq{|*|} a generic gen a :: [a] derive gen Int, Real, Bool, Char, UNIT, PAIR, EITHER, CONS, OBJECT, RECORD, FIELD generic string a :: a -> String derive string Int, Real, Bool, Char, UNIT, PAIR, EITHER, CONS of gcd, OBJECT, RECORD of grd, FIELD of gfd :: For = E.a b: (For) infix 0 (a -> b) [a] & prop b & string{|*|} a instance prop For :: Select = E.p: (==>) infixl 0 Bool p & prop p instance prop Select :: Equ = E.a: (=.=) infix 4 a a & testArg a instance prop Equ