Documentation

Linglib.Core.Discourse.Scoreboard

Scoreboard: Unified Discourse State #

@cite{roberts-2023} @cite{roberts-2012} @cite{lewis-1979} @cite{portner-2004}

The scoreboard K for a language game at time t is a tuple ⟨I, M, ≺, CG, QUD, G⟩ (@cite{roberts-2023} §2.1.1), tracking:

The three central elements — CG, QUD, G — are updated by the three canonical speech acts via the Illocutionary Force Linking Principle (@cite{roberts-2023} (56)):

Clause typeSemantic typeDefault forceUpdates
declarativepropositionassertionCG
interrogativeset of propositionsinterrogationQUD
imperativeindexed propertydirectionG

Relation to Prior Work #

@cite{lewis-1979}'s "scorekeeping in a language game" introduced the metaphor. @cite{roberts-2012} formalized CG + QUD. @cite{portner-2004} added the addressee's ToDo list. @cite{roberts-2023} unifies all three into a single scoreboard and gives G richer internal structure (conditional goals with hierarchical priorities, following @cite{bratman-1987}).

The semantic type of a clause, determining its default illocutionary force.

@cite{roberts-2023} (56): propositions → assertion, sets of propositions → interrogation, indexed properties → direction.

  • proposition : SemanticType

    Type ⟨s, t⟩: a proposition (set of worlds)

  • setOfPropositions : SemanticType

    Type ⟨⟨s, t⟩, t⟩: a set of propositions (Hamblin question denotation)

  • indexedProperty : SemanticType

    Type ⟨s, ⟨e, t⟩⟩: a property indexed to the addressee

Instances For
    @[implicit_reducible]
    Equations
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For

      Illocutionary Force Linking Principle (@cite{roberts-2023} (56)): the default illocutionary force of a root sentence is determined by its semantic type.

      (a) proposition → assertion (b) set of propositions → interrogation (c) indexed property → direction

      Equations
      Instances For

        The Scoreboard #

        structure Core.Discourse.Move (W : Type u_2) :
        Type u_2

        An illocutionary move on the scoreboard.

        @cite{roberts-2023} §2.1.1: M is the set of moves, with distinguished subsets A (assertions), Q (questions), D (directions), Acc (accepted).

        • Which kind of speech act

        • content : WProp

          Propositional content (for assertions and questions; for directions, the propositional closure of the targeted property)

        • agent :

          Who made the move

        • accepted : Bool

          Whether this move has been accepted by the interlocutors

        Instances For
          Equations
          Instances For
            @[implicit_reducible]
            instance Core.Discourse.instInhabitedMove {a✝ : Type u_2} :
            Inhabited (Move a✝)
            Equations
            structure Core.Discourse.Scoreboard (W : Type u_2) :
            Type u_2

            The scoreboard K for a language game.

            @cite{roberts-2023} §2.1.1: K = ⟨I, M, ≺, CG, QUD, G⟩. We represent ≺ implicitly via list order in moves.

            • numInterlocutors :

              I: the interlocutors (by index)

            • moves : List (Move W)

              M: illocutionary moves in temporal order (≺ = list position)

            • cg : List (WProp)

              CG: the common ground — propositions treated as mutually believed. Represented as a list of propositions; the context set is their intersection.

            • qud : List (WProp)

              QUD: questions under discussion (as a stack of proposition-sets). Simplified from the full QUDStack for composability.

            • goals : List (GoalSet W)

              G: per-agent goal sets. goals[i] is G_i. Length should equal numInterlocutors.

            Instances For
              Equations
              Instances For

                The context set: worlds compatible with all CG propositions.

                Equations
                Instances For
                  def Core.Discourse.Scoreboard.agentGoals {W : Type u_1} (K : Scoreboard W) (i : ) :

                  An agent's goal set. Returns empty if index out of bounds.

                  Equations
                  Instances For
                    def Core.Discourse.Scoreboard.assertionUpdate {W : Type u_1} (K : Scoreboard W) (p : WProp) (agent : ) :

                    Assertion update (@cite{roberts-2023} (57), following @cite{stalnaker-1978}): If a proposition is asserted and accepted, it is added to CG_K.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      def Core.Discourse.Scoreboard.interrogationUpdate {W : Type u_1} (K : Scoreboard W) (q : WProp) (agent : ) :

                      Interrogation update (@cite{roberts-2023} (58), following @cite{roberts-2012}): If a question is posed and accepted, it is added to QUD_K.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        def Core.Discourse.Scoreboard.addGoalAt {W : Type u_1} :
                        List (GoalSet W)Goal WList (GoalSet W)

                        Replace the target-th goal set in xs (walking from index i) by adding g. Returns xs unchanged if target is out of range (no implicit list extension). Used by directionUpdate and reasoned about by addGoalAt_out_of_range and mem_addGoalAt_flatMap.

                        Equations
                        Instances For
                          theorem Core.Discourse.Scoreboard.addGoalAt_out_of_range {W : Type u_1} (xs : List (GoalSet W)) (target i : ) (g : Goal W) (h : target < i) :
                          addGoalAt xs target i g = xs

                          If the walk is past target, addGoalAt is the identity.

                          def Core.Discourse.Scoreboard.directionUpdate {W : Type u_1} (K : Scoreboard W) (p : WProp) (speaker target : ) (priority : := 0) :

                          Direction update (@cite{roberts-2023} (59)): If a targeted property is issued to addressee i and accepted, G_i is revised to include the realization of the property in any applicable circumstances.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            @[simp]
                            theorem Core.Discourse.Scoreboard.assertion_adds_to_cg {W : Type u_1} (K : Scoreboard W) (p : WProp) (a : ) :
                            (K.assertionUpdate p a).cg = p :: K.cg

                            Assertion update adds to CG.

                            @[simp]
                            theorem Core.Discourse.Scoreboard.assertion_preserves_qud {W : Type u_1} (K : Scoreboard W) (p : WProp) (a : ) :
                            (K.assertionUpdate p a).qud = K.qud

                            Assertion update preserves QUD.

                            @[simp]
                            theorem Core.Discourse.Scoreboard.assertion_preserves_goals {W : Type u_1} (K : Scoreboard W) (p : WProp) (a : ) :

                            Assertion update preserves G.

                            @[simp]
                            theorem Core.Discourse.Scoreboard.interrogation_adds_to_qud {W : Type u_1} (K : Scoreboard W) (q : WProp) (a : ) :
                            (K.interrogationUpdate q a).qud = q :: K.qud

                            Interrogation update adds to QUD.

                            @[simp]
                            theorem Core.Discourse.Scoreboard.interrogation_preserves_cg {W : Type u_1} (K : Scoreboard W) (q : WProp) (a : ) :

                            Interrogation update preserves CG.

                            @[simp]

                            Interrogation update preserves G.

                            @[simp]
                            theorem Core.Discourse.Scoreboard.direction_preserves_cg {W : Type u_1} (K : Scoreboard W) (p : WProp) (s t pr : ) :
                            (K.directionUpdate p s t pr).cg = K.cg

                            Direction update preserves CG.

                            @[simp]
                            theorem Core.Discourse.Scoreboard.direction_preserves_qud {W : Type u_1} (K : Scoreboard W) (p : WProp) (s t pr : ) :
                            (K.directionUpdate p s t pr).qud = K.qud

                            Direction update preserves QUD.

                            POSW Substrate Bridge #

                            The scoreboard's CG and G components project jointly into a Core.Mood.POSW substrate (@cite{portner-2018}, eq. 1):

                            This makes the two scoreboard updates that target the POSW substrate correspond, by construction, to the two POSW updates of @cite{portner-2018}:

                            scoreboardPOSWinformational consequence
                            assertionUpdateplusboxCs_plus_self (Stalnakerian principle)
                            directionUpdatestarle-refinement: p-violators demoted

                            We derive both consequences from POSW.boxCs_plus_self and the star-refinement via the bridge theorems below — not re-stipulate them.

                            def Core.Discourse.Scoreboard.goalContents {W : Type u_1} (K : Scoreboard W) :
                            List (WProp)

                            The flat list of goal contents across all agents. The substrate of the goal-induced preference ordering on toPOSW.

                            Equations
                            Instances For
                              @[simp]

                              Assertion update preserves goal contents (since it doesn't touch G).

                              theorem Core.Discourse.Scoreboard.mem_addGoalAt_flatMap {W : Type u_1} (xs : List (GoalSet W)) (target i : ) (g : Goal W) (hin : i target) (hbd : target < i + xs.length) (q : WProp) :
                              q List.flatMap GoalSet.toPropertyList (addGoalAt xs target i g) q = g.content q List.flatMap GoalSet.toPropertyList xs

                              Membership in the flat goal-content list of a directionUpdate-modified scoreboard: the directive's content is added; everything else is preserved. Requires the target to be in bounds.

                              theorem Core.Discourse.Scoreboard.mem_directionUpdate_goalContents {W : Type u_1} (K : Scoreboard W) (p : WProp) (s t pr : ) (hin : t < K.goals.length) (q : WProp) :
                              q (K.directionUpdate p s t pr).goalContents q = p q K.goalContents

                              Membership in the flat goal-content list after directionUpdate: the new directive's content joins the existing goal contents.

                              Project the scoreboard into a POSW substrate. cs is the scoreboard's contextSet; le is the goal-induced ordering — w is at least as good as v iff w satisfies every goal v satisfies. The two POSW updates of @cite{portner-2018} target these two components (cf. toPOSW_assertion_eq_plus and toPOSW_direction_eq_star).

                              Equations
                              Instances For
                                @[simp]
                                theorem Core.Discourse.Scoreboard.toPOSW_le {W : Type u_1} (K : Scoreboard W) (w v : W) :
                                K.toPOSW.le w v pK.goalContents, p vp w
                                theorem Core.Discourse.Scoreboard.toPOSW_assertion_eq_plus {W : Type u_1} (K : Scoreboard W) (p : WProp) (a : ) (w : W) :
                                (K.assertionUpdate p a).toPOSW.cs w (K.toPOSW.plus p).cs w

                                Assertion-as-+-update bridge (@cite{stalnaker-1978}, @cite{portner-2018} eq. 2a). Asserting p against scoreboard K refines the projected POSW exactly the way POSW.plus does: the new context set is the conjunction of the old context set with p. The bridge is definitional — assertionUpdate is +-update on the cs side.

                                theorem Core.Discourse.Scoreboard.boxCs_after_assertion {W : Type u_1} (K : Scoreboard W) (p : WProp) (a : ) :

                                Stalnakerian assertion principle (@cite{stalnaker-1978}): after asserting p, p is informationally necessary on the projected POSW. Derived from POSW.boxCs_plus_self via the toPOSW_assertion_eq_plus bridge — not re-stipulated.

                                theorem Core.Discourse.Scoreboard.toPOSW_direction_eq_star {W : Type u_1} (K : Scoreboard W) (p : WProp) (s t pr : ) (hin : t < K.goals.length) (w v : W) :
                                (K.directionUpdate p s t pr).toPOSW.le w v (K.toPOSW.star p).le w v

                                Direction-as--update bridge (@cite{portner-2018} eq. 2b, following @cite{portner-2004}). Issuing the directive p to a target in bounds refines the projected POSW exactly the way POSW.star does: the new ordering keeps the old ordering and additionally requires that whenever the dominated world satisfies p, the dominating world does too. The bridge mirrors the assertion bridge — directionUpdate is -update on the le side, modulo the t < K.goals.length precondition (out-of-range targets silently drop the directive; that's a stipulated property of directionUpdate, not of POSW).

                                theorem Core.Discourse.Scoreboard.direction_demotes_violators {W : Type u_1} (K : Scoreboard W) (p : WProp) (s t pr : ) (hin : t < K.goals.length) (w v : W) (hpv : p v) (hpw : ¬p w) :
                                ¬(K.directionUpdate p s t pr).toPOSW.le w v

                                Goal-violator demotion (corollary of the -bridge): after directing p, no p-violator can dominate a p-satisfier in the goal-induced ordering. The directive update genuinely refines the preference relation — the analogue, on the le side, of boxCs_after_assertion on the cs side.

                                POSWQ Substrate Bridge #

                                The scoreboard's QUD component projects into the third POSW component of @cite{portner-2018} — the inquiry partition of Core.Mood.POSWQ. Each yes/no question q : W → Prop on the QUD stack induces a binary partition (q-true worlds vs. q-false worlds); the joint inquiry is the meet of these binary partitions in the Setoid W lattice.

                                scoreboardPOSWQinformational consequence
                                assertionUpdateplusboxCs_plus_self
                                directionUpdatestarle-refinement
                                interrogationUpdateinquire (?)boxAns-strengthening

                                Together these three bridges complete the @cite{portner-2018} 3×3 unification on the discourse-update side.

                                def Core.Discourse.Scoreboard.qudInquiry {W : Type u_1} (K : Scoreboard W) :
                                Setoid W

                                The inquiry partition projected from the QUD stack: the meet of the polar Setoids of every question on the stack, with the trivial inquiry () as identity. The fold convention places the new head's polar Setoid on the right of so that consing reduces definitionally to the inquire update on POSWQ. polarSetoid lives in Core/Mood/POSWQ.lean (the natural primitive site — it is the partition substrate).

                                Equations
                                Instances For
                                  @[simp]
                                  theorem Core.Discourse.Scoreboard.qudInquiry_nil {W : Type u_1} (K : Scoreboard W) (h : K.qud = []) :
                                  @[simp]
                                  theorem Core.Discourse.Scoreboard.qudInquiry_cons {W : Type u_1} (K : Scoreboard W) (q : WProp) (rest : List (WProp)) (h : K.qud = q :: rest) :
                                  K.qudInquiry = List.foldr (fun (q : WProp) (s : Setoid W) => sMood.POSWQ.polarSetoid q) restMood.POSWQ.polarSetoid q
                                  @[simp]

                                  Interrogation update preserves goal contents (since it doesn't touch G). Needed for the POSWQ bridge — toPOSWQ projects both le (from goalContents) and inquiry (from qud), and the interrogation update only refines the latter.

                                  Project the scoreboard into a POSWQ substrate: the underlying POSW plus the QUD-induced inquiry partition. The third row of the @cite{portner-2018} unification table.

                                  Equations
                                  Instances For

                                    Interrogation-as-?-update bridge (@cite{portner-2018} on questions; @cite{groenendijk-stokhof-1984} partitions). Posing a question q against scoreboard K refines the projected POSWQ exactly the way POSWQ.inquire does on the polar Setoid of q: the new inquiry partition is the meet of the old inquiry with the polar partition of q. The bridge is definitional — interrogationUpdate is ?-update on the inquiry side.

                                    Question-strengthening principle (the inquiry analogue of boxCs_after_assertion and direction_demotes_violators): after posing q, every proposition that is settled by q and compatible with the prior inquiry is settled by the new POSWQ. Concretely, the polar partition of q itself is settled. Derived from POSWQ.boxAns over the meet — not re-stipulated.