def remove_partial_nodes()

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