  Requirement decomposition is a widely accepted Systems Engineering practice
for Requirements Engineering. Getting the requirements correct at the very
beginning of the lifecycle is crucial for the success of engineering a correct
system. This is especially the case for safety-critical complex systems, where
incorrect or clashing requirements can lead to accidents. While there is a
large volume of work on the formal verification for the bottom-up composition
of requirements, there are very few works on how these requirements are
rigorously decomposed top-down in the first place. This paper tackles this
problem. Inspired by Contract-Based Design, we develop a formalism for
requirement decomposition, which can mathematically guarantee a satisfactory
system implementation if certain conditions are respected. A systematic
methodology is then designed to semi-automatically search for the optimal
sub-requirements and guarantee their correctness upon definition. The proposed
approach is supported by existing formal methods (i.e., Reachability Analysis
and Constraint Programming) that have been applied to other areas. Finally, we
support our findings through a case study on a cruise control system to
illustrate the usability of the proposed approach.
