If we can turn specifications into semantic structure, it then becomes reasonable to ask can we use Constraint Reasoning directly on the structure?
Much of the reasoning will consist of exploring the existence of objects and relations working out which configurations are possible. To do this, we need the concept of an override level a level above the text which alters the structure of the text to simulate a particular configuration.
Lets say we can use either a Receive Only Antenna (ROA) or a Transmit/Receive Antenna (TRA). The specification allows for either, but only one is used with a particular system. Worse, the requirements are described in terms of the ROA, and we need to substitute the TRA into those requirements when it is used. That is, we need to change the reference in the requirement to the ROA so the relations in the structure now apply to the TRA. This implies quite a bit of cutting and reconnecting. We couldnt just do an identity link, as some of the requirements describe the one way nature of the ROA.
Here is a simple override statement.
Iff the ROA exists, then the TRA does not exist.
The "iff" is necessary to catch all logical possibilities, as we need to make the TRA exist when appropriate. We could also do this with what looks like a simpler form:
Either the ROA or the TRA exists.
An ObjectGroup is created to represent "either ROA or TRA". "Either Or" functions as an exclusive OR for existence (they are objects, not relations). If the ToExist relation asserts the ObjectGroup exists, then only one member of the group can exist. If the ROA exists, then the TRA cannot exist.
We actually need an active override statement - a statement that does not just transmit states, but does active manipulation on the structures.
If the ROA does not exist, it shall be replaced by the TRA.
We need to be able to control the existence of objects and statements, the values of logical and numeric states (singular values within ranges), and substitute one object for another, as well as the usual function of adding relations.
A form is provided controlling the Constraint Reasoning process. The form allows for setting up a specific scenario, using existence control and override statements, or automatically cycling through multiple scenarios, where some override statements only become active under specific scenarios.
The goal of directly using existing technical text in Constraint Reasoning seems possible.