La méthode GetConsistentUpperSubsets de la classe InstructionSetDisjunction renvoie les plus grands sous-jeux consistants dans un ensemble de jeux alternatifs, en appliquant des "règles de supériorité" (voir Ontologie §5.5.2.2 et .3).
Règle 1 "SetSize first" : le jeu S1 est supérieur à S2 s'il contient plus d'activités que S2. S2 est alors éliminé.
Règle 2 "MaxSpecAllocSize first" : le jeu S1 est supérieur à S2 si les deux contiennent la même activité avec une spécification de ressources de type MAX, et si S1 est allouée avec un ensemble plus grand de cette ressource que S2. S2 est alors éliminé.
L'utilisateur du simulateur peut choisir l'ordre dans lequel les règles seront appliquées, en donnant à la variable gUpperSubsetOption une des valeurs suivantes :
C_SET_SIZE_FIRST : Règle 1 avant Règle 2
C_SET_MAX_SPEC_ALLOC_SIZE_FIRST : : Règle 2 avant Règle 1
C_NONE : Aucune règle n'est appliquée, aucun jeu n'est éliminé par l'application d'une de ces deux règles.
L'affectation se fait de la façon suivante :
gUpperSubsetOption = C_SET_SIZE_FIRST; ou
gUpperSubsetOption = C_MAX_SPEC_ALLOC_SIZE_FIRST;Par défaut, le moteur fixe la valeur à C_NONE. Elle peut être explicitement modifiée dans le code de l'application (comme ci-dessus), mais la manière la plus fréquente de le faire est d'utiliser l'option -USO dans la ligne de commande de la simulation :
./main ... -USO setSize ...
ou
./main ... -USO maxSpecAllocSize ...