加重チュートリアルと、次の例に出くわした:私はZ3の出力を理解していない私はZ3(目的関数)を経由してMaxSMT Z3
(declare-const a Bool)
(declare-const b Bool)
(declare-const c Bool)
(assert-soft a :weight 1 :id A)
(assert-soft b :weight 2 :id B)
(assert-soft c :weight 3 :id A)
(assert (= a c))
(assert (not (and a b)))
(check-sat)
(get-model)
:
A |-> 0
B |-> 2
sat
(model (define-fun c() Bool true)
(define-fun b() Bool false)
(define-fun a() Bool true))
私の理解では、ということです加重MaxSMTはブール式の加重合計を最大化しようとします。したがって、aとcの両方が真でbは偽であるので、A | - > 4とB | - > 0となるはずです。