Main calls to the (abstract) interpreters: |
Fixpoint analyzer for call patterns
Author: Michael Hanus
Version: February 2023
analysisDir
:: String
|
createAnalysisDir
:: String -> IO ()
|
ndInfoFileName
:: String -> String
|
strictInfoFileName
:: String -> String
|
adomBottom
:: ADom a -> a
|
adomShow
:: ADom a -> a -> String
|
abstractCall
:: ADom a -> (String,[Term]) -> (String,[a])
|
matchCTerms
:: [Term] -> [CTerm] -> Maybe [(Int,CTerm)]
|
lessCSpecific
:: CTerm -> CTerm -> Bool
|
showCTerm
:: CTerm -> String
|
concreteDom
:: ADom CTerm
|
matchDTerms
:: [Term] -> [DTerm] -> Maybe [(Int,DTerm)]
|
consDTerm
:: Int -> String -> [DTerm] -> DTerm
|
cutDTerm
:: Int -> DTerm -> DTerm
|
lessDSpecific
:: DTerm -> DTerm -> Bool
|
applyPrimDTerm
:: String -> [DTerm] -> Maybe DTerm
|
showDTerm
:: DTerm -> String
|
depthDom
:: Int -> ADom DTerm
|
eqSemInt
:: Eq a => [SemEq a] -> [SemEq a] -> Bool
|
insertSemEq
:: Ord a => SemEq a -> [SemEq a] -> [SemEq a]
|
updateSemEq
:: Ord a => (SemEq a -> SemEq a -> Bool) -> SemEq a -> [SemEq a] -> [SemEq a]
|
lessSpecificEqCallPattern
:: (a -> a -> Bool) -> SemEq a -> SemEq a -> Bool
|
lessSpecificEqResult
:: Eq a => (a -> a -> Bool) -> SemEq a -> SemEq a -> Bool
|
transformInt
:: Eq a => ADom a -> (SemEq a -> [SemEq a] -> [SemEq a]) -> [Rule] -> [SemEq a] -> [SemEq a] -> [SemEq a]
|
extendListMap
:: (a -> [b]) -> [a] -> [[b]]
|
runFixpoint
:: Eq a => ADom a -> (SemEq a -> [SemEq a] -> [SemEq a]) -> [Rule] -> [(String,[a])] -> Bool -> ([SemEq a] -> [SemEq a] -> Bool) -> IO [SemEq a]
|
computeFixpoint
:: Bool -> Int -> (a -> String) -> (a -> a -> Bool) -> (a -> a) -> a -> IO a
|
showSemInt
:: ADom a -> [SemEq a] -> String
|
getMainCall
:: [Rule] -> (String,[Term])
|
genMainCalls
:: ADom a -> [Rule] -> [(String,[a])]
|
printProgram
:: ADom a -> [Rule] -> [(String,[a])] -> IO ()
|
fEqsOfWorkSem
:: String -> RedBlackTree (String,[([a],a,[String])]) -> [([a],a,[String])]
|
processWorkList
:: Eq a => ADom a -> (SemEq a -> SemEq a -> Bool) -> Bool -> [Rule] -> [(String,[a])] -> RedBlackTree (String,[([a],a,[String])]) -> IO [SemEq a]
|
runFixpointWL
:: Eq a => ADom a -> (SemEq a -> SemEq a -> Bool) -> [Rule] -> [(String,[a])] -> Bool -> IO [SemEq a]
|
printTiming
:: [(ProcessInfo,Int)] -> [(ProcessInfo,Int)] -> IO ()
|
main
:: IO ()
Main calls to the (abstract) interpreters: |
mainCallError
:: [String] -> a
|
checkArgs
:: (Int,Bool,Bool,Bool,String) -> [String] -> (Int,Bool,Bool,Bool,String)
|
callPatternAnalysis
:: Int -> Bool -> Bool -> String -> IO ()
|
transformNondet
:: Int -> Bool -> Bool -> String -> IO ()
|
unApply
:: [Rule] -> [Rule]
|
transformRules
:: [(String,Bool)] -> [(String,[Int])] -> [Rule] -> ([Rule],Int)
|
transformExp
:: [(String,Bool)] -> [(String,[Int])] -> Term -> (Term,Bool,Int)
|
extractStrictness
:: Eq a => ADom a -> [SemEq a] -> [(String,[Int])]
|
sortFuncInfos
:: [(String,a)] -> [(String,a)]
|
showStrictness
:: [(String,[Int])] -> String
|
dataModule
:: TypeDecl -> String
|
prog2DirFile
:: String -> String
|
bench
:: Int -> String -> IO ()
|
runBench
:: IO ()
|
Constructors:
ADom
:: a -> (Int -> a) -> (String -> [a] -> a) -> ([Term] -> [a] -> Maybe (Sub a)) -> (a -> a -> Bool) -> (a -> String) -> (String -> [a] -> Maybe a) -> ADom a
Constructors:
Eq
:: String -> [a] -> a -> SemEq a
Type synonym: SemInt a = [SemEq a]
Type synonym: Sub a = [(Int,a)]
Constructors:
CBot
:: CTerm
CVar
:: Int -> CTerm
CCons
:: String -> [CTerm] -> CTerm
Constructors:
DBot
:: DTerm
DCons
:: String -> [DTerm] -> DTerm
CutVar
:: DTerm
Type synonym: WorkSemInt a = TableRBT String [([a],a,[String])]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Main calls to the (abstract) interpreters: |
|
|
|
|
|
|
|
|
|
|
|
|
|