src/HOL/Tools/Quickcheck/PNF_Narrowing_Engine.hs
changeset 45003 7591039fb6b4
parent 44751 f523923d8182
child 45081 f00e52acbd42
equal deleted inserted replaced
45002:df36896aae0f 45003:7591039fb6b4
    46 -}
    46 -}
    47 -- Answers
    47 -- Answers
    48 
    48 
    49 data Answer = Known Bool | Unknown Pos deriving Show;
    49 data Answer = Known Bool | Unknown Pos deriving Show;
    50 
    50 
    51 answer :: a -> (a -> IO b) -> (Pos -> IO b) -> IO b
    51 answeri :: a -> (a -> IO b) -> (Pos -> IO b) -> IO b;
    52 answer a known unknown =
    52 answeri a known unknown =
    53   do res <- try (evaluate a)
    53   do res <- try (evaluate a)
    54      case res of
    54      case res of
    55        Right b -> known b
    55        Right b -> known b
    56        Left (ErrorCall ('\0':p)) -> unknown (map fromEnum p)
    56        Left (ErrorCall ('\0':p)) -> unknown (map fromEnum p)
    57        Left e -> throw e
    57        Left e -> throw e
       
    58 
       
    59 answer :: Bool -> (Bool -> IO b) -> (Pos -> IO b) -> IO b;
       
    60 answer a known unknown =
       
    61   Control.Exception.catch (answeri a known unknown) 
       
    62     (\ (PatternMatchFail _) -> known True)
    58 
    63 
    59 --  Proofs and Refutation
    64 --  Proofs and Refutation
    60 
    65 
    61 data Quantifier = ExistentialQ | UniversalQ
    66 data Quantifier = ExistentialQ | UniversalQ
    62 
    67