private List<Rule> removeDefeater_transformRule(Rule origRule) throws TheoryNormalizerException {
		List<Literal> origBodyLiterals = origRule.getBodyLiterals();
		List<Literal> origHeadLiterals = origRule.getHeadLiterals();

		if (origHeadLiterals.size() > 1) throw new TheoryNormalizerException(getClass(),
				"rule head contains more than 1 literal");
		List<Rule> newRules = new ArrayList<Rule>();
		Literal origHeadLiteral = origHeadLiterals.get(0);
		Mode dummyLiteralMode = origHeadLiteral.getMode();
		Mode ruleMode = origRule.getMode();
		if ("".equals(dummyLiteralMode.getName())) dummyLiteralMode = ruleMode;

		Literal newHeadLiteral = null;
		String[] sign = new String[2];
		if (origHeadLiteral.isNegation()) {
			sign[0] = "-";
			sign[1] = "+";
			newHeadLiteral = origHeadLiteral.getComplementClone();
		} else {
			sign[0] = "+";
			sign[1] = "-";
			newHeadLiteral = origHeadLiteral.clone();
		}

		String originalRuleLabel=origRule.getOriginalLabel();
		Literal dummyLiteral1 = DomUtilities.getLiteral(newHeadLiteral.getName() + sign[0], false, dummyLiteralMode,null,
				null, true);
		Literal dummyLiteral2 = DomUtilities.getLiteral(newHeadLiteral.getName() + sign[1], true, dummyLiteralMode,null,
				null, true);

		Rule newRule1 = DomUtilities.getRule(origRule.getLabel() + sign[0], origRule.getRuleType());
newRule1.setOriginalLabel(originalRuleLabel);
		newRule1.setMode(ruleMode);
		try {
			addBodyLiterals(newRule1, origBodyLiterals, "");
			newRule1.addHeadLiteral(dummyLiteral1);
		} catch (Exception e) {
			e.printStackTrace();
		}

		Rule newRule2 = DomUtilities.getRule(origRule.getLabel() + sign[1], origRule.getRuleType());
newRule2.setOriginalLabel(originalRuleLabel);
		newRule2.setMode(ruleMode);
		try {
			addBodyLiterals(newRule2, origBodyLiterals, "");
			newRule2.addHeadLiteral(dummyLiteral2);
		} catch (Exception e) {
			e.printStackTrace();
		}

		Rule newRule3 = DomUtilities.getRule(origRule.getLabel(), origRule.getRuleType());
newRule3.setOriginalLabel(originalRuleLabel);
		newRule3.setMode(ruleMode);
		try {
			newRule3.addBodyLiteral(dummyLiteral1);
			newRule3.addHeadLiteral(origHeadLiteral.clone());
		} catch (Exception e) {
			e.printStackTrace();
		}

		newRules.add(newRule1);
		newRules.add(newRule2);
		newRules.add(newRule3);

		return newRules;
	}