In complex systems, like robot plants, applications are built on top of a set of components, or devices. Each of them has
particular individual constraints, and there are also logical constraints on their interactions, related to e.g., mechanical
characteristics or access to shared resources. Managing these constraints may be separated from the application, and performed
by an intermediate layer.
We show how to build such property-enforcing layers, in a mixed imperative/declarative style: 1) the constraints intrinsic
to one component are modeled by an automaton; the product of these automata is a first approximation of the set of constraints
that should be respected; 2) the constraints that involve several components are expressed as temporal logic properties of
this product; 3) we use general controller synthesis techniques and tools in order to combine the set of communicating parallel
automata with the global constraint.