Documentation

Pdl.Discon

(Big) Disjunction and Conjunction #

Here we define ⋀ and ⋁ on formulas and seveal helper lemmas.

Conjunction #

Equations
Instances For
    @[simp]
    theorem conempty :
    @[simp]
    theorem consingle {f : Formula} :
    con [f] = f
    theorem listEq_to_conEq {l1 l2 : List Formula} :
    l1 = l2con l1 = con l2
    theorem conEvalHT {X : List Formula} {f : Formula} {W : Type} {M : KripkeModel W} {w : W} :
    evaluate M w (con (f :: X)) evaluate M w f evaluate M w (con X)
    theorem conEval {W : Type} {M : KripkeModel W} {X : List Formula} {w : W} :
    evaluate M w (con X) fX, evaluate M w f
    theorem in_voc_con (n : ) (L : List Formula) :
    n (con L).voc φL, n φ.voc

    Vocabulary of Conjunction

    The conjunction of a Finset of formulas, via Finset.fsort.

    Equations
    Instances For
      @[simp]
      theorem Finset.con_singleton {f : Formula} :
      {f}.con = f
      theorem Finset.conEval {W : Type} {M : KripkeModel W} {X : Finset Formula} {w : W} :
      evaluate M w X.con fX, evaluate M w f
      theorem evaluate_con_sort {W✝ : Type} {M : KripkeModel W✝} {w : W✝} (X : Finset Formula) :
      evaluate M w (con (X.sort fun (a b : Formula) => a b)) φX, evaluate M w φ

      Evaluating a conjunction does not care about sorting.

      theorem Finset.in_voc_con (n : ) (X : Finset Formula) :
      n X.con.voc φX, n φ.voc

      Vocabulary of the conjunction of a Finset.

      Disjunction #

      Equations
      Instances For
        @[simp]
        theorem disempty :
        @[simp]
        theorem dissingle {f : Formula} :
        dis [f] = f
        theorem listEq_to_disEq {l1 l2 : List Formula} :
        l1 = l2dis l1 = dis l2
        theorem disEvalHT {X : List Formula} {f : Formula} {W : Type} {M : KripkeModel W} {w : W} :
        evaluate M w (dis (f :: X)) evaluate M w f evaluate M w (dis X)
        theorem disEval {W : Type} {M : KripkeModel W} {X : List Formula} {w : W} :
        evaluate M w (dis X) fX, evaluate M w f
        theorem in_voc_dis (n : ) (L : List Formula) :
        n (dis L).voc φL, n φ.voc

        Vocabulary of Disjunction

        The disjunction of a Finset of formulas, via Finset.fsort.

        Equations
        Instances For
          @[simp]
          theorem Finset.dis_singleton {f : Formula} :
          {f}.dis = f
          theorem Finset.disEval {W : Type} {M : KripkeModel W} {X : Finset Formula} {w : W} :
          evaluate M w X.dis fX, evaluate M w f
          theorem Finset.in_voc_dis (n : ) (X : Finset Formula) :
          n X.dis.voc φX, n φ.voc

          Vocabulary of the disjunction of a Finset.

          Disjunction of Conjunctions #

          Equations
          Instances For
            @[simp]
            theorem disconsingle {f : Formula} :
            theorem disconEvalHT {X : List Formula} (XS : List (List Formula)) :
            discon (X :: XS) con X discon XS
            theorem disconEval' {W : Type} {M : KripkeModel W} {w : W} {N : } (XS : List (List Formula)) :
            XS.length = N → (evaluate M w (discon XS) YXS, fY, evaluate M w f)

            Variant of disconEval for a specific length of XS to be provable by induction.

            theorem disconEval {W : Type} {M : KripkeModel W} {w : W} (XS : List (List Formula)) :
            evaluate M w (discon XS) YXS, fY, evaluate M w f
            theorem disconOr {XS YS : List (List Formula)} :
            discon (XS YS) discon XS discon YS

            Sorting lists of formulas #

            To also sort a Finset (Finset Formula) we need an order on List Formula. We use the lexicographic order List.le coming from the order on formulas.

            TODO: these could be moved to Pdl.Syntax, next to Finset.fsort.

            @[instance_reducible]

            The linear order on formulas, bundling the results from Pdl.Syntax. This is only used locally, to get the lexicographic order on List Formula.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              theorem List.le_iff_le_formula (l1 l2 : List Formula) :
              l1.le l2 l1 l2

              The lexicographic List.le on List Formula agrees with the coming from the linear order Formula.linearOrder.

              The disjunction of conjunctions given by a Finset (Finset Formula). The inner sets are sorted with Finset.fsort and the outer set is then sorted lexicographically with List.le.

              Equations
              Instances For
                theorem Finset.disconEval {W : Type} {M : KripkeModel W} {w : W} (XS : Finset (Finset Formula)) :
                evaluate M w XS.discon YXS, fY, evaluate M w f

                Pairwise Union #

                Equations
                Instances For
                  Equations
                  Instances For
                    class HasUplus (α : TypeType) :
                    Instances
                      @[instance_reducible]
                      Equations
                      @[instance_reducible]
                      Equations
                      theorem disconAnd {XS YS : List (List Formula)} :
                      theorem union_elem_uplus {XS YS : Finset (Finset Formula)} {X Y : Finset Formula} :
                      X XSY YSX Y XSYS
                      theorem mapCon_mapForall {W : Type} {X : List (List Formula × List Program)} (M : KripkeModel W) (w : W) (φ : Formula) (g : List Formula × List ProgramFormulaList Formula) :
                      (∃ fList.map (fun ( : List Formula × List Program) => con (g φ)) X, evaluate M w f) fsList.map (fun ( : List Formula × List Program) => g φ) X, ffs, evaluate M w f

                      Helper for oneSidedLocalRuleTruth, used with g = Yset.