Documentation

Linglib.Syntax.Minimalist.SyntacticObject.Basic

Syntactic objects #

A syntactic object is a binary rooted tree with leaves labelled by the lexical alphabet and no labels at internal vertices: an element of the free non-associative commutative magma on SO₀. This file builds two carriers for it over one alphabet of vertices, Vertex, an option of a token on either side. The left summand is structure: a lexical item Vertex.lex tok on a leaf, or the bare label Vertex.bare on a binary internal node. The right summand is a trace: the index-free Vertex.trace, or the trace Vertex.traceOf tok of a token, the cancellation T/T_v remembering the head of T_v. Traces are exactly the right summand, the convention of the trace coproduct. SyntacticObject is the well-formed unordered tree over Vertex, the object Merge builds, and PlanarSyntacticObject the well-formed ordered tree, [MCB25]'s planar embedding, the form linearization and PF read. Well-formedness is a local condition, each vertex licensing its children (Vertex.Licenses), so it descends to the quotient; PlanarSyntacticObject.toSyntacticObject forgets the order and is a homomorphism for the vocabulary the two carriers share, leaf, trace, traceOf and merge.

Main definitions #

Main results #

References #

@[reducible, inline]

A vertex carries structure on the left, a lexical token or the bare internal label, and a trace on the right, index-free or of a token.

Equations
Instances For
    @[reducible, match_pattern, inline]

    The lexical item tok on a leaf.

    Equations
    Instances For
      @[reducible, match_pattern, inline]

      The bare label of a binary internal node.

      Equations
      Instances For
        @[reducible, match_pattern, inline]

        The index-free trace.

        Equations
        Instances For
          @[reducible, match_pattern, inline]

          The trace of the token tok.

          Equations
          Instances For

            Well-formedness #

            A vertex licenses its children when a lexical item or a trace has none and the bare label has two.

            Equations
            Instances For
              @[instance_reducible]
              instance Minimalist.SyntacticObject.instDecidableLicenses (a : Vertex) (ks : Multiset Vertex) :
              Decidable (a.Licenses ks)
              Equations

              An unordered tree over Vertex is a syntactic object when every vertex licenses its children, so that lexical items and traces are leaves and bare vertices are binary.

              Equations
              Instances For

                A leaf carrying a lexical item or a trace is a syntactic object.

                @[simp]

                A bare binary node is a syntactic object exactly when both daughters are.

                theorem Minimalist.SyntacticObject.length_eq_zero_or_two {a : Vertex} {cs : List (RoseTree Vertex)} (h : IsSyntacticObject (UnorderedTree.mk (RoseTree.node a cs))) :
                cs.length = 0 ∨ cs.length = 2

                A node of a syntactic object has either no children or exactly two.

                A node of a syntactic object with children is bare.

                The vertices of a syntactic object have zero or two children.

                The syntactic objects are the well-formed unordered trees over Vertex.

                Equations
                Instances For

                  The planar syntactic objects are the well-formed ordered trees over Vertex, [MCB25] §1.12's planar embeddings.

                  Equations
                  Instances For
                    @[instance_reducible]
                    Equations

                    The shapes #

                    The index-free trace, the mark an admissible cut leaves in the remaining tree ([MCB25], Definition 1.2.6); traceOf is the indexed trace.

                    Equations
                    Instances For
                      @[simp]
                      theorem Minimalist.SyntacticObject.leaf_inj {a b : LexicalItem.Token} :
                      ↑a = ↑b ↔ a = b

                      A bare binary node is a syntactic object exactly when both daughters are.

                      Merge on the carrier, the bare binary node over two syntactic objects, also written *. Noncomputable, since it goes through the smart constructor UnorderedTree.node; concrete results are built ordered and forgotten by PlanarSyntacticObject.toSyntacticObject.

                      Equations
                      Instances For

                        Merge of two ordered-built objects is the ordered binary node, so concrete results reduce.

                        Merge, with the daughters in the given order.

                        Equations
                        Instances For

                          Forgetting the order is the quotient map to the syntactic object.

                          Equations
                          Instances For
                            @[simp]

                            Forgetting the order commutes with Merge.

                            Induction and case analysis #

                            theorem Minimalist.SyntacticObject.ind {motive : SyntacticObject → Prop} (leaf : ∀ (tok : LexicalItem.Token), motive ↑tok) (trace : motive trace) (traceOf : ∀ (tok : LexicalItem.Token), motive (traceOf tok)) (merge : ∀ (l r : SyntacticObject), motive l → motive r → motive (l.merge r)) (s : SyntacticObject) :
                            motive s

                            Induction on syntactic objects, each of which is a lexical leaf, a trace, or the Merge of two syntactic objects.

                            theorem Minimalist.SyntacticObject.exists_form (s : SyntacticObject) :
                            (∃ (tok : LexicalItem.Token), s = ↑tok) ∨ s = trace ∨ (∃ (tok : LexicalItem.Token), s = traceOf tok) ∨ ∃ (l : SyntacticObject) (r : SyntacticObject), s = l.merge r

                            Every syntactic object is a lexical leaf, a trace, or a Merge.