2014 · 122 citations · 40 references
ComputingComputer ScienceFormal MethodsOptimizationTheory Of ComputationDeductive VerificationFunctional ProgrammingSatisfiability Modulo TheoriesType SystemsAutomated Program SynthesisBoolean Satisfiability Modulo TheoriesProgram SynthesisRefinementRefinement TypesSatisfiability Modulo Theories For Program VerificationSoftware VerificationSubtyping
The rise in efficiency of Satisfiability Modulo Theories (SMT) solvers has created numerous uses for them in software verification, program synthesis, functional programming, refinement types, etc. In all of these applications, SMT solvers are used for generating satisfying assignments (e.g., a witness for a bug) or proving unsatisfiability/validity(e.g., proving that a subtyping relation holds). We are often interested in finding not just an arbitrary satisfying assignment, but one that optimizes (minimizes/maximizes) certain criteria. For example, we might be interested in detecting program executions that maximize energy usage (performance bugs), or synthesizing short programs that do not make expensive API calls. Unfortunately, none of the available SMT solvers offer such optimization capabilities.
40
Patrick Cousot, Radhia Cousot · 1977 · 6.2K citations
Patrice Godefroid, Nils Klarlund, Koushik Sen · ACM SIGPLAN Notices · 2005 · 2.1K citations
Patrice Godefroid, Nils Klarlund, Koushik Sen · 2005 · 1.5K citations