in experimental/piranha_playground/rule_inference/utils/node_utils.py [0:0]
def remove_partial_nodes(nodes: List[Node]) -> List[Node]:
"""
Remove nodes that whose children are not contained in the replacement pair.
Until a fixed point is reached where no more nodes can be removed.
:param nodes: List of nodes.
:return: The updated list of nodes after removing partial nodes.
"""
while True:
new_nodes = [
node
for node in nodes
if all(child in node.children for child in node.children)
]
if len(new_nodes) == len(nodes):
break
nodes = new_nodes
return new_nodes