7 research outputs found
Declarative Programming with Intensional Sets in Java Using JSetL
Intensional sets are sets given by a property rather than by enumerating
their elements. In previous work, we have proposed a decision procedure for a
first-order logic language which provides Restricted Intensional Sets (RIS),
i.e., a sub-class of intensional sets that are guaranteed to denote
finite---though unbounded---sets. In this paper we show how RIS can be
exploited as a convenient programming tool also in a conventional setting,
namely, the imperative O-O language Java. We do this by considering a Java
library, called JSetL, that integrates the notions of logical variable, (set)
unification and constraints that are typical of constraint logic programming
languages into the Java language. We show how JSetL is naturally extended to
accommodate for RIS and RIS constraints, and how this extension can be
exploited, on the one hand, to support a more declarative style of programming
and, on the other hand, to effectively enhance the expressive power of the
constraint language provided by the library
An Automatically Verified Prototype of the Tokeneer ID Station Specification
The Tokeneer project was an initiative set forth by the National Security
Agency (NSA, USA) to be used as a demonstration that developing highly secure
systems can be made by applying rigorous methods in a cost effective manner.
Altran Praxis (UK) was selected by NSA to carry out the development of the
Tokeneer ID Station. The company wrote a Z specification later implemented in
the SPARK Ada programming language, which was verified using the SPARK Examiner
toolset. In this paper, we show that the Z specification can be easily and
naturally encoded in the {log} set constraint language, thus generating a
functional prototype. Furthermore, we show that {log}'s automated proving
capabilities can discharge all the proof obligations concerning state
invariants as well as important security properties. As a consequence, the
prototype can be regarded as correct with respect to the verified properties.
This provides empirical evidence that Z users can use {log} to generate correct
prototypes from their Z specifications. In turn, these prototypes enable or
simplify some verificatio activities discussed in the paper
Nondeterministic Programming in Java with JSetL
JSetL is a Java library that endows Java with a number of facilities that are intended to support declarative and constraint (logic) programming. In this paper we show how JSetL can be used to support general forms of nondeterministic programming in an object-oriented framework. This is obtained by combining different but related facilities such as logical variables, set data structures, unification, along with a constraint solver that allows the user to solve nondeterministic constraints, as well as to define new constraints using the nondeterminism handling facilities provided by the solver itself. Thus, the user can define her/his own general nondeterministic procedures as new constraints, letting the constraint solver handle them. The proposed solutions are illustrated by showing a number of concrete Java implementations using JSetL, including the implementation of simple Definite Clause Grammars
Nondeterministic Programming in Java with JSetL
JSetL is a Java library that endows Java with a number of facilities that are intended to support declarative and constraint (logic) programming. In this paper we show how JSetL can be used to support general forms of nondeterministic programming in an object-oriented framework. This is obtained by combining different but related facilities, such as logical variables, set data structures, unification, along with a constraint solver that allows the user to solve nondeterministic constraints as well as to define new constraints using the nondeterminism handling facilities provided by the solver itself. Thus, the user can define her/his own general nondeterministic procedures as new constraints, letting the constraint solver handle them. The proposed solutions are illustrated through a number of concrete Java programs using JSetL, including the implementation of simple Definite Clause Grammars