Documentation

Linglib.Core.Data.RoseTree.Subtree

Subtrees of nonplanar trees #

UnorderedTree.subtrees t is the multiset of all subtrees of t, the root included, one per vertex, so its cardinality is t.numNodes. It is defined on planar representatives and descends to the quotient because a permutation of children permutes the subtree multiset.

Main definitions #

Main results #

def RoseTree.unorderedSubtrees {α : Type u_1} :
RoseTree αMultiset (UnorderedTree α)

The nonplanar subtrees of a planar tree, root included.

Equations
Instances For
    def RoseTree.unorderedSubtreesList {α : Type u_1} :
    List (RoseTree α)Multiset (UnorderedTree α)

    The nonplanar subtrees of a list of trees.

    Equations
    Instances For
      theorem RoseTree.card_unorderedSubtreesList {α : Type u_1} (cs : List (RoseTree α)) :
      (unorderedSubtreesList cs).card = (List.map numNodes cs).sum
      def UnorderedTree.subtrees {α : Type u_1} :
      UnorderedTree αMultiset (UnorderedTree α)

      All subtrees of a nonplanar tree, root included.

      Equations
      Instances For
        @[simp]
        theorem UnorderedTree.subtrees_leaf {α : Type u_1} (a : α) :
        (leaf a).subtrees = {leaf a}
        theorem UnorderedTree.subtrees_node_pair {α : Type u_1} (a : α) (l r : UnorderedTree α) :
        (node a {l, r}).subtrees = node a {l, r} ::ₘ (l.subtrees + r.subtrees)
        @[simp]
        theorem UnorderedTree.mem_subtrees_leaf {α : Type u_1} {m : UnorderedTree α} {a : α} :
        m (leaf a).subtrees m = leaf a
        @[simp]
        theorem UnorderedTree.mem_subtrees_node_pair {α : Type u_1} {m : UnorderedTree α} {a : α} {l r : UnorderedTree α} :
        m (node a {l, r}).subtrees m = node a {l, r} m l.subtrees m r.subtrees
        theorem UnorderedTree.card_subtrees {α : Type u_1} (t : UnorderedTree α) :
        t.subtrees.card = t.numNodes

        One subtree per vertex.