skip to main content
research-article
Open Access

Satune: synthesizing efficient SAT encoders

Published:13 November 2020Publication History
Skip Abstract Section

Abstract

Modern SAT solvers are extremely efficient at solving boolean satisfiability problems, enabling a wide spectrum of techniques for checking, verifying, and validating real-world programs. What remains challenging, though, is how to encode a domain problem (e.g., model checking) into a SAT formula because the same problem can have multiple distinct encodings, which can yield performance results that are orders-of-magnitude apart, regardless of the underlying solvers used. We develop Satune, a tool that can automatically synthesize SAT encoders for different problem domains. Satune employs a DSL that allows developers to express domain problems at a high level and a search algorithm that can effectively find efficient solutions. The search process is guided by observations made over example encodings and their performance for the domain and hence Satune can quickly synthesize a high-performance encoder by incorporating patterns from examples that yield good performance. A thorough evaluation with JMCR, SyPet, Dirk, Hexiom, Sudoku, and KillerSudoku demonstrates that Satune can easily synthesize high-performance encoders for different domains including model checking, synthesis, and games. These encoders generate constraint problems that are often several orders of magnitude faster to solve than the original encodings used by the tools.

Skip Supplemental Material Section

Supplemental Material

Auxiliary Presentation Video

This is a presentation video of Satune at OOPSLA 2020 on our paper accepted in the research track. We developed Satune, a tool that can automatically synthesize SAT encoders for different problem domains. Satune employs a DSL that allows developers to express domain problems at a high level and a search algorithm that can effectively find efficient solutions. The search process is guided by observations made over example encodings and their performance for the domain and hence Satune can quickly synthesize a high-performance encoder by incorporating patterns from examples that yield good performance. A thorough evaluation with 6 benchmarks demonstrates that Satune can easily synthesize high-performance encoders that generate constraint problems that are often several orders of magnitude faster to solve than the original encodings used by the tools. More details in our paper (https://doi.org/10.1145/3428214). Satune is publicly available to the users: http://plrg.ics.uci.edu/satune/.

References

  1. Amir Aavani. 2011. Translating Pseudo-Boolean Constraints into CNF. In Theory and Applications of Satisfiability Testing-SAT 2011, Karem A. Sakallah and Laurent Simon (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 357-359.Google ScholarGoogle ScholarCross RefCross Ref
  2. Amir Aavani, Xiongnan (Newman) Wu, Shahab Tasharrofi, Eugenia Ternovska, and David Mitchell. 2012. Enfragmo: A System for Modelling and Solving Search Problems with Logic. In Logic for Programming, Artificial Intelligence, and Reasoning, Nikolaj Bjørner and Andrei Voronkov (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 15-22.Google ScholarGoogle Scholar
  3. Ignasi Abío and Peter J Stuckey. 2014. Encoding linear constraints into SAT. In International Conference on Principles and Practice of Constraint Programming. Springer, 75-91.Google ScholarGoogle ScholarCross RefCross Ref
  4. Airobert. 2016. SAT Based Killer Sudoku. https://github.com/UvA-KR16/KilerSudokuGoogle ScholarGoogle Scholar
  5. Taufan Ardi. 2015. SAT Based Sudoku Solver in Python. https://github.com/taufanardi/sudoku-sat-solverGoogle ScholarGoogle Scholar
  6. Gilles Audemard and Laurent Simon. 2009. Predicting Learnt Clauses Quality in Modern SAT Solvers. In Proceedings of the 21st International Joint Conference on Artifical Intelligence (Pasadena, California, USA). Morgan Kaufmann Publishers Inc., 399-404.Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Gilles Audemard and Laurent Simon. 2014. Lazy Clause Exchange Policy for Parallel SAT Solvers. In Theory and Applications of Satisfiability Testing (SAT '14). 197-205.Google ScholarGoogle Scholar
  8. Gilles Audemard and Laurent Simon. 2015. Glucose and Syrup in the SAT Race 2015.Google ScholarGoogle Scholar
  9. Olivier Bailleux and Yacine Boufkhad. 2003. Eficient CNF Encoding of Boolean Cardinality Constraints, Vol. 2833. 108-122. https://doi.org/10.1007/978-3-540-45193-8_8 Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Olivier Bailleux, Yacine Boufkhad, and Olivier Roussel. 2009. New Encodings of Pseudo-Boolean Constraints into CNF, Vol. 5584. 181-194. https://doi.org/10.1007/978-3-642-02777-2_19 Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Clark Barrett, Christopher L. Conway, Morgan Deters, Liana Hadarean, Dejan Jovanovi'c, Tim King, Andrew Reynolds, and Cesare Tinelli. 2011. CVC4. In Proceedings of the 23rd International Conference on Computer Aided Verification (CAV '11) (Lecture Notes in Computer Science, Vol. 6806 ), Ganesh Gopalakrishnan and Shaz Qadeer (Eds.). Springer, 171-177. http://www.cs.stanford.edu/~barrett/pubs/BCD+11.pdf Snowbird, Utah.Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Mark Batty, Scott Owens, Susmit Sarkar, Peter Sewell, and Tjark Weber. 2011. Mathematizing C+ + Concurrency. In Proceedings of the 38th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages.Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Ramón Béjar and Felip Manya. 2000. Solving the round robin problem using propositional logic. In AAAI/IAAI. 262-266.Google ScholarGoogle Scholar
  14. Armin Biere. 2008. PicoSAT essentials. Journal on Satisfiability, Boolean Modeling and Computation 4 ( 2008 ), 75-97.Google ScholarGoogle Scholar
  15. Armin Biere, Daniel Le Berre, Emmanuel Lonca, and Norbert Manthey. 2014. Detecting Cardinality Constraints in CNF. In Theory and Applications of Satisfiability Testing-SAT 2014, Carsten Sinz and Uwe Egly (Eds.). Springer International Publishing, Cham, 285-301.Google ScholarGoogle Scholar
  16. Magnus Björk. 2009. Successful SAT Encoding Techniques. Journal on Satisfiability, Boolean Modeling, and Computation 7 (July 2009 ), 189-201.Google ScholarGoogle ScholarCross RefCross Ref
  17. Jasmin Christian Blanchette, Tjark Weber, Mark Batty, Scott Owens, and Susmit Sarkar. 2011. Nitpicking C+ + Concurrency. In Proceedings of the 13th International ACM SIGPLAN Symposium on Principles and Practices of Declarative Programming. 113-124. http://doi.acm.org/10.1145/2003476.2003493 Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Lucas Bordeaux and Joao Marques-Silva. 2012. Knowledge compilation with empowerment. In International Conference on Current Trends in Theory and Practice of Computer Science. Springer, 612-624.Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Thomas Bouton, Diego Caminha B de Oliveira, David Déharbe, and Pascal Fontaine. 2009. veriT: an open, trustable and eficient SMT-solver. In International Conference on Automated Deduction. Springer, 151-156.Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Martin Brain, Liana Hadarean, Daniel Kroening, and Ruben Martins. 2016. Automatic Generation of Propagation Complete SAT Encodings. In Verification, Model Checking, and Abstract Interpretation, Barbara Jobstmann and K. Rustan M. Leino (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 536-556.Google ScholarGoogle Scholar
  21. Robert Brummayer and Armin Biere. 2009. Boolector: An Eficient SMT Solver for Bit-Vectors and Arrays. In TACAS (Lecture Notes in Computer Science, Vol. 5505 ). Springer, 174-177.Google ScholarGoogle Scholar
  22. Roberto Bruttomesso, Alessandro Cimatti, Anders Franzén, Alberto Griggio, and Roberto Sebastiani. 2008. The MathSATÃĆÂă4 SMT Solver. In Computer Aided Verification, Aarti Gupta and Sharad Malik (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 299-303.Google ScholarGoogle Scholar
  23. Sebastian Burckhardt, Rajeev Alur, and Milo MK Martin. 2007. CheckFence: Checking consistency of concurrent data types on relaxed memory models. In ACM SIGPLAN Notices, Vol. 42. ACM, 12-21.Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Bertrand Cabon, Simon de Givry, Lionel Lobjois, Thomas Schiex, and Joost Warners. 1999. Radio Link Frequency Assignment. Constraints 4 ( 02 1999 ), 79-89. https://doi.org/10.1023/A:1009812409930 Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Cristian Cadar, Daniel Dunbar, and Dawson Engler. 2008. KLEE: Unassisted and Automatic Generation of High-coverage Tests for Complex Systems Programs. In Proceedings of the 8th USENIX Conference on Operating Systems Design and Implementation. 209-224.Google ScholarGoogle Scholar
  26. B. Chambers, P. Manolios, and D. Vroon. 2009. Faster SAT solving with better CNF generation. In 2009 Design, Automation & Test in Europe Conference & Exhibition (DATE).Google ScholarGoogle Scholar
  27. Yury Chebiryak and Daniel Kroening. 2008. An eficient SAT encoding of circuit codes. In 2008 International Symposium on Information Theory and Its Applications. IEEE, 1-4.Google ScholarGoogle ScholarCross RefCross Ref
  28. Jingchao Chen. 2010. A new SAT encoding of the at-most-one constraint. Proc. Constraint Modelling and Reformulation ( 2010 ).Google ScholarGoogle Scholar
  29. Insang Chung. 2017. A SAT-based method for basis path testing using KodKod. International Journal of Applied Engineering Research 12, 18 ( 2017 ), 7294-7305.Google ScholarGoogle Scholar
  30. Koen Claessen and Niklas SÃűrensson. 2003. New Techniques that Improve MACE-style Finite Model Finding. In Proceedings of the CADE-19 Workshop: Model Computation-Principles, Algorithms, Applications.Google ScholarGoogle Scholar
  31. Florian Corzilius, Gereon Kremer, Sebastian Junges, Stefan Schupp, and Erika Ábrahám. 2015. SMT-RAT: An Open Source C++ Toolbox for Strategic and Parallel SMT Solving. In Theory and Applications of Satisfiability Testing-SAT 2015, Marijn Heule and Sean Weaver (Eds.). Springer International Publishing, Cham, 360-368.Google ScholarGoogle ScholarCross RefCross Ref
  32. Martin Davis, George Logemann, and Donald W. Loveland. 1962. A machine program for theorem-proving. Commun. ACM 5, 7 ( 1962 ), 394-397. https://doi.org/10.1145/368273.368557 Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Martin Davis and Hilary Putnam. 1960. A Computing Procedure for Quantification Theory. J. ACM 7, 3 ( 1960 ), 201-215. https://doi.org/10.1145/321033.321034 Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Leonardo de Moura and Nikolaj Bjørner. 2008. Z3: An Eficient SMT Solver. In Tools and Algorithms for the Construction and Analysis of Systems, 14th International Conference, TACAS 2008, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2008, Budapest, Hungary, March 29-April 6, 2008. Proceedings (Lecture Notes in Computer Science, Vol. 4963 ). Springer, 337-340.Google ScholarGoogle ScholarCross RefCross Ref
  35. Brian Demsky and Patrick Lam. 2015. SATCheck: SAT-directed stateless model checking for SC and TSO. In ACM SIGPLAN Notices, Vol. 50. ACM, 20-36.Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Ankush Desai, Vivek Gupta, Ethan Jackson, Shaz Qadeer, Sriram Rajamani, and Damien Zuferey. 2013. P: Safe Asynchronous Event-driven Programming. In Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and Implementation. 321-332.Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Isil Dillig, Thomas Dillig, and Alex Aiken. 2008. Sound, Complete and Scalable Path-sensitive Analysis. In Proceedings of the 29th ACM SIGPLAN Conference on Programming Language Design and Implementation. 270-280.Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Bruno Dutertre and Leonardo de Moura. 2006. The Yices SMT solver. Technical Report. SRI International.Google ScholarGoogle Scholar
  39. Yu Feng, Ruben Martins, Yuepeng Wang, Isil Dillig, and Thomas W. Reps. 2017a. Component-based Synthesis for Complex APIs. In Proceedings of the 44th ACM SIGPLAN Symposium on Principles of Programming Languages (Paris, France) (POPL 2017 ). ACM, New York, NY, USA, 599-612. https://doi.org/10.1145/3009837.3009851 Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Yu Feng, Ruben Martins, Yuepeng Wang, Isil Dillig, and Thomas W. Reps. 2017b. SyPet. https://github.com/utopiagroup/sypetGoogle ScholarGoogle Scholar
  41. Cormac Flanagan and Shaz Qadeer. 2002. Predicate Abstraction for Software Verification. In Proceedings of the 29th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. 191-202.Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Alan M. Frisch and Paul A. Giannaros. 2010. SAT Encodings of the At-Most-k Constraint. Some Old, Some New, Some Fast, Some Slow. In Proceedings of the Tenth International Workshop of Constraint Modelling and Reformulation.Google ScholarGoogle Scholar
  43. Vijay Ganesh and David L. Dill. 2007. A Decision Procedure for Bit-vectors and Arrays. In Proceedings of the 19th International Conference on Computer Aided Verification (Berlin, Germany). 519-531. http://dl.acm.org/citation.cfm?id= 1770351. 1770421Google ScholarGoogle Scholar
  44. Gecode. 2016. Generic Constraint Development Environment. https://www.gecode.org/Google ScholarGoogle Scholar
  45. Ian Gent, Lars Kotthof, Ian Miguel, and Peter Nightingale. 2010. Machine learning for constraint solver design-A case study for the alldiferent constraint. arXiv preprint arXiv:1008.4326 ( 2010 ).Google ScholarGoogle Scholar
  46. Ian P Gent and Inês Lynce. 2005. A SAT encoding for the social golfer problem. Modelling and Solving Problems with Constraints 2 ( 2005 ).Google ScholarGoogle Scholar
  47. Patrice Godefroid, Nils Klarlund, and Koushik Sen. 2005. DART: Directed Automated Random Testing. In Proceedings of the 2005 ACM SIGPLAN Conference on Programming Language Design and Implementation. 213-223.Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. Hugo Musso Gualandi. 2012. Using an industrial-strength SAT solver to solve the Hexiom puzzle. https://github.com/hugomg/ hexiomGoogle ScholarGoogle Scholar
  49. Shai Haim and Toby Walsh. 2009. Restart strategy selection using machine learning techniques. In International Conference on Theory and Applications of Satisfiability Testing. Springer, 312-325.Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. Stefen Hölldobler and Van-Hau Nguyen. 2013. An Eficient Encoding of the at-most-one Constraint.Google ScholarGoogle Scholar
  51. Jef Huang. 2015a. Stateless Model Checking Concurrent Programs with Maximal Causality Reduction. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (Portland, OR, USA). 165-174. https://doi.org/10.1145/2737924.2737975 Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. Jef Huang. 2015b. Stateless Model Checking Concurrent Programs with Maximal Causality Reduction. In Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation (Portland, OR, USA) ( PLDI '15). ACM, New York, NY, USA, 165-174. https://doi.org/10.1145/2737924.2737975 Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. Jef Huang, Patrick O'Neil Meredith, and Grigore Rosu. 2014. Maximal Sound Predictive Race Detection with Control Flow Abstraction. In Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation (Edinburgh, United Kingdom). 337-348. https://doi.org/10.1145/2594291.2594315 Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. Jeevana Priya Inala, Rohit Singh, and Armando Solar-Lezama. 2016. Synthesis of Domain Specific CNF Encoders for Bit-Vector Solvers. In SAT (Lecture Notes in Computer Science, Vol. 9710 ). Springer, 302-320.Google ScholarGoogle Scholar
  55. SMT LIB Initiative. 2018. SMT-LIB The Satisfiability Modulo Theories Library. http://smtlib.cs.uiowa.edu/index.shtmlGoogle ScholarGoogle Scholar
  56. Markus Iser, Mana Taghdiri, and Carsten Sinz. 2012. Optimizing MiniSAT Variable Orderings for the Relational Model Finder Kodkod. In Theory and Applications of Satisfiability Testing-SAT 2012, Alessandro Cimatti and Roberto Sebastiani (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 483-484.Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. Daniel Jackson. 2002. Alloy: A lightweight object modelling notation. ACM Transactions on Software Engineering and Methodology 11, 2 ( 2002 ), 256-290.Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. Susmit Jha, Rhishikesh Limaye, and Sanjit A. Seshia. 2009. Beaver: Engineering an Eficient SMT Solver for Bit-Vector Artithmetic. In Proc. 21st International Conference on Computer-Aided verification (CAV) (Lecture Notes in Computer Science, Vol. 5643 ). 668-674.Google ScholarGoogle Scholar
  59. Christian Gram Kalhauge and Jens Palsberg. 2018. Sound Deadlock Prediction. Proc. ACM Program. Lang. 2, OOPSLA, Article 146 (Oct. 2018 ), 29 pages. https://doi.org/10.1145/3276516 Google ScholarGoogle ScholarDigital LibraryDigital Library
  60. Henry Kautz and Bart Selman. 2006. SATPLAN04: Planning as satisfiability. Working Notes on the Fifth International Planning Competition (IPC-2006) ( 2006 ), 45-46.Google ScholarGoogle Scholar
  61. Henry A. Kautz and Bart Selman. 2003. Ten Challenges Redux: Recent Progress in Propositional Reasoning and Search. In Principles and Practice of Constraint Programming-CP 2003, 9th International Conference, CP 2003, Kinsale, Ireland, September 29-October 3, 2003, Proceedings. 1-18.Google ScholarGoogle Scholar
  62. Will Klieber and Gihwon Kwon. 2007a. Eficient CNF Encoding for Selecting 1 from N Objects.Google ScholarGoogle Scholar
  63. Will Klieber and Gihwon Kwon. 2007b. Eficient CNF Encoding for Selecting 1 from N Objects. In Proceedings of the Fourth Workshop on Constraint in Formal Verification.Google ScholarGoogle Scholar
  64. Wolfgang Kuechlin and Carsten Sinz. 2000. Proving Consistency Assertions for Automotive Product Data Management. J. Autom. Reasoning 24 (02 2000 ), 145-163. https://doi.org/10.1023/A:1006370506164 Google ScholarGoogle ScholarDigital LibraryDigital Library
  65. Vitaly Kurin, Saad Godil, Shimon Whiteson, and Bryan Catanzaro. 2019. Improving SAT Solver Heuristics with Graph Networks and Reinforcement Learning. arXiv: 1909. 11830 [cs.LG]Google ScholarGoogle Scholar
  66. Daniel Le Berre and Anne Parrain. 2010. The Sat4j library, release 2.2. JSAT 7 ( 01 2010 ), 59-6.Google ScholarGoogle Scholar
  67. Jia Hui Liang, Vijay Ganesh, Pascal Poupart, and Krzysztof Czarnecki. 2016. Learning Rate Based Branching Heuristic for SAT Solvers. In SAT (Lecture Notes in Computer Science, Vol. 9710 ). Springer, 123-140.Google ScholarGoogle Scholar
  68. Jia Hui Liang, Chanseok Oh, Minu Mathew, Ciza Thomas, Chunxiao Li, and Vijay Ganesh. 2018. Machine Learning-Based Restart Policy for CDCL SAT Solvers. In International Conference on Theory and Applications of Satisfiability Testing. Springer, 94-110.Google ScholarGoogle Scholar
  69. InÃłs Lynce and JoÃńl Ouaknine. 2006. Sudoku as a SAT problem.Google ScholarGoogle Scholar
  70. Panagiotis Manolios and Daron Vroon. 2007. Eficient Circuit to CNF Conversion. In Proceedings of the 10th International Conference on Theory and Applications of Satisfiability Testing (SAT).Google ScholarGoogle ScholarDigital LibraryDigital Library
  71. Norbert Manthey, Marijn JH Heule, and Armin Biere. 2012. Automated reencoding of boolean formulas. In Haifa Verification Conference. Springer, 102-117.Google ScholarGoogle Scholar
  72. R. Martins, V. Manquinho, and I. Lynce. 2011. Exploiting Cardinality Encodings in Parallel Maximum Satisfiability. In 2011 IEEE 23rd International Conference on Tools with Artificial Intelligence. 313-320.Google ScholarGoogle Scholar
  73. Y. Matsunaga. 2015. Accelerating SAT-based Boolean matching for heterogeneous FPGAs using one-hot encoding and CEGAR technique. In The 20th Asia and South Pacific Design Automation Conference. 255-260.Google ScholarGoogle ScholarCross RefCross Ref
  74. Amit Metodi and Michael Codish. 2012. Compiling finite domain constraints to SAT with BEE. Theory and Practice of Logic Programming 12, 4-5 ( 2012 ), 465-483.Google ScholarGoogle ScholarDigital LibraryDigital Library
  75. Cuong Nguyen, Hiroaki Yoshida, Mukul Prasad, Indradeep Ghosh, and Koushik Sen. 2015. Generating Succinct Test Cases Using Don't Care Analysis. In 2015 IEEE 8th International Conference on Software Testing, Verification and Validation (ICST). IEEE, 1-10.Google ScholarGoogle ScholarCross RefCross Ref
  76. Eoin O'Mahony, Emmanuel Hebrard, Alan Holland, Conor Nugent, and Barry O'Sullivan. 2008. Using case-based reasoning in an algorithm portfolio for constraint solving. In Irish conference on artificial intelligence and cognitive science. 210-216.Google ScholarGoogle Scholar
  77. Uwe Pfeifer, Tomas Karnagel, and Guido Schefler. 2013. A Sudoku-Solver for Large Puzzles using SAT. In LPAR-17-short. short papers for 17th International Conference on Logic for Programming, Artificial intelligence, and Reasoning. (EPiC Series in Computing, Vol. 13 ), Andrei Voronkov, Geof Sutclife, Matthias Baaz, and Christian Ferm\ "uller (Eds.). EasyChair, 52-57. https://doi.org/10.29007/79mc Google ScholarGoogle ScholarCross RefCross Ref
  78. Jussi Rintanen. 2014. Madagascar: Scalable planning with SAT. Proceedings of the 8th International Planning Competition (IPC-2014 ) 21 ( 2014 ).Google ScholarGoogle Scholar
  79. Nathan Robinson, Charles Gretton, Duc Nghia Pham, and Abdul Sattar. 2008. A Compact and Eficient SAT Encoding for Planning.. In ICAPS. 296-303.Google ScholarGoogle Scholar
  80. Marko Samer and Helmut Veith. 2009. Encoding treewidth into SAT. In International Conference on Theory and Applications of Satisfiability Testing. Springer, 45-50.Google ScholarGoogle ScholarDigital LibraryDigital Library
  81. Koushik Sen, Swaroop Kalasapur, Tasneem Brutch, and Simon Gibbs. 2013. Jalangi: a selective record-replay and dynamic analysis framework for JavaScript. In Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering. 488-498.Google ScholarGoogle ScholarDigital LibraryDigital Library
  82. Koushik Sen, Darko Marinov, and Gul Agha. 2005. CUTE: A Concolic Unit Testing Engine for C. In Proceedings of the 10th European Software Engineering Conference Held Jointly with 13th ACM SIGSOFT International Symposium on Foundations of Software Engineering. 263-272.Google ScholarGoogle ScholarCross RefCross Ref
  83. Qingkai Shi, Xiao Xiao, Rongxin Wu, Jinguo Zhou, Gang Fan, and Charles Zhang. 2018. Pinpoint: Fast and Precise Sparse Value Flow Analysis for Million Lines of Code. In Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation (Philadelphia, PA, USA). 693-706.Google ScholarGoogle ScholarDigital LibraryDigital Library
  84. Helgi Sigurbjarnarson, James Bornholt, Emina Torlak, and Xi Wang. 2016. Push-Button Verification of File Systems via Crash Refinement. In 12th USENIX Symposium on Operating Systems Design and Implementation. 1-16.Google ScholarGoogle Scholar
  85. Rishabh Singh, Joseph P. Near, Vijar Ganesh, and Martin Rinard. 2009. AvatarSAT: An Auto-Tuning Boolean SAT Solver. Technical Report MIT-CSAIL-TR-2009-039. Massachusetts Institute of Technology.Google ScholarGoogle Scholar
  86. Rohit Singh and Armando Solar-Lezama. 2016. SWAPPER: A framework for automatic generation of formula simplifiers based on conditional rewrite rules. In FMCAD. IEEE, 185-192.Google ScholarGoogle Scholar
  87. Carsten Sinz. 2005. Towards an Optimal CNF Encoding of Boolean Cardinality Constraints. In Principles and Practice of Constraint Programming-CP 2005, Peter van Beek (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg, 827-831.Google ScholarGoogle ScholarDigital LibraryDigital Library
  88. Naoyuki Tamura, Mutsunori Banbara, and Takehide Soh. 2013. Compiling pseudo-boolean constraints to SAT with order encoding. In 2013 IEEE 25th International Conference on Tools with Artificial Intelligence. IEEE, 1020-1027.Google ScholarGoogle ScholarDigital LibraryDigital Library
  89. Naoyuki Tamura, Akiko Taga, Satoshi Kitagawa, and Mutsunori Banbara. 2009. Compiling finite linear CSP into SAT. Constraints 14, 2 ( 2009 ), 254-272.Google ScholarGoogle Scholar
  90. Tomoya Tanjo, Naoyuki Tamura, and Mutsunori Banbara. 2011. A compact and eficient SAT-encoding of finite domain CSP. In International Conference on Theory and Applications of Satisfiability Testing. Springer, 375-376.Google ScholarGoogle Scholar
  91. Tomoya Tanjo, Naoyuki Tamura, and Mutsunori Banbara. 2012. Azucar: A SAT-Based CSP Solver Using Compact Order Encoding. In Theory and Applications of Satisfiability Testing-SAT 2012, Alessandro Cimatti and Roberto Sebastiani (Eds.). Springer Berlin Heidelberg, Berlin, Heidelberg, 456-462.Google ScholarGoogle Scholar
  92. Haruto Tanno, Xiaojing Zhang, Takashi Hoshino, and Koushik Sen. 2015. TesMa and CATG: automated test generation tools for models of enterprise applications. In 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering, Vol. 2. IEEE, 717-720.Google ScholarGoogle ScholarCross RefCross Ref
  93. Nils Timm, Stefan Gruner, and Prince Sibanda. 2017. Model Checking of Concurrent Software Systems via Heuristic-Guided SAT Solving. In International Conference on Fundamentals of Software Engineering. Springer, 244-259.Google ScholarGoogle ScholarCross RefCross Ref
  94. Emina Torlak and Daniel Jackson. 2007. Kodkod: A Relational Model Finder. In Tools and Algorithms for the Construction and Analysis of Systems, 13th International Conference, TACAS 2007, Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2007 Braga, Portugal, March 24-April 1, 2007, Proceedings. 632-647.Google ScholarGoogle Scholar
  95. Emina Torlak, Mandana Vaziri, and Julian Dolby. 2010. MemSAT: Checking Axiomatic Specifications of Memory Models. In Proceedings of the 2010 Conference on Programming Language Design and Implementation. 341-350. http://doi.acm.org/10. 1145/1809028.1806635 Google ScholarGoogle ScholarDigital LibraryDigital Library
  96. Fatih Turkmen, Jerry den Hartog, Silvio Ranise, and Nicola Zannone. 2015. Analysis of XACML policies with SMT. In International Conference on Principles of Security and Trust. Springer, 115-134.Google ScholarGoogle ScholarDigital LibraryDigital Library
  97. Peter JM Van Laarhoven and Emile HL Aarts. 1987. Simulated annealing. In Simulated annealing: Theory and applications. Springer, 7-15.Google ScholarGoogle Scholar
  98. Joost P. Warners. 1998. A linear-time transformation of linear inequalities into conjunctive normal form. Inform. Process. Lett. 68, 2 ( 1998 ), 63-69. https://doi.org/10.1016/S0020-0190 ( 98 ) 00144-6 Google ScholarGoogle ScholarDigital LibraryDigital Library
  99. Tjark Weber. 2005. A SAT-based Sudoku Solver. In LPAR-12, The 12th International Conference on Logic for Programming, Artificial Intelligence, and Reasoning, Short Paper Proceedings, Geof Sutclife and Andrei Voronkov (Eds.). 11-15.Google ScholarGoogle Scholar
  100. TED WINOGRAD and HAMID MAHMOODI. 2009. Programmable Gates Using Hybrid CMOS-STT Design to Prevent IC Reverse Engineering. ( 2009 ).Google ScholarGoogle Scholar
  101. Haoze Wu. 2017. Improving SAT-solving with Machine Learning. In Proceedings of the 2017 ACM SIGCSE Technical Symposium on Computer Science Education (SIGCSE '17). ACM, New York, NY, USA, 787-788. http://doi.acm.org/10.1145/3017680. 3022464 Google ScholarGoogle ScholarDigital LibraryDigital Library
  102. Yichen Xie and Alex Aiken. 2005. Saturn: A SAT-based tool for bug detection. In International Conference on Computer Aided Verification. Springer, 139-143.Google ScholarGoogle ScholarDigital LibraryDigital Library
  103. Lin Xu, Frank Hutter, Holger H Hoos, and Kevin Leyton-Brown. 2008. SATzilla: portfolio-based algorithm selection for SAT. Journal of artificial intelligence research 32 ( 2008 ), 565-606.Google ScholarGoogle Scholar
  104. Cunxi Yu, Xiangyu Zhang, Duo Liu, Maciej Ciesielski, and Daniel Holcomb. 2017. Incremental SAT-based reverse engineering of camouflaged logic circuits. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems 36, 10 ( 2017 ), 1647-1659.Google ScholarGoogle ScholarDigital LibraryDigital Library
  105. Hantao Zhang, Dapeng Li, and Haiou Shen. 2004. A SAT Based Scheduler for Tournament Schedules.. In SAT.Google ScholarGoogle Scholar
  106. Neng-Fa Zhou. 2020. Yet Another Comparison of SAT Encodings for the At-Most-K Constraint. arXiv: 2005. 06274 [cs.LO]Google ScholarGoogle Scholar
  107. Zhiqiang Zuo, John Thorpe, Yifei Wang, Qiuhong Pan, Shenming Lu, Kai Wang, Guoqing Harry Xu, Linzhang Wang, and Xuandong Li. 2019. Grapple: A Graph System for Static Finite-State Property Checking of Large-Scale System Code. In Proceedings of European Computer System Conference.Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Satune: synthesizing efficient SAT encoders

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Published in

        cover image Proceedings of the ACM on Programming Languages
        Proceedings of the ACM on Programming Languages  Volume 4, Issue OOPSLA
        November 2020
        3108 pages
        EISSN:2475-1421
        DOI:10.1145/3436718
        Issue’s Table of Contents

        Copyright © 2020 Owner/Author

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 13 November 2020
        Published in pacmpl Volume 4, Issue OOPSLA

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • research-article

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!