public void updateRuleSuperiorityRelationCounter() throws TheoryException {
		if (superiors.size() == 0) return;
		switch (Conf.getReasonerVersion()) {
		case 2:
			for (Entry<String, Set<Superiority>> entry : superiors.entrySet()) {
				RuleExt superiorRule = (RuleExt) factsAndAllRules.get(entry.getKey());
				if (null == superiorRule)
					throw new RuleException(ErrorMessage.SUPERIORITY_SUPERIOR_RULE_NOT_DEFINED, new Object[] { entry.getKey() });
				superiorRule.resetRuleSuperiorityRelationCounter();
				for (Superiority sup : entry.getValue()) {
					RuleExt inferiorRule = (RuleExt) factsAndAllRules.get(sup.getInferior());
					if (null == inferiorRule)
						throw new RuleException(ErrorMessage.SUPERIORITY_INFERIOR_RULE_NOT_DEFINED, new Object[] { sup.getInferior() });
					inferiorRule.resetRuleSuperiorityRelationCounter();
				}
			}
			for (Entry<String, Set<Superiority>> superiorityEntry : superiors.entrySet()) {
				RuleExt superiorRule = (RuleExt) factsAndAllRules.get(superiorityEntry.getKey());
				superiorRule.setWeakerRulesCount(superiorityEntry.getValue().size());
				for (Superiority superiority : superiorityEntry.getValue()) {
					RuleExt inferiorRule = (RuleExt) factsAndAllRules.get(superiority.getInferior());
					inferiorRule.strongerRulesCountIncrement();
				}
			}
			break;
		default:
		}
	}