and :: [Bool] -> Bool
-- testing 14 combinations of argument values
-- pruning with 37/47 rules
-- looking through 2 candidates of size 1
-- looking through 4 candidates of size 2
-- looking through 2 candidates of size 3
-- looking through 2 candidates of size 4
-- looking through 4 candidates of size 5
-- tested 14 candidates
and []  =  True
and (p:ps)  =  p && and ps

or :: [Bool] -> Bool
-- testing 14 combinations of argument values
-- pruning with 37/47 rules
-- looking through 2 candidates of size 1
-- looking through 4 candidates of size 2
-- looking through 2 candidates of size 3
-- looking through 2 candidates of size 4
-- looking through 4 candidates of size 5
-- tested 11 candidates
or []  =  False
or (p:ps)  =  p || or ps

and :: [Bool] -> Bool
-- testing 14 combinations of argument values
-- pruning with 39/49 rules
-- looking through 2 candidates of size 1
-- looking through 4 candidates of size 2
-- looking through 2 candidates of size 3
-- looking through 4 candidates of size 4
-- tested 12 candidates
and ps  =  foldr (&&) True ps

or :: [Bool] -> Bool
-- testing 14 combinations of argument values
-- pruning with 39/49 rules
-- looking through 2 candidates of size 1
-- looking through 4 candidates of size 2
-- looking through 2 candidates of size 3
-- looking through 4 candidates of size 4
-- tested 11 candidates
or ps  =  foldr (||) False ps

