Honeywell Aerospace Engineering

Universal Constraint Language and Engine (UNCLE)

Universal Constraint Language and Engine (UNCLE)

UNCLE is a general framework for constraint-based reasoning. Within the AADL (Architecture Analysis and Design Language), it is applied to the problem of reasoning about the compositionally of multiple, dynamic hardware and software components, providing a flexible and extendable framework for the system designer to quickly and easily specify many differing constraints that must hold between hardware and software components. Constraint-based reasoning is used at design time to both verify that the constraints are honored in all of the system modes and to guarantee that components are compatible and composable. The results of constraint-based reasoning can also be used to generate runtime sensors to monitor system status relative to its design constraints.

The UNCLE framework allows the system designer to easily define multiple constraint types and constraint solvers. UNCLE then employs the correct solvers for individual constraint types thus removing a number of difficult representational and reasoning problems.

Features include:

No need to convert the constraint problem and solution to and from one canonical form or another.
Provides incremental solution - working on only the small set of a whole problem affected by the constraint. No need to reevaluate unaffected subsystems with respect to the new constraint.
Implements with any number of reasoners/solvers (e.g., arc consistency (AC3), novel "one step", Cplex (commercial/industrial solver).
Supports all constraint types (enumerated, integer, and continuous).


The UNCLE architecture is composed of three components that interact with the constraint solvers provided by the user to perform constraint-based reasoning.

Problem Instance Model: Stores the constraint problem's specification, including the set of variables that are constrained, the ranges of the variables, the definitions of the constraints, and the solvers that are appropriate for each kind of constraint.
Problem State Bookkeeper: Stores the state of the constraint problem during solution, including reduction in variable ranges, flags marking those constraints that have already been enforced, and any variables bound to a value by the user.
Meta-Constraint Solver Engine: Controls the incremental invocation of each different kind of constraint solver to propagate the constraints. This component also updates the state stored in the Bookkeeper.


The Honeywell's DOME software tools is used as a front end to UNCLE, both to define problem domains and make use of the UNCLE framework. Using DOME, a system designer specifies a Domain Meta-Model and a Constraint Model for a specific domain to define the hardware and software components of interest for a particular design problem. The designer also defines the constraint types and associated solvers, as well the roles specific constraint types play within the domain. On the basis of these two models, DOME automatically generates a system design tool that allows users of the design tool to specify the specific instance of the design problem with which they are concerned (which hardware instances to connect to which) and then to use UNCLE to enforce the domain's constraints on the specific instance.