private-yusuke / smt-d

A small SMT solver implementation for QF_UF and LRA[WIP]. 2021年度の情報特別演習Iにて書いたプログラム

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

`distinct` 関数の対応

private-yusuke opened this issue · comments

ref: http://smtlib.github.io/jSMTLIB/SMTLIBTutorial.pdf

概要

QF_UF 理論では、与えられた式すべてに inequality が成立することを主張するための関数 distinct が事前に定義されている必要がある。

方針

nCr(n, 2) = n(n-1)/2 になるので、この個数だけ inequality の制約を生成して SMTSolver.expandLet のように (distinct e1 e2 ...) のところを置換するという荒技が可能そう。工夫すれば効率化できたはず