Harvested automorphisms, and how they act on the search tree #
When two leaves of the search tree carry the same certificate, the algorithm records the
permutation autoOf that carries one labelling to the other and uses it to prune: any child of
the current node that is in the orbit of an already-processed child can be skipped.
This file proves the two facts that pruning rests on:
autoOf_isAuto— the recorded permutation really is an automorphism;reach_child_auto— an automorphism fixing the current partition carries the subtree below one child bijectively onto the subtree below its image, with the same leaf keys, so skipping the image loses nothing.
The bridge between the two is ofOracle_congr: an automorphism γ of G satisfies
Graph.ofOracle n (f ∘ γ) = Graph.ofOracle n f, which turns every equivariance lemma of
IsoGraph.Canon.Equivariance into a statement about the action of Aut G on the tree.
autoOf really produces an automorphism #
A PermArr n a is an array that represents a permutation of {0, …, n-1}: the shape the
labelling of a leaf always has (LeafOk).
It has the right length.
Its entries are vertices.
Its entries are distinct.
Instances For
Automorphism harvesting is correct. Two leaf labellings with the same certificate differ
by an automorphism, and autoOf computes it.
Automorphisms act on the search tree #
Automorphisms permute the leaves. If p is γ-invariant, transporting along γ sends
leaves below p to leaves below p with the same key.
Orbit pruning is sound. If γ is an automorphism fixing the current partition, the
subtree below the child v and the subtree below the child γ v have the same leaf keys.