@Override
	protected void removeDefeatedRulesWithInference(Set<String> defeatedRulesStr, boolean checkInference) throws ReasoningEngineException {
		try {
			List<Rule> defeatedRules = new ArrayList<Rule>();
			for (String ruleLabel : defeatedRulesStr) {
				Rule rule = theory.getRule(ruleLabel);
				defeatedRules.add(rule);
				if (isLogInferenceProcess)
					getInferenceLogger().updateRuleInferenceStatus(rule.getOriginalLabel(), RuleType.DEFEASIBLE,
							ConclusionType.DEFEASIBLY_NOT_PROVABLE, rule.getHeadLiterals().get(0), RuleInferenceStatus.DEFEATED);
			}
			removeRules(defeatedRulesStr);
			for (Rule rule : defeatedRules) {
				Literal literal = rule.getHeadLiterals().get(0);
				if (!containsUnprovedRuleInTheory(literal, RuleType.DEFEASIBLE)) {
					addRecord(new Conclusion(ConclusionType.NEGATIVELY_SUPPORT, literal));
					newLiteralFind_defeasiblyNotProvable(literal, checkInference);
				}
			}
		} catch (Exception e) {
			throw new ReasoningEngineException(getClass(), e);
		}
	}