Table of Contents
Fetching ...

From a Constraint Logic Programming Language to a Formal Verification Tool

Maximiliano Cristiá, Alfredo Capozucca, Gianfranco Rossi

TL;DR

The paper presents {log} as a CLP-based platform that unifies programming, specification, and proof by embedding a state-machine language within a set-theoretic constraint solver. It introduces a Next execution environment, a verification condition generator, symbolic execution, and a model-based testing framework, all driven by the same language and solver. Key contributions include a declarative state-machine language, automated verification via VC discharge, and an integrated MBT workflow that generates test cases directly from state-machine specifications. This integrated approach enables working prototypes, proofs of correctness, and test generation within a single, cohesive framework, reducing reliance on multiple external tools.

Abstract

{log} (read 'setlog') was born as a Constraint Logic Programming (CLP) language where sets and binary relations are first-class citizens, thus fostering set programming. Internally, {log} is a constraint satisfiability solver implementing decision procedures for several fragments of set theory. Hence, {log} can be used as a declarative, set, logic programming language and as an automated theorem prover for set theory. Over time {log} has been extended with some components integrated to the satisfiability solver thus providing a formal verification environment. In this paper we make a comprehensive presentation of this environment which includes a language for the description of state machines based on set theory, an interactive environment for the execution of functional scenarios over state machines, a generator of verification conditions for state machines, automated verification of state machines, and test case generation. State machines are both, programs and specifications; exactly the same code works as a program and as its specification. In this way, with a few additions, a CLP language turned into a seamlessly integrated programming and automated proof system.

From a Constraint Logic Programming Language to a Formal Verification Tool

TL;DR

The paper presents {log} as a CLP-based platform that unifies programming, specification, and proof by embedding a state-machine language within a set-theoretic constraint solver. It introduces a Next execution environment, a verification condition generator, symbolic execution, and a model-based testing framework, all driven by the same language and solver. Key contributions include a declarative state-machine language, automated verification via VC discharge, and an integrated MBT workflow that generates test cases directly from state-machine specifications. This integrated approach enables working prototypes, proofs of correctness, and test generation within a single, cohesive framework, reducing reliance on multiple external tools.

Abstract

{log} (read 'setlog') was born as a Constraint Logic Programming (CLP) language where sets and binary relations are first-class citizens, thus fostering set programming. Internally, {log} is a constraint satisfiability solver implementing decision procedures for several fragments of set theory. Hence, {log} can be used as a declarative, set, logic programming language and as an automated theorem prover for set theory. Over time {log} has been extended with some components integrated to the satisfiability solver thus providing a formal verification environment. In this paper we make a comprehensive presentation of this environment which includes a language for the description of state machines based on set theory, an interactive environment for the execution of functional scenarios over state machines, a generator of verification conditions for state machines, automated verification of state machines, and test case generation. State machines are both, programs and specifications; exactly the same code works as a program and as its specification. In this way, with a few additions, a CLP language turned into a seamlessly integrated programming and automated proof system.

Paper Structure

This paper contains 23 sections, 10 equations, 2 figures.

Figures (2)

  • Figure 1: The stack of theories dealt with by $\{log\}$
  • Figure 2: Standard partition for $S \cup T$, $S \cap T$ and $S \setminus T$

Theorems & Definitions (1)

  • Remark 1: Scope of presentation