Documentation

Linglib.Core.Combinatorics.RootedTree.Aut

Automorphism cardinality for rooted nonplanar trees #

For a rooted nonplanar tree whose children form the multiset M = {c₁ × k₁, …, cₙ × kₙ} (distinct subtrees cᵢ with multiplicity kᵢ), the automorphism group has cardinality ∏ᵢ kᵢ! · |Aut(cᵢ)| ^ kᵢ; the same formula applied to the top-level multiset counts the automorphisms of a forest.

Main definitions #

Main results #

RoseTree-representative substrate #

treeAutCard computes |Aut(mk t)| on a planar RoseTree representative t; Perm-invariance (below) lets it descend to Nonplanar.autCard through the quotient.

def RootedTree.Nonplanar.multinomialFactor {α : Type u_1} [DecidableEq α] (M : Multiset (Nonplanar α)) :

Symmetry-factor at one node: ∏_{distinct c ∈ M} (M.count c)!.

Equations
Instances For
    @[irreducible]
    def RootedTree.Nonplanar.treeAutCard {α : Type u_1} [DecidableEq α] :
    RoseTree α

    The automorphism count |Aut(mk t)| of the nonplanar tree represented by a planar RoseTree t; substrate for Nonplanar.autCard.

    Equations
    Instances For
      theorem RootedTree.Nonplanar.treeAutCard_node {α : Type u_1} [DecidableEq α] (a : α) (cs : List (RoseTree α)) :
      treeAutCard (RoseTree.node a cs) = (List.map treeAutCard cs).prod * multinomialFactor (List.map mk cs)

      treeAutCard is Perm-invariant #

      theorem RootedTree.Nonplanar.treeAutCard_perm {α : Type u_1} [DecidableEq α] {t s : RoseTree α} :

      treeAutCard is invariant under RoseTree.Perm.

      theorem RootedTree.Nonplanar.treeAutCard_permList {α : Type u_1} [DecidableEq α] {cs ds : List (RoseTree α)} :
      RoseTree.PermList cs ds(List.map treeAutCard cs).prod = (List.map treeAutCard ds).prod (List.map mk cs) = (List.map mk ds)

      The child-treeAutCard product and the mk-multiset are PermList-invariant.

      Positivity of treeAutCard #

      theorem RootedTree.Nonplanar.treeAutCard_pos {α : Type u_1} [DecidableEq α] (t : RoseTree α) :

      treeAutCard is positive.

      Nonplanar automorphism count via lift #

      def RootedTree.Nonplanar.autCard {α : Type u_1} [DecidableEq α] :
      Nonplanar α

      The cardinality |Aut(t)| of the automorphism group of a rooted nonplanar tree: ∏_{distinct c ∈ M} (M.count c)! · autCard c ^ M.count c at node a M (autCard_node), 1 at a leaf (autCard_leaf).

      Equations
      Instances For
        @[simp]
        theorem RootedTree.Nonplanar.autCard_mk {α : Type u_1} [DecidableEq α] (t : RoseTree α) :
        @[simp]
        theorem RootedTree.Nonplanar.autCard_leaf {α : Type u_1} [DecidableEq α] (a : α) :
        (leaf a).autCard = 1

        A leaf has trivial aut group.

        theorem RootedTree.Nonplanar.autCard_pos {α : Type u_1} [DecidableEq α] (t : Nonplanar α) :

        autCard is positive: the automorphism group contains the identity.

        def RootedTree.Nonplanar.forestAutCard {α : Type u_1} [DecidableEq α] (F : Multiset (Nonplanar α)) :

        The automorphism count |Aut(F)| of a forest of nonplanar trees: ∏_{distinct T ∈ F} (F.count T)! · autCard T ^ F.count T.

        Equations
        Instances For
          @[simp]
          theorem RootedTree.Nonplanar.forestAutCard_zero {α : Type u_1} [DecidableEq α] :

          The empty forest has trivial aut group.

          theorem RootedTree.Nonplanar.forestAutCard_pos {α : Type u_1} [DecidableEq α] (F : Multiset (Nonplanar α)) :

          forestAutCard is positive.

          theorem RootedTree.Nonplanar.forestAutCard_eq_prod_mul_multinomialFactor {α : Type u_1} [DecidableEq α] (F : Multiset (Nonplanar α)) :
          forestAutCard F = (Multiset.map autCard F).prod * multinomialFactor F

          forestAutCard as the autCard-product over all members times the symmetry factor: the forest analogue of treeAutCard_node's shape.

          @[simp]
          theorem RootedTree.Nonplanar.autCard_node {α : Type u_1} [DecidableEq α] (a : α) (F : Multiset (Nonplanar α)) :

          autCard at a node is forestAutCard of the children: the recursive formula.

          Multinomial split identity #

          Multiset.count_antidiagonal_eq_count_powerset and Multiset.count_powerset_of_le compute the split multiplicity; Nat.add_choose_mul_factorial_mul_factorial recombines it with the factorials per distinct tree. This identity is the combinatorial core of the pairing's product-coproduct adjunction (GrossmanLarsonPairing.pairing_of'_mul_of').

          theorem RootedTree.Nonplanar.forestAutCard_add {α : Type u_1} [DecidableEq α] (F G : Multiset (Nonplanar α)) :
          forestAutCard (F + G) = Multiset.count (F, G) (F + G).antidiagonal * (forestAutCard F * forestAutCard G)

          Multinomial split identity for forestAutCard: |Aut (F+G)| = count (F,G) (antidiagonal (F+G)) · |Aut F| · |Aut G|.