Documentation

Linglib.Semantics.Dynamic.PLA.Basic

Predicate Logic with Anaphora: syntax #

Syntax for Predicate Logic with Anaphora (PLA), the dynamic system originating in [Dek94] and consolidated in [Dek12]. PLA distinguishes variables x_i, bound by quantifiers, from pronouns p_i, anaphoric expressions resolved from discourse context; the distinction prevents variable clash and keeps composition clean.

Main definitions #

Main results #

@[reducible, inline]

Variable index: identifies a variable x_i

Equations
Instances For
    @[reducible, inline]

    Pronoun index: identifies a pronoun p_i

    Equations
    Instances For
      inductive PLA.Term :

      Term: either a variable or a pronoun

      Instances For
        def PLA.instDecidableEqTerm.decEq (x✝ x✝¹ : Term) :
        Decidable (x✝ = x✝¹)
        Equations
        Instances For
          @[instance_reducible]
          instance PLA.instDecidableEqTerm :
          DecidableEq Term
          Equations
          def PLA.instReprTerm.repr :
          TermStd.Format
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            @[instance_reducible]
            instance PLA.instReprTerm :
            Repr Term
            Equations
            @[instance_reducible]
            instance PLA.instHashableTerm :
            Hashable Term
            Equations
            Equations
            Instances For

              Pronouns in a term (singleton or empty)

              Equations
              Instances For
                def PLA.Term.vars :
                TermFinset VarIdx

                Variables in a term

                Equations
                Instances For
                  def PLA.termsPronouns (ts : List Term) :
                  Finset PronIdx

                  Pronouns in a list of terms via Finset.biUnion.

                  Equations
                  Instances For
                    theorem PLA.mem_termsPronouns (ts : List Term) (i : PronIdx) :
                    i termsPronouns ts tts, i t.pronouns
                    inductive PLA.Formula :

                    PLA Formula

                    Instances For
                      @[instance_reducible]
                      Equations
                      def PLA.instReprFormula.repr :
                      FormulaStd.Format
                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        def PLA.Formula.«term_⋀_» :
                        Lean.TrailingParserDescr
                        Equations
                        • PLA.Formula.«term_⋀_» = Lean.ParserDescr.trailingNode `PLA.Formula.«term_⋀_» 35 36 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⋀ ") (Lean.ParserDescr.cat `term 35))
                        Instances For
                          def PLA.Formula.«term∼_» :
                          Lean.ParserDescr
                          Equations
                          • PLA.Formula.«term∼_» = Lean.ParserDescr.node `PLA.Formula.«term∼_» 40 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "∼") (Lean.ParserDescr.cat `term 40))
                          Instances For
                            Equations
                            Instances For
                              def PLA.Formula.«term_⋁_» :
                              Lean.TrailingParserDescr
                              Equations
                              • PLA.Formula.«term_⋁_» = Lean.ParserDescr.trailingNode `PLA.Formula.«term_⋁_» 30 31 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⋁ ") (Lean.ParserDescr.cat `term 30))
                              Instances For
                                Equations
                                Instances For
                                  def PLA.Formula.«term_⟶_» :
                                  Lean.TrailingParserDescr
                                  Equations
                                  • PLA.Formula.«term_⟶_» = Lean.ParserDescr.trailingNode `PLA.Formula.«term_⟶_» 25 26 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⟶ ") (Lean.ParserDescr.cat `term 25))
                                  Instances For
                                    Equations
                                    Instances For

                                      Domain: existentially bound variables

                                      Equations
                                      Instances For

                                        Range: pronouns in formula (using biUnion for atoms)

                                        Equations
                                        Instances For

                                          Free variables in formula

                                          Equations
                                          Instances For
                                            theorem PLA.Formula.range_atom (name : String) (ts : List Term) :
                                            (atom name ts).range = termsPronouns ts
                                            theorem PLA.Formula.range_conj (φ ψ : Formula) :
                                            (φ ψ).range = φ.range ψ.range
                                            theorem PLA.Formula.pron_in_atom_range (name : String) (ts : List Term) (t : Term) (i : PronIdx) (ht : t ts) (hi : i t.pronouns) :
                                            i (atom name ts).range

                                            If a pronoun appears in a term in the formula's argument list, it's in the range

                                            theorem PLA.Formula.range_conj_left (φ ψ : Formula) :
                                            φ.range(φ ψ).range

                                            Range is monotonic over conjunction

                                            theorem PLA.Formula.range_conj_right (φ ψ : Formula) :
                                            ψ.range(φ ψ).range
                                            @[reducible, inline]

                                            Resolution: maps pronouns to variables

                                            Equations
                                            Instances For

                                              Apply resolution to a term

                                              Equations
                                              Instances For

                                                Observation 2 ([Dek12] §2.1): Resolution preserves domain.

                                                n(φ^ρ) = n(φ): resolving pronouns doesn't affect which variables are bound.

                                                theorem PLA.Term.resolve_no_pronouns (t : Term) (ρ : Resolution) :
                                                (resolve ρ t).pronouns =

                                                Resolution removes all pronouns from a term

                                                theorem PLA.Formula.resolve_no_pronouns (φ : Formula) (ρ : Resolution) :
                                                (resolve ρ φ).range =

                                                Observation 3 ([Dek12] §2.1): Resolution eliminates all pronouns.

                                                r(φ^ρ) = ∅: after resolution, the formula contains no pronouns.