vn I. SAT AND SMT: THEIR CONCEPTS AND USAGESAT and SMT (SAT modulo theory) solvers aim to find a satisfiable instance of given constraints. SAT solver accepts a boolean constraints in a conjunctive normal form (CNF), such as , and if a CNF is satisfiable, returns an instance, such as . SMT solver accepts constraints described in background theory, such as arithmetic.Part 1 is devoted to explain the textbook concepts and usage of SAT and SMT solvers. For their usage, we investigate how to encode problems into CNF. Examples are taken from puzzles. Although puzzles are problems on bounded domains, there is certain hierarchy of difficulties, corresponding to the logical hierarchy of problems. Our examples are SUDOKU [2], Logic pictures [3], and Slitherlink [4] 1, 2 , which correspond to descriptions in CNF, general propositional logic, and higher order logic, respectively. As conversion techniques to efficient CNFs, a popular Tseitin conversion and two special techniques (for the latter two, respectively) are introduced.If time allows, we will overview on de-facto-standard algorithm designs for SAT solvers, i.e., non-chronological back tracking with implication graphs, conflict driven learning and reset, and two watched literals [1].
II. SMT WITH NON-LINEAR ARITHMETICPart 2 will be devoted to survey SMT with non-linear arithmetic, both on integers and real numbers. They appear as QF_NIA and QF_NRA categories in SMT-comp, respectively. Their applications include roundoff error analysis [16], [17], linear invariant generation [18] by Farkas's lemma, and polynomial/matrix interpretation in termination detection [19].Mizuhito Ogawa is a professor at the School of Information Science of Japan Advanced Institute of Science and Technology (JAIST). He received MS and Dr. of Science from University of Tokyo. For 15 years, he worked for Nippon Telegram and Telephone (NTT), and since 2003, he has worked for JAIST. His research interest is mainly on formal method from theory to tool implementations, including mathematical logic, computational models, formal languages, model checking, theorem proving with Isabelle/HOL, and SAT/SMT solvers.