Whether the number of beta-steps in the lambda-calculus can be taken as a reasonable cost model (that is, polynomially related to the one of Turing machines) is a delicate problem, which depends on the notion of evaluation strategy. Since the nineties, it is known that weak (that is, out of abstractions) call-by-value evaluation is a reasonable strategy while L\'evy's optimal parallel strategy, which is strong (that is, it reduces everywhere), is not. The strong case turned out to be subtler than the weak one. In 2014 Accattoli and Dal Lago have shown that strong call-by-name is reasonable, by introducing a new form of useful sharing and, later, an abstract machine with an overhead quadratic in the number of beta-steps. Here we show that strong call-by-value evaluation is also reasonable, via a new abstract machine realizing useful sharing and having a linear overhead. Moreover, our machine uses a new mix of sharing techniques, adding on top of useful sharing a form of implosive sharing, which on some terms brings an exponential speed-up. We give an example of family that the machine executes in time logarithmic in the number of beta-steps.
翻译:从90年代开始,人们就知道薄弱的(即抽象的)逐价评估是一种合理的战略,而L\'evy的最佳平行战略是强大的(即,它在所有地方都减少)不是。强有力的案例证明比弱的更微妙。2014年,Accattoli 和 Dal Lago 显示,强烈的逐条调用名称是合理的,它引入了一种有用的共享的新形式,后来又引入了一台抽象机器,在乙级步骤的数量中带有高端四边形。我们在这里表明,强大的逐条调用评价也是合理的,通过一台新的抽象机器实现有用的共享和线性管理。此外,我们的机器使用一种新的共享技术组合,在有用的共享形式上添加了一种崩溃式共享,在某些术语中引入了指数性速度序列,从而在某个时间序列中执行一个序列序列号。我们举了一个例子。