def getCondensationSet(cls, rule, model, checker, sentenceNameSource): """ generated source for method getCondensationSet """ varsInRule = GdlUtils.getVariables(rule) varsInHead = GdlUtils.getVariables(rule.getHead()) varsNotInHead = ArrayList(varsInRule) varsNotInHead.removeAll(varsInHead) for var in varsNotInHead: ConcurrencyUtils.checkForInterruption() for literal in rule.getBody(): if GdlUtils.getVariables(literal).contains(var): minSet.add(literal) for literal in minSet: if isinstance(literal, (GdlRelation, )): varsSupplied.addAll(GdlUtils.getVariables(literal)) elif isinstance(literal, (GdlDistinct, )) or isinstance(literal, (GdlNot, )): varsNeeded.addAll(GdlUtils.getVariables(literal)) varsNeeded.removeAll(varsSupplied) if not varsNeeded.isEmpty(): continue for varNeeded in varsNeeded: for literal in rule.getBody(): if isinstance(literal, (GdlRelation, )): if GdlUtils.getVariables(literal).contains(varNeeded): suppliers.add(literal) candidateSuppliersList.add(suppliers) for suppliers in candidateSuppliersList: if Collections.disjoint(suppliers, literalsToAdd): literalsToAdd.add(suppliers.iterator().next()) minSet.addAll(literalsToAdd) if goodCondensationSetByHeuristic(minSet, rule, model, checker, sentenceNameSource): return minSet return None