private void updateLiteralRuleAssociationList_addRule(final Rule newRule) throws TheoryException {
		// Set<Literal> literalList = newRule.getLiteralList();
		Map<String, Rule> ruleList = null;

		// theory type checking
		if (newRule.hasTemporalInfo()) theoryType = TheoryType.TDL;
		else if (newRule.hasModalInfo() && theoryType.compareTo(TheoryType.SDL) <= 0) theoryType = TheoryType.MDL;
		// else if (!"".equals(newRule.getMode().getName()) && theoryType == TheoryType.SDL) theoryType =
		// TheoryType.MDL;

		for (Literal literal : newRule.getLiteralList()) {
			// for (Literal l : newRule.getLiteralList()) {
			// Literal literal=l instanceof LiteralVariable ? DomUtilities.getLiteral(l):l;
			// for (Literal literal : literalList) {
			// if (literal.containsTemporalInfo()) theoryType = TheoryType.TDL;
			// else if (!"".equals(literal.getMode().getName()) && theoryType == TheoryType.SDL) theoryType =
			// TheoryType.MDL;

			ruleList = literalRuleAssoList.get(literal);
			if (null == ruleList) {
				ruleList = new TreeMap<String, Rule>();
				// if (literal instanceof LiteralVariable){
				// Literal l=DomUtilities.getLiteral(literal);
				// Map<String,Rule>ruleList2=literalRuleAssoList.get(l);
				// if (null!=ruleList2){
				// ruleList.putAll(ruleList2);
				// literalRuleAssoList.remove(l);
				// }
				// }
				literalRuleAssoList.put(literal, ruleList);
			}

			if (!ruleList.containsKey(newRule.getLabel())) ruleList.put(newRule.getLabel(), newRule);

			// literal variable and boolean operation handling
			if (literal instanceof LiteralVariable) {
				LiteralVariable lv = (LiteralVariable) literal;
				if (lv.isLiteralVariable()) literalVariablesInRules.add(lv);
				else if (lv.isLiteralBooleanFunction()) literalBooleanFunctionsInRules.add(lv);
			}
		}
	}