Adds a new constraint: ContainsSubtree. This constraint enforces that a given subtree appears in the program tree at least once. This constraint also supports VarNodes. (e.g. RuleNode(3, [VarNode(:a), VarNode(:a)]) enforces that rule 3 is used two identical children at least once.)
Adds an optimization for LocalUnique: when propagated in the UniformSolver, it now caches the holes that potentially hold the target rule instead of traversing the tree on each repropagation.
ContainsSubtree
. This constraint enforces that a given subtree appears in the program tree at least once. This constraint also supportsVarNode
s. (e.g.RuleNode(3, [VarNode(:a), VarNode(:a)])
enforces that rule3
is used two identical children at least once.)LocalUnique
: when propagated in theUniformSolver
, it now caches the holes that potentially hold the target rule instead of traversing the tree on each repropagation.