在执行程序分析时,有人可以解释单调函数的用途吗?
我目前正在阅读汉金的“程序分析原理”,但不太明白它的目的。
根据定义,单调函数是任何函数,使得对于集合S中的所有元素x和y,如果x <= y =&gt; f(x)&lt; = f(y)。
答案 0 :(得分:1)
Knaster-Tarski fixed point theorem说明如下:
设L是一个完整的格子,让f:L→L是一个阶数保持函数。那么L中f的固定点集合也是一个完整的格子。
因为L中的f的固定点集合是一个完整的格子,所以在L中存在f的最小固定点。此外,可能存在无限多个其他固定点。
为什么定点对程序分析很重要?如果格子L超过抽象程序状态,则循环语义的固定点f在逻辑上表示归纳不变量,或者在集合中表示在特定程序位置处的一组程序状态,使得从该程序执行程序程序位置从该状态集中的状态开始返回到同一位置,将在该组状态内产生状态。这些状态集(或归纳不变量)是抽象解释试图找到的。
对于抽象解释的直观描述,我强烈推荐论文,Cousot,P。和Cousot,R。:Static Determination of Dynamic Properties of Programs; ISOP 1976.它早于“着名的”Cousot and Cousot '77论文,但在高等数学方面却较少陷入困境。