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