Documentation

Pdl.Discon

(Big) Disjunction and Conjunction #

Here we define ⋀ and ⋁ on lists of formulas and several 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 = l2 → con 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) ↔ ∀ f ∈ X, 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 ↔ ∀ f ∈ X, 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 = l2 → dis 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) ↔ ∃ f ∈ X, 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 ↔ ∃ f ∈ X, 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) ↔ ∃ Y ∈ XS, ∀ f ∈ Y, 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) ↔ ∃ Y ∈ XS, ∀ f ∈ Y, 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.

            @[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 ↔ ∃ Y ∈ XS, ∀ f ∈ Y, evaluate M w f

                Pairwise Union #

                Equations
                Instances For
                  Equations
                  Instances For
                    class HasUplus (α : Type → Type) :
                    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 ∈ XS → Y ∈ YS → X ∪ Y ∈ XS⊎YS
                      theorem mapCon_mapForall {W : Type} {X : List (List Formula × List Program)} (M : KripkeModel W) (w : W) (φ : Formula) (g : List Formula × List Program → Formula → List Formula) :
                      (∃ f ∈ List.map (fun (Fδ : List Formula × List Program) => con (g Fδ φ)) X, evaluate M w f) ↔ ∃ fs ∈ List.map (fun (Fδ : List Formula × List Program) => g Fδ φ) X, ∀ f ∈ fs, evaluate M w f

                      Helper for oneSidedLocalRuleTruth, used with g = Yset.