Statements like
The earlier of the dates.....
use an ObjectGroup to hold the dates, and require decisionmaking machinery to be set up for evaluation, either immediately or at a later time. The ObjectGroup may also have a fluctuating set of members, so the example should embody these difficulties.
He will buy the cheapest house available on the date of his twenty-first birthday
The houses available are a shifting set, and then we need to find the cheapest. Lets assume we are delivered the ObjectGroup containing the available houses, and now must find the cheapest in it.
NOTE: We are assuming the ObjectGroup contains a small number of objects, say zero to twenty (it may turn out there are no houses available on that date). If it contains thousands of objects, it wouldnt generate an ObjectGroup in a document, but be handled in some other way (a reference to a database, say).
We are given a map (the same sort of map as is used for preposition-building) for getting from the object to its price, and a test (in this case, a MIN operator). We cycle through the objects, using the map to find the price (the numeric variable, modified by any conversion of units), actualising objects where necessary. We connect the price (we don't know it is the price, it is what the map gave us) of each object (whether known to a singular value or not) to the MIN operator. Some objects in the ObjectGroup may not exist (having been turned off by the action of other parts of the structure) these are ignored.
We obtain an output from the MIN operator, and then check which objects are consistent with its output. Lets say we have the situation
- ObjectA
- Price 200,000
- ObjectB
- Price NYK we had to actualise it
- ObjectC
- Price 180,000<->240,000
- ObjectD
- Price 270,000
- ObjectE
- Withdrawn from market does not exist as member
The output of the MIN was 180,000<->200,000
We can rule out Objects D and E, but must still consider Objects A, B, C
In diagrammatic form, the objects arrive in the ObjectGroup. We connect these objects to the output object through a MEMBERGROUP operator, as
When the test is activated, we get
and the output object acquires the properties of the object(s) it is connected to (if no objects matched, then it does not exist, handled by its connection to OBJECTTEST). If the objects in the ObjectGroup change, we undo it all and start again.
See