Set/sequence求和运算符?

Set/sequence summation operator?

我有一套,S = { 1, 2, 3, 4, 5 }

如果我想用标准逻辑对它求和,它只是 ∑S(SO 上没有 MathJax,所以我不能很好地格式化它)。

VDM 等价物是什么?我在语言参考的 numerics/sets 部分没有看到任何内容。

这应该有效:

sum(S)

但是你可以很容易地找到它。

没有标准库函数可以执行此操作(尽管也许应该有)。您将使用简单的递归函数对集合求和:

sum: set of nat +> nat
sum(s) ==
    if s = {}
    then 0
    else let e in set s in
        e + sum(s \ {e})
measure card s;

"let"从集合中选择任意一个元素,然后将其与余数之和相加。该度量表示递归总是处理较小的集合。