计算一个整数集的总和

问题描述 投票:1回答:1

使用CVC4的集合理论(版本1.8-预发行版[git master a90b9e2b]),我定义了一组具有固定基数的整数

(set-logic ALL_SUPPORTED)
(set-option :produce-models true)

(declare-fun A () (Set Int))
(assert (= 5 (card A)))

;;(assert (= sum (???)))

(check-sat)
(get-model)

CVC4然后给我一个正确的模型

sat
(model
(define-fun A () (Set Int) (union (union (union (union (singleton 0) (singleton 1)) (singleton (- 1))) (singleton 2)) (singleton (- 2))))
)

有没有办法求集A中整数的和?

smt cvc4
1个回答
0
投票

如果您知道集合A中可能包含的所有元素,则一个选项是

(declare-fun A () (Set Int))
...
(declare-fun sum () Int)
(assert (= sum
           (+
               (ite (member 1 A) 1 0)
               (ite (member 2 A) 2 0)
               ...
               (ite (member k A) k 0)
           )
))

这可能不是很有效。

© www.soinside.com 2019 - 2024. All rights reserved.