scala流上的归纳证明

时间:2015-08-26 10:35:06

标签: algorithm scala stream induction proof-of-correctness

有人可以帮我解释如何推理这个scala代码

lazy val y : Stream[Int] = 1 #:: (y map (_ + 1))

从1开始生成自然数列表?

1 个答案:

答案 0 :(得分:3)

1 #:: whatever中的位置值为1,因此我们知道y(0) = 1

在更大的位置,我们有y(n+1) = whatever(n)。此处whatevery map (_+1),因此y(n+1) = (y map (_+1))(n)

我们要证明forall n. y(n) = n + 1

我们知道n = 0y(0) = 1

属实

(y.map(_+1))(n)只是y(n) + 1。这就是地图的作用。因此,我们上面的公式变为y(n+1) = y(n) + 1

然后琐碎,如果我们知道y(n) = n+1,那么y(n+1) = (n+1) + 1。结果在下一级真实。我们通过归纳获得证据。