Elsevier

Science of Computer Programming

Volume 155, 1 April 2018, Pages 146-172
Science of Computer Programming

Exploration of language specifications by compilation to first-order logic

https://doi.org/10.1016/j.scico.2017.08.001Get rights and content
Under an Elsevier user license
open archive

Highlights

  • We propose to apply existing ATPs for exploring language specifications via compilation to first-order logic.

  • We present 36 compilation strategies along 3 dimensions for compiling language specifications to first-order logic.

  • We present specifications of 2 domain-specific languages with 50 exploration proof goals each as benchmark specifications.

  • We evaluate the performance of each compilation strategy on our benchmark specifications for 4 theorem provers.

Abstract

Exploration of language specifications helps to discover errors and inconsistencies early during the development of a programming language. We propose exploration of language specifications via application of existing automated first-order theorem provers (ATPs). To this end, we translate language specifications and exploration tasks to first-order logic, which many ATPs accept as input. However, there are several different strategies for compiling a language specification to first-order logic, and even small variations in the translation may have a large impact on the time it takes ATPs to find proofs.

In this paper, we first present a systematic empirical study on how to best compile language specifications to first-order logic such that existing ATPs can solve typical exploration tasks efficiently. We have developed a compiler product line that implements 36 different compilation strategies and used it to feed language specifications to 4 existing first-order theorem provers. As benchmarks, we developed language specifications for typed SQL and for a Questionnaire Language (QL), with 50 exploration goals each. Our study empirically confirms that the choice of a compilation strategy greatly influences prover performance in general and shows which strategies are advantageous for prover performance. Second, we extend our empirical study with 4 domain-specific strategies for axiom selection and find that axiom selection does not influence prover performance in our benchmark specifications.

Keywords

Type systems
Formal specification
Declarative languages
First-order theorem proving
Domain-specific languages

Cited by (0)