[< - ]在为什么3中意味着什么?

时间:2015-07-15 19:18:54

标签: smt frama-c why3

我使用Frama-C,Alt-Ergo和Why3进行系统验证。 Frama-C生成并发送给Why3的一个证明义务如下所示(这是Why3版本):

(p_StableRemove t_1[a_5 <- x] a_1 x_1 a i_2)

我想知道t_1[a_5 <- x]的含义。

在访问x之前,它是a_5t_1[a_5 <- x]的分配吗?

1 个答案:

答案 0 :(得分:2)

[ <- ]是Why3中数组修改的表示法。但是,与命令式语言不同,t[i <- v]t功能更新,即将i映射到v的(新)数组,和t中所有其他有效索引的值tt本身未经修改,您通过复制t的大部分内容来创建新数组。

这些是Why3 standard library on arrays

的相关部分
function set (a: array ~'a) (i: int) (v: 'a) : array 'a =
    { a with elts = M.set a.elts i v }

function ([<-]) (a: array 'a) (i: int) (v: 'a) : array 'a = set a i v