Documentation

Linglib.Syntax.Control.Diagnostics

Control Diagnostics and Profiles #

The observable diagnostic battery of control — the antecedence and reading tests every framework's account is answerable to. A Profile ι records which of an analysis's licensing clauses hold of a construction, over an arbitrary clause index ι; an Excludes ι instance says which clause's failure admits each diagnostic, and Profile.admits computes the admitted diagnostics as a preimage: admits is antitone, obligatory control is the empty fiber, non-obligatory control the full one, and the battery encodes the profile faithfully (Profile.admits_injective). Which configurations admit which diagnostics varies by theory — [Lan13] (75)–(79) derives the five from the two clauses of its OC signature (Studies/Landau2013.lean).

Main definitions #

The observable control diagnostics: the antecedence and reading tests any account of a control construction is answerable to.

  • arbitraryControl : Diagnostic

    Arbitrary control: a free reading of the controlled element

  • longDistanceControl : Diagnostic

    Long-distance control: a non-local antecedent

  • nonCCommandingControl : Diagnostic

    A non-c-commanding antecedent

  • strictEllipsis : Diagnostic

    A strict reading under VP-ellipsis

  • strictUnderOnly : Diagnostic

    A strict (non-bound-variable) reading under only

Instances For
    @[instance_reducible]
    Equations
    def Control.instReprDiagnostic.repr :
    DiagnosticStd.Format
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[instance_reducible]
      Equations
      class Control.Excludes (ι : Type u_1) :
      Type u_1

      An index of licensing clauses, together with the clause whose failure admits each diagnostic. Surjectivity says every clause is witnessed by some diagnostic — what makes the battery a faithful encoding of the profile.

      • excludedBy : Diagnosticι

        The clause whose failure admits each diagnostic.

      • surjective : Function.Surjective excludedBy

        Every clause is witnessed by some diagnostic.

      Instances
        @[reducible, inline]
        abbrev Control.Profile (ι : Type u_1) :
        Type u_1

        A profile over an index of licensing clauses: which clauses hold of a construction.

        Equations
        Instances For

          Obligatory control: every licensing clause holds.

          Equations
          Instances For

            Non-obligatory control: no licensing clause holds.

            Equations
            Instances For
              def Control.Profile.admits {ι : Type u_1} [Excludes ι] (p : Profile ι) :

              The diagnostics a profile admits: those whose excluding clause fails.

              Equations
              Instances For
                theorem Control.Profile.admits_anti {ι : Type u_1} [Excludes ι] :
                Antitone admits

                The more clauses hold, the fewer diagnostics are admitted.

                A profile is obligatory control iff it admits nothing.

                A profile is non-obligatory control iff it admits everything.

                theorem Control.Profile.admits_injective {ι : Type u_1} [Excludes ι] :
                Function.Injective admits

                The battery encodes the profile faithfully: distinct profiles admit distinct diagnostic sets.