# 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