Docs / Syntax / Minimalist / Workspace / Merge / MinimalSearch

Minimal Search as a weighting of Merge

import Linglib.Syntax.Minimalist.Workspace.Merge.MinimalSearch · namespace Minimalist.Merge

Marcolli, Chomsky and Berwick implement Minimal Search by weighting the terms of the coproduct (their §1.5). Extracting an accessible term at distance d from its root costs ε^d, the costs of simultaneous extractions multiply, and Merge pays the weight of the terms it grafts, their M^ε_{S,S'} = ⊔ ∘ (B^ε ⊗ id) ∘ δ_{S,S'} ∘ Δ of (1.5.1) and (1.5.2).

The weighted coproduct comulEps ε scales a tree by ε for each level it is moved down on its way to the left channel. At ε = 1 it is the pruning coproduct, so the weighted Merge mergeOpEps 1 is Merge at the pruning cuts. At ε = 0 only whole components reach the left channel and the coproduct is primitive, so mergeOpEps 0 merges two components of the workspace and nothing else. At every ε, weighted Merge agrees with its value at ε = 0 up to a multiple of ε, and External and Internal Merge have weight 1 (Proposition 1.5.1): they cost nothing, every Sideward term costs at least one, and in the limit only External and Internal Merge remain.

Main definitions

Main results

Implementation notes

  • The book weights the left channel by ε^d and the right channel by ε^{-d}, and lets B^ε read the left weight. In a tensor product over R the two weights would cancel, so the weight is the coefficient of the left channel only. The book uses the right weight only to compute the cost d - d = 0 of Internal Merge, which here is the cost 0 of merging two components.
  • The unit stage M_{β,1} grafts nothing and costs nothing (the book's rule 4), so Internal Merge is mergeOpEps ε lbl Q β ∘ mergeOpUnitG cutSummandsN β, as the book writes it in proving Proposition 1.5.1.
  • The weights are put on the pruning coproduct Δ^ρ. The book's Δ is Δ^d, which differs from Δ^ρ only by contracting the unary vertices of the right channel (mergeOp_eq_comp_comulAlgHomN), the channel the weights do not read.
  • The weights are polynomial in ε, and the limit ε → 0 is evaluation at ε = 0, the book's M^ε_{S,S'}|_{ε=0}.

References

The empty-cut enumeration

The weighted coproduct

L79–88
L97–101
L103–114

The weighted coproduct modulo ε

Every term of the weighted coproduct but those of ε = 0 extracts a tree and so carries a factor of ε, and every term but T ⊗ 1 has a left factor with fewer vertices than T.

Weighted Merge

Merge weighted by Minimal Search (Marcolli et al. 2025 (1.5.1)) grafts each matching term with the weight of its extractions.

mergeOpEpsL328–332
noncomputable def Minimalist.Merge.mergeOpEps {R : Type u_1} [CommSemiring R] {α : Type u_2} [DecidableEq (UnorderedTree α)] (ε : R) (lbl : α) (S S' : UnorderedTree α) :

Built from

Used by mergeOpEps_one, mergeOpEps_zero, mergeOpEps_zero_of'_of_not_le, mergeOpEps_zero_ofTree_mul, mergeOpEps_zero_of'_mul, mergeOpEps_zero_pair_add, mergeOpEps_eq_add_smul, mergeOpEps_of'_eq_smul_of_not_le, mergeOpEps_pair, mergeOpEps_im_composition

L368–378

External Merge survives at ε = 0 (Marcolli et al. 2025 Proposition 1.5.1), beside any spectator workspace that does not repeat S or S' as a component.

theorem mergeOpEps_zero_pair_addL380–387
{R : Type u_1} [CommSemiring R] {α : Type u_2} [DecidableEq (UnorderedTree α)] (lbl : α) {S S' : UnorderedTree α} {F : UnorderedTree.Forest (UnorderedTree α)} (hS : S ∉ F) (hS' : S' ∉ F) :
(mergeOpEps 0 lbl S S') (ConnesKreimer.of' ({S, S'} + F)) = ConnesKreimer.of' ({UnorderedTree.node lbl {S, S'}} + F)

Built from

Internal Merge has weight 1 at every ε (Marcolli et al. 2025 Proposition 1.5.1), since its unit stage is weightless and its second stage merges two components.

theorem mergeOpEps_im_compositionL453–465
{R : Type u_1} [CommSemiring R] {α : Type u_2} [DecidableEq (UnorderedTree α)] (ε : R) (lbl : α) (β T Q : UnorderedTree α) (p0 : UnorderedTree.Forest (UnorderedTree α) × UnorderedTree α) (h_filter : Multiset.filter (fun (p : Multiset (UnorderedTree α) × UnorderedTree α) => p.1 = {β}) (ConnesKreimer.cutSummandsN T) = {p0}) (h_remainder : p0.2 = Q) (hTβ : T ≠ β) :

Built from