public class UnaryIQTreeImpl extends AbstractCompositeIQTree<UnaryOperatorNode> implements UnaryIQTree
iqFactory, iqTreeTools| Modifier and Type | Method and Description |
|---|---|
IQTree |
acceptTransformer(IQTreeVisitingTransformer transformer) |
<T> T |
acceptVisitor(IQVisitor<T> visitor) |
IQTree |
applyDescendingSubstitutionWithoutOptimizing(ImmutableSubstitution<? extends VariableOrGroundTerm> descendingSubstitution)
Applies the descending substitution WITHOUT applying any additional optimization.
|
protected IQTree |
applyFreshRenaming(InjectiveVar2VarSubstitution renamingSubstitution,
boolean alreadyNormalized) |
protected IQTree |
applyRegularDescendingSubstitution(ImmutableSubstitution<? extends VariableOrGroundTerm> descendingSubstitution,
Optional<ImmutableExpression> constraint) |
protected boolean |
computeIsDistinct() |
protected com.google.common.collect.ImmutableSet<Variable> |
computeNotInternallyRequiredVariables() |
protected com.google.common.collect.ImmutableSet<ImmutableSubstitution<NonVariableTerm>> |
computePossibleVariableDefinitions() |
protected com.google.common.collect.ImmutableSet<com.google.common.collect.ImmutableSet<Variable>> |
computeUniqueConstraints() |
protected VariableNullability |
computeVariableNullability() |
protected com.google.common.collect.ImmutableSet<Variable> |
computeVariables() |
IQTree |
getChild() |
boolean |
isConstructed(Variable variable)
Returns true if the variable is (at least in one branch) constructed by a substitution
(in a construction node)
|
boolean |
isDeclaredAsEmpty()
Returns true if corresponds to a EmptyNode
|
IQTree |
liftIncompatibleDefinitions(Variable variable,
VariableGenerator variableGenerator)
Tries to lift unions when they have incompatible definitions
for a variable.
|
IQTree |
normalizeForOptimization(VariableGenerator variableGenerator) |
IQTree |
propagateDownConstraint(ImmutableExpression constraint)
TODO: explain
The constraint is used for pruning.
|
IQTree |
removeDistincts()
TODO: find a better name
|
IQTree |
replaceSubTree(IQTree subTreeToReplace,
IQTree newSubTree)
If subTreeToReplace is not found, has no effect (besides creating a novel copy).
|
protected void |
validateNode()
Only validates the node, not its children
|
applyDescendingSubstitution, applyFreshRenaming, equals, getChildren, getKnownVariables, getNotInternallyRequiredVariables, getPossibleVariableDefinitions, getProperties, getRootNode, getTreeCache, getVariableNullability, getVariables, hashCode, inferUniqueConstraints, isDistinct, isEquivalentTo, normalizeDescendingSubstitution, toString, validateclone, finalize, getClass, notify, notifyAll, wait, wait, waitgetRootNodeapplyDescendingSubstitution, applyFreshRenaming, getChildren, getKnownVariables, getNotInternallyRequiredVariables, getPossibleVariableDefinitions, getVariableNullability, getVariables, inferUniqueConstraints, isDistinct, isEquivalentTo, isLeaf, validatepublic IQTree normalizeForOptimization(VariableGenerator variableGenerator)
normalizeForOptimization in interface IQTreepublic IQTree liftIncompatibleDefinitions(Variable variable, VariableGenerator variableGenerator)
IQTreeliftIncompatibleDefinitions in interface IQTreeprotected IQTree applyFreshRenaming(InjectiveVar2VarSubstitution renamingSubstitution, boolean alreadyNormalized)
applyFreshRenaming in class AbstractCompositeIQTree<UnaryOperatorNode>protected IQTree applyRegularDescendingSubstitution(ImmutableSubstitution<? extends VariableOrGroundTerm> descendingSubstitution, Optional<ImmutableExpression> constraint)
applyRegularDescendingSubstitution in class AbstractCompositeIQTree<UnaryOperatorNode>public IQTree applyDescendingSubstitutionWithoutOptimizing(ImmutableSubstitution<? extends VariableOrGroundTerm> descendingSubstitution)
IQTreeapplyDescendingSubstitutionWithoutOptimizing in interface IQTreepublic boolean isConstructed(Variable variable)
IQTreeisConstructed in interface IQTreeprotected boolean computeIsDistinct()
computeIsDistinct in class AbstractCompositeIQTree<UnaryOperatorNode>public boolean isDeclaredAsEmpty()
IQTreeisDeclaredAsEmpty in interface IQTreepublic IQTree propagateDownConstraint(ImmutableExpression constraint)
IQTreepropagateDownConstraint in interface IQTreepublic IQTree replaceSubTree(IQTree subTreeToReplace, IQTree newSubTree)
IQTreereplaceSubTree in interface IQTreeprotected com.google.common.collect.ImmutableSet<ImmutableSubstitution<NonVariableTerm>> computePossibleVariableDefinitions()
computePossibleVariableDefinitions in class AbstractCompositeIQTree<UnaryOperatorNode>protected com.google.common.collect.ImmutableSet<com.google.common.collect.ImmutableSet<Variable>> computeUniqueConstraints()
computeUniqueConstraints in class AbstractCompositeIQTree<UnaryOperatorNode>protected com.google.common.collect.ImmutableSet<Variable> computeNotInternallyRequiredVariables()
computeNotInternallyRequiredVariables in class AbstractCompositeIQTree<UnaryOperatorNode>public IQTree removeDistincts()
IQTreeremoveDistincts in interface IQTreeprotected com.google.common.collect.ImmutableSet<Variable> computeVariables()
computeVariables in class AbstractCompositeIQTree<UnaryOperatorNode>protected void validateNode()
throws InvalidIntermediateQueryException
AbstractCompositeIQTreevalidateNode in class AbstractCompositeIQTree<UnaryOperatorNode>InvalidIntermediateQueryExceptionprotected VariableNullability computeVariableNullability()
computeVariableNullability in class AbstractCompositeIQTree<UnaryOperatorNode>public IQTree acceptTransformer(IQTreeVisitingTransformer transformer)
acceptTransformer in interface IQTreepublic <T> T acceptVisitor(IQVisitor<T> visitor)
acceptVisitor in interface IQTreepublic IQTree getChild()
getChild in interface UnaryIQTreeCopyright © 2009–2020 Free University of Bozen-Bolzano. All rights reserved.