6533b861fe1ef96bd12c4434

RESEARCH PRODUCT

Adding Partial Functions to Constraint Logic Programming with Sets

Claudia FrydmanMaximiliano CristiáGianfranco Rossi

subject

FOS: Computer and information sciencesComputer Science - Programming LanguagesProgramming languageComputer scienceOrder (ring theory)computer.file_formatcomputer.software_genreNotationTheoretical Computer ScienceComputational Theory and MathematicsArtificial IntelligenceHardware and ArchitectureFormal specificationPartial functionConstraint logic programmingExecutableSet theorycomputerSoftwareConstraint satisfaction problemProgramming Languages (cs.PL)

description

AbstractPartial 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.

https://dx.doi.org/10.48550/arxiv.1507.06852