public void updateTheory(final List<Rule> rulesToAdd, //
			final Set<String> rulesToDelete, //
			Map<String, List<Rule>> oldNewRuleMapping) throws TheoryException {
		if (null != rulesToDelete) {
			for (String ruleLabel : rulesToDelete) {
				removeRule(ruleLabel);
			}
		}
		if (null != rulesToAdd) {
			for (Rule rule : rulesToAdd) {
				addRule(rule);
			}
		}
		if (null != oldNewRuleMapping && oldNewRuleMapping.size() > 0) {
		//	System.out.println(oldNewRuleMapping.toString());
			try {
				updateSuperiorityMapping(oldNewRuleMapping);
			} catch (TheoryException e) {
				throw new TheoryException("Old-New rule mapping exception appeared while updating the theory!", e);
			}
		}
	}