the fundamental technique is to find ranking function
- explicit ranking function is an expression
fsuch that - implicit ranking function is an expression
fsuch that the number of iteration is bounded byf. (a.k.a. loop bound)
The research is focused on two aspects:
- synthesizing ranking function for simple loop
- proving termination of complex control flow, by using result of 1.
For 1., two techniques are used:
- domain-specific technique (e.g. linear algebra) for complete method of synthesis of affine ranking function, and linear lexicographic ranking function. In this way, explicit ranking is used.
- learning-based technique like CEGIS for synthesis of piecewise ranking function .etc. In this way, both explicit and implicit ranking are used.
In learning-based technique, if the implicit ranking is used, checking the validity of candidate ranking/bound is done by safety check, which is a very heavy technique. If explicit ranking is used, validity is checked by SMT constraints solving.