1a-  ACE:  Every legacy-component is a core-component.
1a-  SOUL: ?x isCoreComponent if ?x isLegacyComponent
1a-  PL:   is_core_component(X) :- is_legacy_component(X).
1b+  ACE:  Every security-component is a core-component.
1b+  SOUL: ?x isCoreComponent if ?x isSecurityComponent
1b+  PL:   is_core_component(X) :- is_security_component(X).
2a+  ACE:  Every component that is not a legacy-component is a core-component.
2a+  SOUL: ?x isCoreComponent if ?x isComponent, not( ?x isLegacyComponent )
2a+  PL:   is_core_component(X) :- is_component(X), \+ is_legacy_component(X).
2b-  ACE:  Every component that is not a legacy-component is a security-component.
2b-  SOUL: ?x isSecurityComponent if ?x isComponent, not( ?x isLegacyComponent )
2b-  PL:   is_security_component(X) :- is_component(X), \+ is_legacy_component(X).
3a+  ACE:  Every component that uses a legacy-component is a core-component.
3a+  SOUL: ?x isCoreComponent if ?x isComponent, ?y isLegacyComponent, ?x uses: ?y
3a+  PL:   is_core_component(X) :- is_component(X), is_legacy_component(Y), uses(X,Y).
3b-  ACE:  Every component that notifies a security-component is a core-component.
3b-  SOUL: ?x isCoreComponent if ?x isComponent, ?y isSecurityComponent, ?x notifies: ?y
3b-  PL:   is_core_component(X) :- is_component(X), is_security_component(Y), notifies(X,Y).
4a-  ACE:  Every component that is notified by a legacy-component is a security-component.
4a-  SOUL: ?x isSecurityComponent if ?x isComponent, ?y isLegacyComponent, ?y notifies: ?x
4a-  PL:   is_security_component(X) :- is_component(X), is_legacy_component(Y), notifies(Y,X).
4b+  ACE:  Every component that is monitored by a security-component is a legacy-component.
4b+  SOUL: ?x isLegacyComponent if ?x isComponent, ?y isSecurityComponent, ?y monitors: ?x
4b+  PL:   is_legacy_component(X) :- is_component(X), is_security_component(Y), monitors(Y,X).
5a-  ACE:  Every component that is notified by CompD is a legacy-component.
5a-  SOUL: ?x isLegacyComponent if ?x isComponent, CompD notifies: ?x
5a-  PL:   is_legacy_component(X) :- is_component(X), notifies(compD,X).
5b+  ACE:  Every component that is monitored by CompC is a core-component.
5b+  SOUL: ?x isCoreComponent if ?x isComponent, CompC monitors: ?x
5b+  PL:   is_core_component(X) :- is_component(X), monitors(compC,X).
6a+  ACE:  Every security-component that is used by a component notifies the component.
6a+  SOUL: ?x notifies: ?y if ?x isSecurityComponent, ?y isComponent, ?y uses: ?x
6a+  PL:   notifies(X,Y) :- is_security_component(X), is_component(Y), uses(Y,X).
6b-  ACE:  Every security-component that is monitored by a component notifies the component.
6b-  SOUL: ?x notifies: ?y if ?x isSecurityComponent, ?y isComponent, ?y monitors: ?x
6b-  PL:   notifies(X,Y) :- is_security_component(X), is_component(Y), monitors(Y,X).
7a+  ACE:  Every legacy-component notifies CompC.
7a+  SOUL: ?x notifies: CompC if ?x isLegacyComponent
7a+  PL:   notifies(X,compC) :- is_legacy_component(X).
7b-  ACE:  Every security-component notifies CompE.
7b-  SOUL: ?x notifies: CompE if ?x isSecurityComponent
7b-  PL:   notifies(X,compE) :- is_security_component(X).
8a+  ACE:  Every security-component that does not notify CompE is monitored by CompA.
8a+  SOUL: CompA monitors: ?x if ?x isSecurityComponent, not( ?x notifies: CompE )
8a+  PL:   monitors(compA,X) :- is_security_component(X), \+ notifies(X,compE).
8b-  ACE:  Every security-component that does not monitor CompB is notified by CompE.
8b-  SOUL: CompE notifies: ?x if ?x isSecurityComponent, not( ?x monitors: CompB )
8b-  PL:   notifies(compE,X) :- is_security_component(X), \+ monitors(X,compB).
9a-  ACE:  Every component that is a legacy-component or that monitors CompC is a core-component.
9a-  SOUL: ?x isCoreComponent if ?x isComponent, or( ?x isLegacyComponent, ?x monitors: CompC )
9a-  PL:   is_core_component(X) :- is_component(X), ( is_legacy_component(X) ; monitors(X,compC) ).
9b+  ACE:  Every component that is a security-component or that uses CompE is a core-component.
9b+  SOUL: ?x isCoreComponent if ?x isComponent, or( ?x isSecurityComponent, ?x uses: CompE )
9b+  PL:   is_core_component(X) :- is_component(X), ( is_security_component(X) ; uses(X,compE) ).
10a+ ACE:  Every component that monitors CompB or that is used by CompA is notified by CompD.
10a+ SOUL: CompD notifies: ?x if ?x isComponent, or( ?x monitors: CompB, CompA uses: ?x )
10a+ PL:   notifies(compD,X) :- is_component(X), ( monitors(X,compB) ; uses(compA,X) ).
10b- ACE:  Every component that monitors CompC or that is used by CompA is notified by CompD.
10b- SOUL: CompD notifies: ?x if ?x isComponent, or( ?x monitors: CompC, CompA uses: ?x )
10b- PL:   notifies(compD,X) :- is_component(X), ( monitors(X,compC) ; uses(compA,X) ).
