1
나는 각각 22 개의 입력을 갖는 수백 개의 XOR 절을 포함하여 만족 가능성 문제를 해결하기 위해 Z3을 사용하고있다. DIMACS 형식의 XOR 절을 코딩하려면 Tseitin 인코딩을 사용하고 있습니다. 내 변환은 XOR을 각각 최대 5 자 리터럴의 작은 CNF 절로 나눕니다. Z3은 지금까지 SAT 솔루션을 고안 할 수 없습니다.Z3 SAT 솔버를위한 XOR 절
인코딩을 개선하려면 어떻게해야합니까?
가우스 제거를 살펴 보았지만, XOR 표현식에 동일한 입력 변수가 없으므로 아마도 도움이되지 않습니다.
SMT2 입력 형식과 비트 벡터를 사용하는 것이 DIMACS/CNF를 Z3 입력으로 사용하는 것보다 일반적으로/잠재적으로 더 효율적입니까? –
빠른 참고 사항 : 1- 효율적인 SAT 해결사는 기본적으로 비트 벡터 만 포함하는 문제에 사용되므로'check-sat-using'을 사용할 필요가 없습니다. 2- Z3은 CryptoMinisat와 같은 xor 절을 지원하지 않습니다. SMT2 입력 형식으로 문제를 인코딩해도 도움이되지 않습니다. Xor 절에 대한 지원은 구현하기 어렵지 않습니다. 그러나 TODO 목록에 포함되어 있지 않습니다. 관심이 있다면 Crytominisat 접근법을 Z3에 구현하기 위해 수행해야 할 작업을 보여줄 수 있습니다. –