2011-01-06 21 views
5

SMT Z3 kullanımının pratik örnekleri (DbC gibi) ile bu araç için kod ve açık kaynak alternatifleri ile ilgileniyorum. Yani, aslında, ben benzer Z3 resmi çözme araçları ilgileniyorum, ama:SMT Z3 usecases (DbC gibi) ve Z3'e açık kaynak alternatifi için pratik örnekler mi arıyorsunuz?

  • açık kaynak olmalıdır
  • düşük seviyeli (API) ve üst düzey (Metin scripting) etkileşim
  • hem sağlamak
  • destek SMT-LIB
  • uygun (kullanılabilir) Java, python, ruby, Vala ve değil Haskell gibi diller için/içinde yazılı araçlar/içinde
  • buna dayalı istikrarlı (pratikte kullanılabilir) araçları gibi vardır Sözleşmeye göre tasarım (DbC), statik tip doğrulama, vb.
  • 01 SMT-LIB ana göre

(bit.ly detaylar için paket bakın) 2010 SMT çözenler listesi: "Alt-Ergo, Barcelogic, Beaver, Boolector, CVC3, DBT, MathSAT, OpenSMT, saten, Mızrak, STP, SWORD, UCLID, veriT, Yices, Z3. "

Lütfen uygulamada herhangi birinin kullanımı hakkında herhangi bir geri bildirim verin (kod örnekleri en iyisidir)? Son olarak, GHC olasılıkları ile karşılaştırmaya ilişkin herhangi bir bilgi yararlı olacaktır, ancak sadece bir uygulama örneği varsa (bir dil "özelliği" değil). Benim kadarıyla burada http://bit.ly/bundles/ewiger/1

cevap

3

Z3

Daha hızlı bilgi, CVC3 bunun içinde, ihtiyaçlarınız en yakın gelir:

  1. Z3 en benzer bir özellik kümesi vardır.
  2. Bir BSD-style license vardır
  3. Mevcut çözüm, birçok mevcut proje için geçerli mi.

CVC3 C++ ve Java ve muhtemelen diğer diller için bindings sahiptir. Genel olarak, API'nin (metinsel) input language'dan çok daha zor olduğunu düşünüyorum. Bu, SMT-LIB2 diline bağlı kalırsanız, gerekirse daha sonra farklı bir araca geçiş yapabileceğiniz ek bir faydaya sahiptir. Örneklerin büyük bir örneği SMT-LIB website'da mevcuttur.

3

Sen Z3 açık kaynak alternatifleri hakkında sordunuz:

2011-08 de SMT-Wikipedia göre elimizde: Bu önlemlerin dayanarak

, o en canlı iyi organize olduğu görülmektedir projeler OpenSMT, STP ve CVC4.

Sadece bu şeyleri kontrol ediyorum - şimdiye kadar, üçü de makul görünüyor, artı eski CVC -> Ben CVC3 demek istiyorum.