|
definition: |
runFixpoint :: Eq a => ADom a
-> (SemEq a -> SemInt a -> SemInt a)
-> [Rule] -> [(String,[a])] -> Bool
-> ([SemEq a] -> [SemEq a] -> Bool)
-> IO (SemInt a)
runFixpoint adom insertsem rules mainacalls withprint semeq = do
let trm = transformInt adom insertsem rules
(foldr insertsem [] (map main2int mainacalls))
--printProgram rules maincalls
if withprint then return () else putStr "Iterating:"
garbageCollect
pi1 <- getProcessInfos
fpsem <- computeFixpoint withprint 0 (showSemInt adom) semeq trm []
getProcessInfos >>= printTiming pi1
return fpsem
where
-- map a main call into an abstract equation
main2int (f,aterms) = Eq f aterms (adomBottom adom)
|
|
demand: |
no demanded arguments |
|
deterministic: |
deterministic operation |
|
documentation: |
--------------------------------------------------------------------------- Runs a simple fixpoint computation w.r.t. a set of abstract initial calls. |
|
failfree: |
(_, _, _, _, _, _, _) |
|
indeterministic: |
referentially transparent operation |
|
infix: |
no fixity defined |
|
iotype: |
{(_,_,_,_,_,_,_) |-> _}
|
|
name: |
runFixpoint |
|
precedence: |
no precedence defined |
|
result-values: |
_ |
|
signature: |
Prelude.Eq a => ADom a -> (SemEq a -> [SemEq a] -> [SemEq a]) -> [TRS.Rule] -> [(String, [a])] -> Prelude.Bool -> ([SemEq a] -> [SemEq a] -> Prelude.Bool) -> Prelude.IO [SemEq a] |
|
solution-complete: |
operation might suspend on free variables |
|
terminating: |
possibly non-terminating |
|
totally-defined: |
possibly non-reducible on same data term |