Hostname: page-component-89b8bd64d-5bvrz Total loading time: 0 Render date: 2026-05-08T17:10:13.071Z Has data issue: false hasContentIssue false

Adding partial functions to Constraint Logic Programming with sets

Published online by Cambridge University Press:  03 September 2015

MAXIMILIANO CRISTIÁ
Affiliation:
CIFASIS and UNR, Rosario, Argentina (e-mail: cristia@cifasis-conicet.gov.ar)
GIANFRANCO ROSSI
Affiliation:
Università degli Studi di Parma, Parma, Italy (e-mail: gianfranco.rossi@unipr.it)
CLAUDIA FRYDMAN
Affiliation:
Aix Marseille Univ., CNRS, ENSAM, Univ. de Toulon, LSIS UMR 7296, France (e-mail: claudia.frydman@lsis.org)

Abstract

Partial functions are common abstractions in formal specification notations such as Z, B and Alloy. Conversely, executable programming languages usually provide little or no support for them. In this paper we propose to add partial functions as a primitive feature to a Constraint Logic Programming (CLP) language, namely {log}. Although partial functions could be programmed on top of {log}, providing them as first-class citizens adds valuable flexibility and generality to the form of set-theoretic formulas that the language can safely deal with. In particular, the paper shows how the {log} constraint solver is naturally extended in order to accommodate for the new primitive constraints dealing with partial functions. Efficiency of the new version is empirically assessed by running a number of non-trivial set-theoretical goals involving partial functions, obtained from specifications written in Z.

Information

Type
Regular Papers
Copyright
Copyright © Cambridge University Press 2015 

Access options

Get access to the full version of this content by using one of the access options below. (Log in options will check for institutional or personal access. Content may require purchase if you do not have access.)

Article purchase

Temporarily unavailable

Supplementary material: PDF

Cristiá supplementary material

Online Appendix

Download Cristiá supplementary material(PDF)
PDF 177.1 KB