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: August 2016
overlapAnalysis
:: Analysis Bool

showOverlap
:: AOutFormat > Bool > String

functionalAnalysis
:: Analysis Bool

showFunctional
:: AOutFormat > Bool > String

showDet
:: AOutFormat > Deterministic > String

nondetAnalysis
:: Analysis Deterministic

showNonDetDeps
:: AOutFormat > [((String,String),[(String,String)])] > String

nondetDepAnalysis
:: Analysis [((String,String),[(String,String)])]
Nondeterministic dependency analysis. 
nondetDepAllAnalysis
:: Analysis [((String,String),[(String,String)])]
Nondeterministic dependency analysis. 
Data type to represent determinism information.
Constructors:
NDet
:: Deterministic
Det
:: Deterministic






Nondeterministic dependency analysis. The analysis computes for each operation the set of operations with a nondeterministic definition which might be called by this operation. Nondeterministic operations that are called by other nondeterministic operations are ignored so that only the first (w.r.t. the call sequence) nondeterministic operations are returned. 
Nondeterministic dependency analysis. The analysis computes for each operation the set of all operations with a nondeterministic definition which might be called by this operation. 