Hostname: page-component-89b8bd64d-r6c6k Total loading time: 0 Render date: 2026-05-08T15:38:11.282Z Has data issue: false hasContentIssue false

Combining Type Checking and Set Constraint Solving to Improve Automated Software Verification

Published online by Cambridge University Press:  31 October 2024

MAXIMILIANO CRISTIÁ
Affiliation:
Universidad Nacional de Rosario and CIFASIS (CONICET-UNR), Rosario, Argentina (e-mail: cristia@cifasis-conicet.gov.ar)
GIANFRANCO ROSSI
Affiliation:
Università di Parma, Parma, Italy (e-mail: gianfranco.rossi@unipr.it)
Rights & Permissions [Opens in a new window]

Abstract

This technical note shows how we have combined prescriptive type checking and constraint solving to increase automation during software verification. We do so by defining a type system and implementing a typechecker for $\{log\}$ (read ‘setlog’), a Constraint Logic Programming language and satisfiability solver based on set theory. The constraint solver is proved to be safe w.r.t. the type system. Two industrial-strength case studies are presented where this combination is used with very good results.

Information

Type
Original Article
Creative Commons
Creative Common License - CCCreative Common License - BY
This is an Open Access article, distributed under the terms of the Creative Commons Attribution licence (http://creativecommons.org/licenses/by/4.0/), which permits unrestricted re-use, distribution and reproduction, provided the original article is properly cited.
Copyright
© The Author(s), 2024. Published by Cambridge University Press
Figure 0

Fig. 1. Type rules for function symbols.

Figure 1

Fig. 2. Type rules for predicate symbols in $\Pi _C$.

Figure 2

Fig. 3. Some rewrite rules implemented by $\mathit{SAT}_{\{\cdot \}}$.

Figure 3

Fig. 4. Graphical depiction of the four phases implemented by the typechecker.