model :: String model | and [ -- De FO theorie hier forall q (\x -> exists p (\y -> x + y > 6)), member p 4, r < 4 -- Het outputvocabularium hier ] = output [("p",show p),("q",show q),("r",show r)] where -- Het vocabularium en domeinen hier p = subset [2,3,4] q = subset [4,5,6] r = elementOf p -- de modellen moeten berekend worden main = model -- library FO functions member (x:xs) v = x == v || member xs v member [] _ = False elementOf :: [a] -> a elementOf (x:xs) = x ? elementOf xs elementOf [] |False = error "no empty list" subset :: [a] -> [a] subset [] = [] subset (x:xs) = (x:subset xs) ? subset xs forall :: [a] -> (a -> Bool) -> Bool forall = flip all exists :: [a] -> (a -> Bool) -> Bool exists = flip any output :: [(String,String)] -> String output = unwords . (map (\(x,y) -> x ++ ":=" ++ y))