Determinism analysis: checks whether functions are deterministic or nondeterministic, i.e., whether its evaluation on ground argument terms might cause different computation paths.
Author: Michael Hanus
Version: June 2022
overlapAnalysis
:: Analysis Bool
|
showOverlap
:: AOutFormat -> Bool -> String
|
functionalAnalysis
:: Analysis Bool
|
showFunctional
:: AOutFormat -> Bool -> String
|
isNondetDefined
:: FuncDecl -> Bool
|
showDet
:: AOutFormat -> Deterministic -> String
|
nondetAnalysis
:: Analysis Deterministic
|
showNonDetDeps
:: AOutFormat -> [((String,String),[(String,String)])] -> String
|
nondetDepAnalysis
:: Analysis [((String,String),[(String,String)])]
Non-deterministic dependency analysis. |
nondetDepAllAnalysis
:: Analysis [((String,String),[(String,String)])]
Non-deterministic dependency analysis. |
Data type to represent determinism information.
Constructors:
NDet
:: Deterministic
Det
:: Deterministic
|
|
|
|
|
|
|
Non-deterministic dependency analysis. The analysis computes for each operation the set of operations with a non-deterministic definition which might be called by this operation. Non-deterministic operations that are called by other non-deterministic operations are ignored so that only the first (w.r.t. the call sequence) non-deterministic operations are returned. |
Non-deterministic dependency analysis. The analysis computes for each operation the set of all operations with a non-deterministic definition which might be called by this operation. |