Mildly non-projective dependency structures #
Formalizes the structural theory of [KN06], [Kuh13], [Mul13]: planarity, well-nestedness, and the hierarchy
projective ⊂ planar ⊂ well-nested ⊂ unrestricted.
The cross-serial / nested verb-cluster pair ([Kuh13] Figure 1) witnesses the gap between projectivity and well-nestedness in attested language data.
Main declarations #
depsCross,linked,disjoint,projectionsInterleave— arc-crossing primitives.DepTree.isPlanar,DepTree.isWellNested— the two restrictiveness classes between projective and unrestricted.projective_iff_gapDegree_zero,projective_iff_blockDegree_one,blockDegree_eq_gapDegree_succ— equivalences in the hierarchy.projective_implies_planar— every well-formed projective tree is planar.planar_implies_wellNested— every well-formed planar tree is well-nested.nonProjective_implies_gapDeg_ge1— bridge toCore/Basic.lean'sgapDegree.dutchCrossSerial,germanNested,nonProjectiveTree— example trees used inDiscontinuity.lean,DependencyLength.lean, andStudies/Mueller2013.lean.
Implementation notes #
- Predicate-shape definitions return
Bool; this matches the substrate-wide DG convention and forces... = truein theorem statements. A Prop +Decidablerefactor is tracked at the substrate level. - The headline proof
planar_implies_wellNestedproceeds by contrapositive throughinterleaving_not_planar, a long chain ofprivateinfrastructure lemmas (exists_spanning_edge,escape_gives_crossing, the discrete intermediate-value lemmasfind_exit_step/find_entry_step). FillerGapDep(a{ tree, dep, inTree, nonProj }wrapper formerly here) was dropped — no downstream consumer; the cross-framework "filler-gap" abstraction the prior docstring gestured at belongs in a shared substrate (theLongDistance.leanTodo articulates this), not as a thin subtype here.
Arc-crossing detection #
Two dependencies cross iff their spans overlap without containment. ([KN06], implicit in Definition 4)
Equations
- One or more equations did not get rendered due to their size.
Instances For
All non-projective (crossing) dependencies in a tree.
Equations
- DepGrammar.nonProjectiveDeps t = List.filter (fun (d1 : DepGrammar.Dependency) => t.deps.any fun (d2 : DepGrammar.Dependency) => DepGrammar.depsCross d1 d2) t.deps
Instances For
Whether a tree has any non-projective dependencies.
Equations
- DepGrammar.hasFillerGap t = decide ((DepGrammar.nonProjectiveDeps t).length > 0)
Instances For
Whether two positions are linked by an edge (in either direction).
Equations
- DepGrammar.linked deps a b = deps.any fun (d : DepGrammar.Dependency) => d.headIdx == a && d.depIdx == b || d.headIdx == b && d.depIdx == a
Instances For
Two projections interleave if there exist l₁, r₁ ∈ p1 and
l₂, r₂ ∈ p2 with l₁ < l₂ < r₁ < r₂.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Two nodes are disjoint if neither dominates the other.
Equations
- DepGrammar.disjoint deps u v = (!(DepGrammar.projection deps u).contains v && !(DepGrammar.projection deps v).contains u)
Instances For
A dependency tree is well-nested if no two disjoint nodes have interleaving projections. ([KN06], Definition 8)
Equations
- One or more equations did not get rendered due to their size.
Instances For
Example trees #
Cross-serial Dutch and nested German from [Kuh13] Figure 1 — the canonical pair witnessing that mild non-projectivity (well-nested, gap degree 1) covers attested data.
Minimal crossing tree: arcs 0 → 2 and 1 → 3 cross.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dutch cross-serial: "dat Jan Piet Marie zag helpen lezen".
Dependencies zag→Jan, helpen→Piet, lezen→Marie cross.
Equations
- One or more equations did not get rendered due to their size.
Instances For
German nested: "dass Jan Piet Marie lesen helfen sah". Same dependencies
as dutchCrossSerial but verbs in reverse order → projective.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Verified properties of the example trees #
Hierarchy theorems #
Projective ⟺ gap degree 0: a tree is projective iff no node's projection has any gaps. ([KN06], Definition 3 + Definition 7)
Projective ⟺ block-degree 1 for non-empty trees.
Block-degree = gap degree + 1 for non-empty projections. ([Kuh13], §7.1 footnote 2)
Projective ⊂ planar #
The forward direction of the hierarchy. The proof goes by contrapositive:
if planarity fails, the four witness nodes generate a dominance cycle via
dominates_to_parent, contradicting acyclicity. The hasUniqueHeads
precondition is essential — a multi-headed node can be projective yet
non-planar.
Projective ⊂ planar for well-formed trees. ([KN06], §3.5)
Planar ⊂ well-nested #
By contrapositive: an interleaving witness produces a spanning-edge crossing
that breaks planarity. The infrastructure below — dominance comparability
under unique heads, parent-chain extraction, the discrete IVT-style
exit/entry steps — feeds the core interleaving_not_planar lemma.
Planar ⊂ well-nested for well-formed trees. ([KN06], Theorem 1)
Bridge to gapDegree #
Non-projective ⇒ gap degree ≥ 1. Contrapositive of
projective_iff_gapDegree_zero.