An input–output relational domain for algebraic data types and functional arrays - Archive ouverte HAL Accéder directement au contenu
Article Dans Une Revue Formal Methods in System Design Année : 2024

An input–output relational domain for algebraic data types and functional arrays

Résumé

We define an abstract interpreter for programs manipulating scalars, immutable non-recursive algebraic data types (ADTs), functional arrays and non-recursive functions. We define a first domain that expresses relations between values of ADTs. Our domain extends numeric domains in a generic way, by a disjunctive completion over a reduced product of domains for numeric relations, equalities, and variant constructors. We further extend the segmentation approach for array analysis, in order to allow for values of ADTs inside arrays, and also to capture relations between the content of arrays and the other variables in the program. Our analysis is inter-procedural and modular: it proceeds by computing summaries of the input–output relations of functions, which are then instantiated at call sites. The analysis of ADTs has been implemented in OCaml and tested on a sample of small-to-medium examples, some of which are simplified versions of functions from the formal specification of the seL4 microkernel.
Fichier non déposé

Dates et versions

hal-04612474 , version 1 (14-06-2024)

Licence

Identifiants

Citer

Santiago Bautista, Thomas Jensen, Benoît Montagu. An input–output relational domain for algebraic data types and functional arrays. Formal Methods in System Design, 2024, ⟨10.1007/s10703-024-00456-z⟩. ⟨hal-04612474⟩
5 Consultations
0 Téléchargements

Altmetric

Partager

Gmail Mastodon Facebook X LinkedIn More