Z3 veya Boolector gibi SMT çözücüleri, sorunları çözmek için karmaşık bir sezgisel tarama seti kullanır. Bununla birlikte, bu aynı zamanda belirli bir problem için böyle bir çözücünün performansını tahmin etmeyi çok zorlaştırır. Benim sorum şu:
Soru
Niceleyici içermeyen bitvektörler (QFBV) teorisindeki belirli bir kişi için bir SMT çözücüsünün performansını anlamak veya anlamak için bir yol var mı?
Bu, çözücünün nerede "sıkışıp kaldığı" / ilerleme kaydetmediğini anlamaya yardımcı olacak görselleştirme araçlarını da içerir.
Uygulamalar
Aynı sorunun farklı kodlamalarının çözücü performansını nasıl etkilediğini önceden anlayın (buradaki teknolojinin durumu "sadece birkaç farklı kodlamayı deneyin ve birinin yeterince hızlı olmasını umuyoruz" değil mi?)
Belirli bir sorun zaman kısıtlamaları nedeniyle bir SMT çözücü tarafından çözülemezse, sorunun çözülebilmesi için farklı bir şekilde ifade etmenin bir yolunu bulun.
Çözücü performansını hiç etkilemeyen veya hatta çözücü performansını olumsuz etkilemeyen etki alanına özgü sorun basitleştirmelerinde zaman kaybetmeyin.
Mevcut araştırma
Bu konuda araştırma bulmaya çalıştım, ancak fazla bir şey bulamadım. Henüz SAT / SMT çözücüler konusunda fazla deneyimim yok, bu yüzden bir şey kaçırırsam özür dilerim.
SATzilla : makine öğrenme teknikleri kullanılarak problemden çıkarılan özelliklere dayanarak en iyi performans gösteren çözücüyü tahmin eder.
Bu yalnızca SMT yerine SAT için geçerlidir ve çözümleyicilerin performansının nedenlerini açıklamaz.
Z3 aksiyom profiler Z3 örnekleme grafiğinin görselleştirilmesi ve eşleşen döngülerin analizi
Bu sadece niceliksel teorilere odaklanıyor gibi görünüyor.