Producing and checking proofs from SMT solvers is currently the most feasible method for achievin... more Producing and checking proofs from SMT solvers is currently the most feasible method for achieving high confidence in the correctness of solver results. The diversity of solvers and relative complexity of SMT over, say, SAT means that flexibility, as well as performance, is a critical characteristic of a proof-checking solution for SMT. This paper describes such a solution, based on a Logical Framework with Side Conditions (LFSC). We describe the framework and show how it can be applied for flexible proof production and checking for two different SMT solvers, CLSAT and CVC3. We also report empirical results showing good performance relative to solver execution time.
Abstract. Fast and flexible proof checking can be implemented for SMT using the Edinburgh Logical... more Abstract. Fast and flexible proof checking can be implemented for SMT using the Edinburgh Logical Framework with Side Conditions (LFSC). LFSC provides a declarative format for describing proof systems as sig-natures. We describe several optimizations for LFSC proof checking, and report experiments on QF IDL benchmarks showing proof-checking over-head of 30 % of the solving time required by our clsat solver. 1
The Edinburgh Logical Framework (LF) extended to support side condition code (LFSC) is advocated ... more The Edinburgh Logical Framework (LF) extended to support side condition code (LFSC) is advocated as a foundation for a proof format for SMT. The flexibility of the framework is demonstrated by example encoded inference rules, notably propositional resolution. Preliminary empirical results obtained with a SAT solver producing proofs in LFSC format are presented. 1
This paper seeks to explore the predictability of SAT and SMT solvers in response to different ki... more This paper seeks to explore the predictability of SAT and SMT solvers in response to different kinds of changes to benchmarks. We consider both semantics-preserving and possibly semanticsmodifying transformations, and provide preliminary data about solver predictability. We also propose carrying learned theory lemmas over from an original run to runs on similar benchmarks, and show the benefits of this idea as a heuristic for improving predictability of SMT solvers. 1
Abstract. This paper presents versat, a formally verified SAT solver incor-porating the essential... more Abstract. This paper presents versat, a formally verified SAT solver incor-porating the essential features of modern SAT solvers, including clause learn-ing, watched literals, optimized conflict analysis, non-chronological backtrack-ing, and decision heuristics. Unlike previous related work on SAT-solver verifi-cation, our implementation uses efficient low-level data structures like mutable C arrays for clauses and other solver state, and machine integers for literals. The im-plementation and proofs are written in GURU, a verified-programming language. We compare versat to a state-of-the-art SAT solver that produces certified “un-sat ” answers. We also show through an empirical evaluation that versat can solve SAT problems on the modern scale. 1
We describe work in progress on a new approach, and associated tools, for checking proofs produce... more We describe work in progress on a new approach, and associated tools, for checking proofs produced by SMT solvers. The approach extends our previous work on LFSC (“Logical Framework with Side Conditions”), a meta-language in which different proof systems for different SMT solvers can be declaratively specified. In this paper, we show how the LFSC proof checker can delegate the checking of propositional inferences (within a proof of an SMT formula) to a propositional proof checker clcheck based on Reverse Unit Propagation (RUP). This approach shows promising improvements in proof size and proof checking time for benchmark proofs produced by the clsat QF IDL solver. We also discuss work in progress to replace clcheck with a different RUP checker we are developing called vercheck, whose soundness we are in the process of statically verifying.
To ensure the correctness of high performance satisfiability (SAT) solvers, several proof formats... more To ensure the correctness of high performance satisfiability (SAT) solvers, several proof formats have been proposed. SAT solvers can report a formula being unsatisfiable with a proof, which can be independently verified by a trusted proof checker. Among the proof formats accepted at the SAT competition, the Reverse Unit Propagation (RUP) format is considered the most popular. However, the official proof checker was not efficient and failed to check many of the proofs at the competition. This inefficiency is one of the drawbacks of SAT proof checking. In this paper, I introduce a work-in-progress project, vercheck to implement an efficient RUP checker using modern SAT solving techniques. Even though my implementation is larger and more complex, the level of trust is preserved by statically verifying the correctness of the code. The vercheck program is written in GURU, a dependently typed functional programming language with a low-level resource management feature.
We describe work in progress on a new approach, and associated tools, for checking proofs produce... more We describe work in progress on a new approach, and associated tools, for checking proofs produced by SMT solvers. The approach extends our previous work on LFSC ("Logical Framework with Side Conditions"), a meta-language in which different proof systems for different SMT solvers can be declaratively speci- fied. In this paper, we show how the LFSC proof checker can delegate the checking of propositional inferences (within a proof of an SMT formula) to a propositional proof checkerclcheck based on Reverse Unit Propagation (RUP). This approach shows promising improvements in proof size and proof checking time for bench- mark proofs produced by the clsat QF IDL solver. We also discuss work in progress to replace clcheck with a different RUP checker we are developing called vercheck, whose soundness we are in the process of statically verifying.
Producing and checking proofs from SMT solvers is currently the most feasible method for achievin... more Producing and checking proofs from SMT solvers is currently the most feasible method for achieving high confidence in the correctness of solver results. The diversity of solvers and relative complexity of SMT over, say, SAT means that flexibility, as well as performance, is a critical characteristic of a proof-checking solution for SMT. This paper describes such a solution, based on a Logical Framework with Side Conditions (LFSC). We describe the framework and show how it can be applied for flexible proof production and checking for two different SMT solvers, CLSAT and CVC3. We also report empirical results showing good performance relative to solver execution time.
Abstract. Fast and flexible proof checking can be implemented for SMT using the Edinburgh Logical... more Abstract. Fast and flexible proof checking can be implemented for SMT using the Edinburgh Logical Framework with Side Conditions (LFSC). LFSC provides a declarative format for describing proof systems as sig-natures. We describe several optimizations for LFSC proof checking, and report experiments on QF IDL benchmarks showing proof-checking over-head of 30 % of the solving time required by our clsat solver. 1
The Edinburgh Logical Framework (LF) extended to support side condition code (LFSC) is advocated ... more The Edinburgh Logical Framework (LF) extended to support side condition code (LFSC) is advocated as a foundation for a proof format for SMT. The flexibility of the framework is demonstrated by example encoded inference rules, notably propositional resolution. Preliminary empirical results obtained with a SAT solver producing proofs in LFSC format are presented. 1
This paper seeks to explore the predictability of SAT and SMT solvers in response to different ki... more This paper seeks to explore the predictability of SAT and SMT solvers in response to different kinds of changes to benchmarks. We consider both semantics-preserving and possibly semanticsmodifying transformations, and provide preliminary data about solver predictability. We also propose carrying learned theory lemmas over from an original run to runs on similar benchmarks, and show the benefits of this idea as a heuristic for improving predictability of SMT solvers. 1
Abstract. This paper presents versat, a formally verified SAT solver incor-porating the essential... more Abstract. This paper presents versat, a formally verified SAT solver incor-porating the essential features of modern SAT solvers, including clause learn-ing, watched literals, optimized conflict analysis, non-chronological backtrack-ing, and decision heuristics. Unlike previous related work on SAT-solver verifi-cation, our implementation uses efficient low-level data structures like mutable C arrays for clauses and other solver state, and machine integers for literals. The im-plementation and proofs are written in GURU, a verified-programming language. We compare versat to a state-of-the-art SAT solver that produces certified “un-sat ” answers. We also show through an empirical evaluation that versat can solve SAT problems on the modern scale. 1
We describe work in progress on a new approach, and associated tools, for checking proofs produce... more We describe work in progress on a new approach, and associated tools, for checking proofs produced by SMT solvers. The approach extends our previous work on LFSC (“Logical Framework with Side Conditions”), a meta-language in which different proof systems for different SMT solvers can be declaratively specified. In this paper, we show how the LFSC proof checker can delegate the checking of propositional inferences (within a proof of an SMT formula) to a propositional proof checker clcheck based on Reverse Unit Propagation (RUP). This approach shows promising improvements in proof size and proof checking time for benchmark proofs produced by the clsat QF IDL solver. We also discuss work in progress to replace clcheck with a different RUP checker we are developing called vercheck, whose soundness we are in the process of statically verifying.
To ensure the correctness of high performance satisfiability (SAT) solvers, several proof formats... more To ensure the correctness of high performance satisfiability (SAT) solvers, several proof formats have been proposed. SAT solvers can report a formula being unsatisfiable with a proof, which can be independently verified by a trusted proof checker. Among the proof formats accepted at the SAT competition, the Reverse Unit Propagation (RUP) format is considered the most popular. However, the official proof checker was not efficient and failed to check many of the proofs at the competition. This inefficiency is one of the drawbacks of SAT proof checking. In this paper, I introduce a work-in-progress project, vercheck to implement an efficient RUP checker using modern SAT solving techniques. Even though my implementation is larger and more complex, the level of trust is preserved by statically verifying the correctness of the code. The vercheck program is written in GURU, a dependently typed functional programming language with a low-level resource management feature.
We describe work in progress on a new approach, and associated tools, for checking proofs produce... more We describe work in progress on a new approach, and associated tools, for checking proofs produced by SMT solvers. The approach extends our previous work on LFSC ("Logical Framework with Side Conditions"), a meta-language in which different proof systems for different SMT solvers can be declaratively speci- fied. In this paper, we show how the LFSC proof checker can delegate the checking of propositional inferences (within a proof of an SMT formula) to a propositional proof checkerclcheck based on Reverse Unit Propagation (RUP). This approach shows promising improvements in proof size and proof checking time for bench- mark proofs produced by the clsat QF IDL solver. We also discuss work in progress to replace clcheck with a different RUP checker we are developing called vercheck, whose soundness we are in the process of statically verifying.
Uploads