JSetL is a Java library that has been developed at the University of Parma (Italy) since 2002. JSetL is released under the GPL 3.0 license.
JSetL allows the user to use a declarative style of programming inside the popular Java programming language. Using JSetL the user can create partially specified (or totally unbound) logical objects such as logical variables, logical lists and sets, logical binary relations and maps, restricted intensional sets, logical pairs, …
Moreover, JSetL can be used to declare and solve constraints on logical objects.
There is a great number of built-in constraints available for the built-in logical object types. Moreover, JSetL enables the user to create their own constraints and define rewrite rules for them. This means that the JSetL solver can be used as a non-deterministic engine for any user-defined constraint.
JSetL has been used as one of the first six implementations for the
standard Java Constraint Programming API defined in the Java Specification
Request JSR-331 (https://jsr331.org/); see for instance