我是使用 Z3 的新人。
想知道如何计算一个集合和两个不同集合的最大值。
例如:
[1, 6, 5]
- 更大的是 6
[1, 6, 5]
e [10, 7, 2]
- 更大的是 6
我使用以下代码进行设置:
(declare-sort Set 0)
(declare-fun contains (Set Int) bool)
( declare-const set Set )
( declare-const distinct_set Set )
( declare-const A Int )
( declare-const B Int )
( declare-const C Int )
( assert ( = A 0 ) )
( assert ( = B 1 ) )
( assert ( = C 2 ) )
( assert ( distinct A C) )
( assert ( distinct set distinct_set ) )
(assert
(forall ((x Int))
(= (contains set x) (or (= x A) (= x C)))))
现在想知道如何计算集合(set)中的最大值和集合(set和distinct_set)中的最大值。
如果它适用于所有整数只是因为它很容易做到:
(define-fun max ((x Int) (y Int)) Int
(ite (< x y) y x))
但是我不能通过它们的整数离开集合,即获取已设置的值。
你能帮助我吗?
谢谢