Documentation

LeanPool.FoZfc.BoundedFormulaOps

Definitions and theorems about replaceFV and liftAt. #

Main Definitions #

Main Statements #

Notations #

@[match_pattern]
def FirstOrder.Language.BoundedFormula.or {L : Language} {α : Type v} {n : ℕ} (ϕ1 ϕ2 : L.BoundedFormula α n) :

Or operator in the formula.

Equations
Instances For

    Or operator in the formula.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[match_pattern]
      def FirstOrder.Language.BoundedFormula.and {L : Language} {α : Type v} {n : ℕ} (ϕ1 ϕ2 : L.BoundedFormula α n) :

      And operator in the formula.

      Equations
      Instances For

        And operator in the formula.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[simp]
          theorem FirstOrder.Language.BoundedFormula.realize_or {V : Type u} {L : Language} [L.Structure V] {n : ℕ} {ϕ ψ : L.BoundedFormula ℕ n} {s : ℕ → V} {xs : Fin n → V} :
          (ϕ∨'ψ).Realize s xs ↔ ϕ.Realize s xs ∨ ψ.Realize s xs
          @[simp]
          theorem FirstOrder.Language.BoundedFormula.realize_and {V : Type u} {L : Language} [L.Structure V] {n : ℕ} {ϕ ψ : L.BoundedFormula ℕ n} {s : ℕ → V} {xs : Fin n → V} :
          (ϕ∧'ψ).Realize s xs ↔ ϕ.Realize s xs ∧ ψ.Realize s xs
          def FirstOrder.Language.Term.replaceFV {L : Language} {n : ℕ} (t : L.Term (ℕ ⊕ Fin n)) (tsN : ℕ → L.Term (ℕ ⊕ Fin n)) :
          L.Term (ℕ ⊕ Fin n)

          Replace all free variables fv' k with tsN k in a term t.

          Equations
          Instances For
            def FirstOrder.Language.BoundedFormula.makeTsN {L : Language} {n m : ℕ} (ts : Fin (m + 1) → L.Term (ℕ ⊕ Fin n)) (k : ℕ) :
            L.Term (ℕ ⊕ Fin n)

            Make a function on ℕ whose value at k is ts k if k < m + 1 and fv' k otherwise.

            Equations
            Instances For
              def FirstOrder.Language.BoundedFormula.replaceInitialValues {V : Type u} {n : ℕ} (s : ℕ → V) (xs : Fin (n + 1) → V) (k : ℕ) :
              V

              Replace the initial part of s : ℕ → V by xs : Fin (n + 1) → V.

              Equations
              Instances For
                def FirstOrder.Language.BoundedFormula.liftAndReplaceFV {L : Language} {n l : ℕ} (ϕ : L.BoundedFormula ℕ n) (n' m : ℕ) (ts : Fin (l + 1) → L.Term (ℕ ⊕ Fin (n + n'))) :

                Apply liftAt n' m and replace (makeTsN ts) in one call.

                Equations
                Instances For
                  @[simp]
                  theorem FirstOrder.Language.ReplaceFV.Term.realize_replaceFV {L : Language} {V : Type u} [L.Structure V] {n : ℕ} {s : ℕ → V} {xs : Fin n → V} {t : L.Term (ℕ ⊕ Fin n)} {tsN : ℕ → L.Term (ℕ ⊕ Fin n)} :
                  Term.realize (Sum.elim s xs) (t.replaceFV tsN) = Term.realize (Sum.elim (fun (k : ℕ) => Term.realize (Sum.elim s xs) (tsN k)) xs) t
                  theorem FirstOrder.Language.ReplaceFV.Term.realize_liftAt'_one {L : Language} {V : Type u} [L.Structure V] {n : ℕ} {s : ℕ → V} {xs : Fin n → V} {t : L.Term (ℕ ⊕ Fin n)} {a : V} :
                  theorem FirstOrder.Language.ReplaceFV.Term.realize_liftAt' {L : Language} {V : Type u} [L.Structure V] {n n' : ℕ} {s : ℕ → V} {xs : Fin n → V} {xs1 : Fin (n + n') → V} {t : L.Term (ℕ ⊕ Fin n)} :
                  (∀ (k : Fin n), xs1 (Fin.castAdd n' k) = xs k) → Term.realize (Sum.elim s xs1) (Term.liftAt n' n t) = Term.realize (Sum.elim s xs) t

                  Realization of liftAt n' n t agrees with realization of t when the extra context values xs1 extend xs along castAdd. Lifts the hypothesis n + n' ≤ n + 1 from realize_liftAt to m ≤ n.

                  @[simp]
                  theorem FirstOrder.Language.ReplaceFV.BoundedFormula.realize_replaceFV {L : Language} {V : Type u} [L.Structure V] {n : ℕ} {s : ℕ → V} {xs : Fin n → V} {ϕ : L.BoundedFormula ℕ n} {tsN : ℕ → L.Term (ℕ ⊕ Fin n)} :
                  (ϕ.replaceFV tsN).Realize s xs ↔ ϕ.Realize (fun (k : ℕ) => Term.realize (Sum.elim s xs) (tsN k)) xs
                  theorem FirstOrder.Language.ReplaceFV.realize_liftAt' {L : Language} {V : Type u} [L.Structure V] {n' m : ℕ} {h_n_prime_nezero : n' > 0} {s : ℕ → V} {n : ℕ} {φ : L.BoundedFormula ℕ n} (xs : Fin (n + n') → V) :
                  m ≤ n → ((BoundedFormula.liftAt n' m φ).Realize s xs ↔ φ.Realize s (xs ∘ fun (i : Fin n) => if ↑i < m then Fin.castAdd n' i else i.addNat n'))

                  Lifted realization invariant: a formula's realization at lifted context matches its realization at the original context, under the hypothesis m ≤ n.

                  @[simp]
                  theorem FirstOrder.Language.ReplaceFV.realize_makeTsN {L : Language} {n m k : ℕ} {ts : Fin (m + 1) → L.Term (ℕ ⊕ Fin n)} {h : k < m + 1} :

                  makeTsN ts k = ts (Fin.ofNat (m+1) k) when k < m + 1.