Open jjhugues opened 4 years ago
Proposed resolutions
- [ ] Add the following legality rule for subprogram groups
a subprogram group implementation must have at least one subprogram or subprogram group as subcomponent
a thread group implementation must have at least one thread or thread group as subcomponent
Subprogram groups already had
(L3) A subprogram group type or implementation may contain zero or more subcomponent declarations. If it contains zero elements, then the subprogram group type or implementation is considered to be incompletely specified.
There is no such legality rule for processes, There's only a note in the process section and a consistency rule for system instances 13.1 (C1).
The legality rule (L3) for subprogram groups doesn't make sense as written. It mentions types even though we talk about subcomponents, "zero or more" doesn't add anything that isn't known, already, "zero elements" is unclear. Also, an implementation could inherit a subprogram subcomponent.
I suggest to remove the legality rule for subprogram groups and add consistency rules to the system instance section, instead.
I agree with Lutz that (L3) doesn't make sense and should be removed. I don't see need for (a) consistency rule(s) instead. In what way would empty subprogram groups be inconsistent?
The original rule, and the one I proposed are part of many rules that we should consider removing. They discuss some notion of model completeness. Yet, this notion is analysis specific. When we discussed separately with Lutz, we agreed it makes more sense to remove those
Rules (L3) have been clarified to remove component type and keep only implementation, as only those can have subcomponents. No further action at this stage
Thread groups have the following legality rule
(L2) A thread group component implementation can contain abstract, data, subprogram, subprogram group, thread, and thread group subcomponent declarations.
Subprogram groups have the following legality rule
(L2) A subprogram group implementation can contain abstract, data, subprogram group, and subprogram subcomponents as well as data and subprogram access connections.
=> There is no legality rule that states that a subprogram group implementation must have at least one subprogram or subprogram group as subcomponent
a thread group implementation must have at least one thread or thread group as subcomponent
This legality rule is similar to the rule that states that a process must have at least one thread, that is a check done at instantiation