private EquivalenceClassForSymmetricEGD createEquivalenceClass(Dependency egd) { FormulaVariable v1 = ((ComparisonAtom) egd.getConclusion().getAtoms().get(0)).getVariables().get(0); AttributeRef variableOccurrence = v1.getPremiseRelationalOccurrences().get(0).getAttributeRef(); AttributeRef conclusionAttribute = EquivalenceClassUtility.correctAttributeForSymmetricEGDs(variableOccurrence, egd); List<BackwardAttribute> attributesForBackwardChasing = findAttributesForBackwardChasing(egd); return new EquivalenceClassForSymmetricEGD( egd, conclusionAttribute, attributesForBackwardChasing); }
public static List<AttributeRef> extractRequestedAttributesWithExistential( Dependency dependency) { List<AttributeRef> result = new ArrayList<AttributeRef>(); result.addAll(dependency.getQueriedAttributes()); for (FormulaVariable variable : dependency.getConclusion().getLocalVariables()) { if (variable.getConclusionRelationalOccurrences().size() == 1) { continue; } for (FormulaVariableOccurrence occurrence : variable.getConclusionRelationalOccurrences()) { if (logger.isTraceEnabled()) logger.trace("Inspecting occurrence: " + occurrence); AttributeRef attribute = occurrence.getAttributeRef(); AttributeRef unaliasedAttribute = ChaseUtility.unAlias(attribute); LunaticUtility.addIfNotContained(result, unaliasedAttribute); } } for (AttributeRef attributeRef : dependency.getAdditionalAttributes()) { if (!result.contains(attributeRef)) { result.add(attributeRef); } } return result; }
public static List<FormulaVariable> getExistentialVariables(Dependency dependency) { return dependency.getConclusion().getLocalVariables(); }