  Architectural Design Rewriting (ADR, for short) is a rule-based formal
framework for modelling the evolution of architectures of distributed systems.
Rules allow ADR graphs to be refined. After equipping ADR with a simple logic,
we equip rules with pre- and post-conditions; the former constraints the
applicability of the rules while the later specifies properties of the
resulting graphs. We give an algorithm to compute the weakest pre-condition out
of a rule and its post-condition. On top of this algorithm, we design a simple
methodology that allows us to select which rules can be applied at the
architectural level to reconfigure a system so to regain its architectural
style when it becomes compromised by unexpected run-time reconfigurations.
