|
definition: |
generateTheorem :: Options -> QName -> IO ()
generateTheorem opts qpropname = do
(newopts, allprogs, allfuncs) <- getAllFunctions opts [] [] [qpropname]
let alltypenames = foldr union []
(map (\fd -> tconsOfType (typeOfQualType (funcType fd)))
allfuncs)
noproptypenames = filter ((/= propTypesModule) . fst) alltypenames
alltypes <- getAllTypeDecls opts allprogs noproptypenames []
when (optVerb opts > 2) $ do
putStrLn $ "Theorem `" ++ snd qpropname ++ "':\nInvolved operations:"
putStrLn $ unwords (map (showQName . funcName) allfuncs)
putStrLn $ "Involved types:"
putStrLn $ unwords (map (showQName . typeName) alltypes)
case optTarget opts of
"agda" -> theoremToAgda newopts qpropname allfuncs alltypes
t -> error $ "Unknown translation target: " ++ t
|
|
demand: |
no demanded arguments |
|
deterministic: |
deterministic operation |
|
documentation: |
Generate a proof file for a given property name. |
|
indeterministic: |
might be indeterministic |
|
infix: |
no fixity defined |
|
iotype: |
{(_,_) |-> _}
|
|
name: |
generateTheorem |
|
precedence: |
no precedence defined |
|
result-values: |
_ |
|
signature: |
VerifyOptions.Options -> (String, String) -> Prelude.IO () |
|
solution-complete: |
operation might suspend on free variables |
|
terminating: |
possibly non-terminating |
|
totally-defined: |
possibly non-reducible on same data term |