Mode Analysis
Determine which parameters used as inputs, which as outputs
- if some parameter is always output, it can be handled more efficiently
Constraint-based mode analysis of mercury by David Overton, Zoltan Somogyi, Peter J. Stuckey (pdf)
More generally, semantic simplification analyses:
- mode analysis - prove that invertibility is not needed
- strictness analysis - prove that lazy evaluation is not needed
- side effect analysis - prove certain function do not modify or depend on heap
- call graph analysis - prove that dynamic dispatch has a bounded form