Documentation

Linglib.Discourse.Commitment.Table

The Table Model #

[FB10]

n-agent table-model substrate: a stack of at-issue items, per-agent commitment slates, and a common ground.

Main definitions #

TODO #

structure Discourse.Commitment.Table.Item (A : Type u_1) (W : Type u_2) :
Type (max u_1 u_2)

An at-issue item on the conversational table.

  • speaker : A

    Speaker of the utterance.

  • addressee : A

    Addressee.

  • Illocutionary force.

  • alternatives : List (WProp)

    Alternatives at issue: [p] for assertion, [p, ¬p] for polar question, the answer set for wh-questions.

Instances For
    structure Discourse.Commitment.Table.DiscourseState (A : Type u_1) (W : Type u_2) (I : Type u_3) :
    Type (max (max u_1 u_2) u_3)

    The discourse structure (DS) of [FB10], polymorphic in the table-element type I (full model: I := Item A W).

    • table : List I

      Stack of unresolved items, head = most recent.

    • dc : ATaggedSlate W

      Per-agent discourse commitments.

    • The common ground.

    Instances For

      Initial state: empty table, empty commitments, trivial CommonGround.

      Equations
      Instances For

        The state is stable when the table is empty.

        Equations
        Instances For
          def Discourse.Commitment.Table.DiscourseState.contextSet {A : Type u_1} {W : Type u_2} {I : Type u_3} (s : DiscourseState A W I) :
          Set W

          Worlds compatible with the common ground.

          Equations
          Instances For

            Commitment accessors #

            First-class views of an agent's commitments, collapsing the (s.dc a).proj two-step that recurs across consumers.

            def Discourse.Commitment.Table.DiscourseState.doxasticOf {A : Type u_1} {W : Type u_2} {I : Type u_3} (s : DiscourseState A W I) (a : A) :
            List (WProp)

            Agent a's doxastic (act-as-if-believe) commitments, untagged.

            Equations
            Instances For
              def Discourse.Commitment.Table.DiscourseState.Commits {A : Type u_1} {W : Type u_2} {I : Type u_3} (s : DiscourseState A W I) (a : A) (p : WProp) :

              a is doxastically committed to p.

              Equations
              Instances For
                def Discourse.Commitment.Table.DiscourseState.cgPropositions {A : Type u_1} {W : Type u_2} {I : Type u_3} (s : DiscourseState A W I) :
                List (Set W)

                The common-ground propositions.

                Equations
                Instances For

                  Primitive updates #

                  def Discourse.Commitment.Table.DiscourseState.pushItem {A : Type u_1} {W : Type u_2} {I : Type u_3} (s : DiscourseState A W I) (i : I) :
                  Equations
                  Instances For
                    Equations
                    Instances For
                      def Discourse.Commitment.Table.DiscourseState.addToCG {A : Type u_1} {W : Type u_2} {I : Type u_3} (s : DiscourseState A W I) (p : WProp) :
                      Equations
                      Instances For
                        def Discourse.Commitment.Table.DiscourseState.addCommit {A : Type u_1} {W : Type u_2} {I : Type u_3} [DecidableEq A] (s : DiscourseState A W I) (a : A) (p : WProp) (src : CommitmentSource := CommitmentSource.selfGenerated) (force : CommitmentForce := CommitmentForce.doxastic) :

                        Add (p, src, force) to agent a's slate. Defaults: self-generated, doxastic — the standard assertion-driven cell.

                        Equations
                        Instances For

                          Basic theorems #

                          @[simp]
                          @[simp]
                          @[simp]
                          theorem Discourse.Commitment.Table.DiscourseState.pushItem_table {A : Type u_1} {W : Type u_2} {I : Type u_3} (s : DiscourseState A W I) (i : I) :
                          (s.pushItem i).table = i :: s.table
                          @[simp]
                          theorem Discourse.Commitment.Table.DiscourseState.pushItem_dc {A : Type u_1} {W : Type u_2} {I : Type u_3} (s : DiscourseState A W I) (i : I) :
                          (s.pushItem i).dc = s.dc
                          @[simp]
                          theorem Discourse.Commitment.Table.DiscourseState.pushItem_cg {A : Type u_1} {W : Type u_2} {I : Type u_3} (s : DiscourseState A W I) (i : I) :
                          (s.pushItem i).cg = s.cg
                          @[simp]
                          theorem Discourse.Commitment.Table.DiscourseState.popItem_table {A : Type u_1} {W : Type u_2} {I : Type u_3} (s : DiscourseState A W I) :
                          s.popItem.table = s.table.tail
                          @[simp]
                          theorem Discourse.Commitment.Table.DiscourseState.popItem_dc {A : Type u_1} {W : Type u_2} {I : Type u_3} (s : DiscourseState A W I) :
                          s.popItem.dc = s.dc
                          @[simp]
                          theorem Discourse.Commitment.Table.DiscourseState.popItem_cg {A : Type u_1} {W : Type u_2} {I : Type u_3} (s : DiscourseState A W I) :
                          s.popItem.cg = s.cg
                          @[simp]
                          theorem Discourse.Commitment.Table.DiscourseState.addToCG_cg {A : Type u_1} {W : Type u_2} {I : Type u_3} (s : DiscourseState A W I) (p : WProp) :
                          (s.addToCG p).cg = s.cg.add p
                          @[simp]
                          theorem Discourse.Commitment.Table.DiscourseState.addToCG_table {A : Type u_1} {W : Type u_2} {I : Type u_3} (s : DiscourseState A W I) (p : WProp) :
                          (s.addToCG p).table = s.table
                          @[simp]
                          theorem Discourse.Commitment.Table.DiscourseState.addToCG_dc {A : Type u_1} {W : Type u_2} {I : Type u_3} (s : DiscourseState A W I) (p : WProp) :
                          (s.addToCG p).dc = s.dc
                          @[simp]
                          theorem Discourse.Commitment.Table.DiscourseState.addCommit_table {A : Type u_1} {W : Type u_2} {I : Type u_3} [DecidableEq A] (s : DiscourseState A W I) (a : A) (p : WProp) (src : CommitmentSource) (force : CommitmentForce) :
                          (s.addCommit a p src force).table = s.table
                          @[simp]
                          theorem Discourse.Commitment.Table.DiscourseState.addCommit_cg {A : Type u_1} {W : Type u_2} {I : Type u_3} [DecidableEq A] (s : DiscourseState A W I) (a : A) (p : WProp) (src : CommitmentSource) (force : CommitmentForce) :
                          (s.addCommit a p src force).cg = s.cg
                          @[simp]
                          theorem Discourse.Commitment.Table.DiscourseState.addCommit_dc_self {A : Type u_1} {W : Type u_2} {I : Type u_3} [DecidableEq A] (s : DiscourseState A W I) (a : A) (p : WProp) (src : CommitmentSource) (force : CommitmentForce) :
                          (s.addCommit a p src force).dc a = (s.dc a).add p src force
                          @[simp]
                          theorem Discourse.Commitment.Table.DiscourseState.addCommit_dc_of_ne {A : Type u_1} {W : Type u_2} {I : Type u_3} [DecidableEq A] (s : DiscourseState A W I) {a b : A} (h : b a) (p : WProp) (src : CommitmentSource) (force : CommitmentForce) :
                          (s.addCommit a p src force).dc b = s.dc b

                          Accessor reductions #

                          @[simp]
                          theorem Discourse.Commitment.Table.DiscourseState.doxasticOf_addCommit_self {A : Type u_1} {W : Type u_2} {I : Type u_3} [DecidableEq A] (s : DiscourseState A W I) (a : A) (p : WProp) (src : CommitmentSource) :
                          (s.addCommit a p src).doxasticOf a = p :: s.doxasticOf a
                          @[simp]
                          theorem Discourse.Commitment.Table.DiscourseState.doxasticOf_addCommit_of_ne {A : Type u_1} {W : Type u_2} {I : Type u_3} [DecidableEq A] (s : DiscourseState A W I) {a b : A} (h : b a) (p : WProp) (src : CommitmentSource) (force : CommitmentForce) :
                          (s.addCommit a p src force).doxasticOf b = s.doxasticOf b
                          @[simp]
                          theorem Discourse.Commitment.Table.DiscourseState.doxasticOf_pushItem {A : Type u_1} {W : Type u_2} {I : Type u_3} (s : DiscourseState A W I) (i : I) (a : A) :
                          @[simp]
                          theorem Discourse.Commitment.Table.DiscourseState.doxasticOf_popItem {A : Type u_1} {W : Type u_2} {I : Type u_3} (s : DiscourseState A W I) (a : A) :
                          @[simp]
                          theorem Discourse.Commitment.Table.DiscourseState.doxasticOf_addToCG {A : Type u_1} {W : Type u_2} {I : Type u_3} (s : DiscourseState A W I) (p : WProp) (a : A) :
                          @[simp]
                          theorem Discourse.Commitment.Table.DiscourseState.cgPropositions_addToCG {A : Type u_1} {W : Type u_2} {I : Type u_3} (s : DiscourseState A W I) (p : WProp) :
                          @[simp]
                          theorem Discourse.Commitment.Table.DiscourseState.cgPropositions_addCommit {A : Type u_1} {W : Type u_2} {I : Type u_3} [DecidableEq A] (s : DiscourseState A W I) (a : A) (p : WProp) (src : CommitmentSource) (force : CommitmentForce) :
                          @[simp]
                          theorem Discourse.Commitment.Table.DiscourseState.empty_doxasticOf {A : Type u_1} {W : Type u_2} {I : Type u_3} (a : A) :
                          @[reducible, inline]
                          abbrev Discourse.Commitment.Table.ItemState (A : Type u_1) (W : Type u_2) :
                          Type (max (max u_1 u_2) u_2 u_1)

                          The full Farkas-Bruce model: the table holds rich speech-act Items.

                          Equations
                          Instances For

                            Farkas-Bruce dynamics #

                            The [FB10] discourse moves — assertion, polar question, acceptance — over the 2-participant specialisation State W, with the plain speaker/listener commitment views (dcS/dcL) recovered from the per-agent slate so an F&B trace yields one-line equational facts.

                            @[reducible, inline]

                            The 2-participant Farkas-Bruce state, specialised over DiscourseRole.

                            Equations
                            Instances For
                              def Discourse.Commitment.Table.assert {W : Type u_1} (ds : State W) (p : WProp) :

                              Speaker asserts p: doxastically commits to p and pushes a declarative item [p] onto the table.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For
                                def Discourse.Commitment.Table.polarQuestion {W : Type u_1} (ds : State W) (p : WProp) :

                                Speaker poses the polar question ?p: push interrogative item [p, ¬p]. No commitments added.

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

                                  Addressee accepts the head alternative of the top item: other-generated doxastic commit, add to common ground, pop.

                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For
                                    @[simp]
                                    theorem Discourse.Commitment.Table.assert_cg {W : Type u_1} (ds : State W) (p : WProp) :
                                    (assert ds p).cg = ds.cg
                                    @[simp]
                                    theorem Discourse.Commitment.Table.assert_table {W : Type u_1} (ds : State W) (p : WProp) :
                                    (assert ds p).table = { speaker := DiscourseRole.speaker, addressee := DiscourseRole.addressee, mood := Semantics.Mood.IllocutionaryMood.declarative, alternatives := [p] } :: ds.table
                                    @[simp]
                                    theorem Discourse.Commitment.Table.polarQuestion_cg {W : Type u_1} (ds : State W) (p : WProp) :
                                    (polarQuestion ds p).cg = ds.cg
                                    @[simp]
                                    theorem Discourse.Commitment.Table.polarQuestion_table {W : Type u_1} (ds : State W) (p : WProp) :
                                    (polarQuestion ds p).table = { speaker := DiscourseRole.speaker, addressee := DiscourseRole.addressee, mood := Semantics.Mood.IllocutionaryMood.interrogative, alternatives := [p, fun (w : W) => ¬p w] } :: ds.table
                                    @[simp]
                                    theorem Discourse.Commitment.Table.polarQuestion_dc {W : Type u_1} (ds : State W) (p : WProp) (a : DiscourseRole) :
                                    (polarQuestion ds p).dc a = ds.dc a
                                    theorem Discourse.Commitment.Table.accept_after_assert_cg {W : Type u_1} (ds : State W) (p : WProp) :
                                    (acceptTop (assert ds p)).cg = ds.cg.add p
                                    @[simp]
                                    theorem Discourse.Commitment.Table.assert_dcS {W : Type u_1} (ds : State W) (p : WProp) :
                                    @[simp]
                                    @[simp]

                                    After asserting p and accepting it, p reaches the common ground.

                                    @[simp]

                                    Acceptance adds p to the addressee's commitments.

                                    @[simp]

                                    The speaker's assertion commitment survives acceptance.

                                    @[simp]
                                    theorem Discourse.Commitment.Table.accept_after_assert_table {W : Type u_1} (ds : State W) (p : WProp) :
                                    (acceptTop (assert ds p)).table = ds.table

                                    After acceptance the table returns to its pre-assertion state.