A cut enumeration admits Merge when its crowns are subtrees with fewer edges in total than
their tree, and its only empty cut is the tree itself. The edge bound makes External Merge of
a pair exact (mergeOpG_pair); the other two let a spectator component pass through
(mergeOpG_ofTree_mul).
- crown_numEdges_lt {T : UnorderedTree α} {p : UnorderedTree.Forest (UnorderedTree α) × UnorderedTree α} : p ∈ cuts T → p.1 ≠ 0 → (Multiset.map UnorderedTree.numEdges p.1).sum < T.numEdges
- mem_subtrees_of_mem_crown {T : UnorderedTree α} {p : UnorderedTree.Forest (UnorderedTree α) × UnorderedTree α} {x : UnorderedTree α} : p ∈ cuts T → x ∈ p.1 → x ∈ T.subtrees
- filter_empty (T : UnorderedTree α) : Multiset.filter (fun (p : UnorderedTree.Forest (UnorderedTree α) × UnorderedTree α) => Multiset.card p.1 = 0) (cuts T) = {(0, T)}
Used by IsMergeCuts.notMem_crown, IsMergeCuts.crown_ne_singleton, IsMergeCuts.mem_subtrees_of_mem_treeCutsG
Used in Syntax/Minimalist/Workspace/Merge/External, Syntax/Minimalist/Workspace/Merge/Internal, Syntax/Minimalist/Workspace/Merge/MinimalSearch, Syntax/Minimalist/Workspace/Merge/Sideward