Documentation

Logic.FirstOrder.Basic.Syntax.Rew

Rewriting System #

term/formula morphisms such as rewritings, substitutions, and embeddings are handled by the structure LO.FirstOrder.Rew.

Rewritings LO.FirstOrder.Rew is naturally converted to formula rewritings by LO.FirstOrder.Rew.hom.

structure LO.FirstOrder.Rew (L : LO.FirstOrder.Language) (ξ₁ : Type u_1) (n₁ : ) (ξ₂ : Type u_2) (n₂ : ) :
Type (max (max u_1 u_2) u_3)
Instances For
    theorem LO.FirstOrder.Rew.func' {L : LO.FirstOrder.Language} {ξ₁ : Type u_1} {n₁ : } {ξ₂ : Type u_2} {n₂ : } (self : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {k : } (f : L.Func k) (v : Fin kLO.FirstOrder.Semiterm L ξ₁ n₁) :
    self.toFun (LO.FirstOrder.Semiterm.func f v) = LO.FirstOrder.Semiterm.func f fun (i : Fin k) => self.toFun (v i)
    @[reducible, inline]
    abbrev LO.FirstOrder.SyntacticRew (L : LO.FirstOrder.Language) (n₁ : ) (n₂ : ) :
    Type u_1
    Equations
    Instances For
      instance LO.FirstOrder.Rew.instFunLikeSemiterm {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } :
      FunLike (LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) (LO.FirstOrder.Semiterm L ξ₁ n₁) (LO.FirstOrder.Semiterm L ξ₂ n₂)
      Equations
      • LO.FirstOrder.Rew.instFunLikeSemiterm = { coe := fun (f : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) => f.toFun, coe_injective' := }
      instance LO.FirstOrder.Rew.instCoeFunForallSemiterm {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } :
      CoeFun (LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) fun (x : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) => LO.FirstOrder.Semiterm L ξ₁ n₁LO.FirstOrder.Semiterm L ξ₂ n₂
      Equations
      • LO.FirstOrder.Rew.instCoeFunForallSemiterm = DFunLike.hasCoeToFun
      theorem LO.FirstOrder.Rew.func {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {k : } (f : L.Func k) (v : Fin kLO.FirstOrder.Semiterm L ξ₁ n₁) :
      theorem LO.FirstOrder.Rew.func'' {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {k : } (f : L.Func k) (v : Fin kLO.FirstOrder.Semiterm L ξ₁ n₁) :
      @[simp]
      theorem LO.FirstOrder.Rew.func0 {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) (f : L.Func 0) (v : Fin 0LO.FirstOrder.Semiterm L ξ₁ n₁) :
      @[simp]
      theorem LO.FirstOrder.Rew.func1 {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) (f : L.Func 1) (t : LO.FirstOrder.Semiterm L ξ₁ n₁) :
      @[simp]
      theorem LO.FirstOrder.Rew.func2 {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) (f : L.Func 2) (t₁ : LO.FirstOrder.Semiterm L ξ₁ n₁) (t₂ : LO.FirstOrder.Semiterm L ξ₁ n₁) :
      ω (LO.FirstOrder.Semiterm.func f ![t₁, t₂]) = LO.FirstOrder.Semiterm.func f ![ω t₁, ω t₂]
      @[simp]
      theorem LO.FirstOrder.Rew.func3 {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) (f : L.Func 3) (t₁ : LO.FirstOrder.Semiterm L ξ₁ n₁) (t₂ : LO.FirstOrder.Semiterm L ξ₁ n₁) (t₃ : LO.FirstOrder.Semiterm L ξ₁ n₁) :
      ω (LO.FirstOrder.Semiterm.func f ![t₁, t₂, t₃]) = LO.FirstOrder.Semiterm.func f ![ω t₁, ω t₂, ω t₃]
      theorem LO.FirstOrder.Rew.ext {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (ω₁ : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) (ω₂ : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) (hb : ∀ (x : Fin n₁), ω₁ (LO.FirstOrder.Semiterm.bvar x) = ω₂ (LO.FirstOrder.Semiterm.bvar x)) (hf : ∀ (x : ξ₁), ω₁ (LO.FirstOrder.Semiterm.fvar x) = ω₂ (LO.FirstOrder.Semiterm.fvar x)) :
      ω₁ = ω₂
      theorem LO.FirstOrder.Rew.ext' {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } {ω₁ : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂} {ω₂ : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂} (h : ω₁ = ω₂) (t : LO.FirstOrder.Semiterm L ξ₁ n₁) :
      ω₁ t = ω₂ t
      def LO.FirstOrder.Rew.id {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } :
      LO.FirstOrder.Rew L ξ n ξ n
      Equations
      • LO.FirstOrder.Rew.id = { toFun := id, func' := }
      Instances For
        @[simp]
        theorem LO.FirstOrder.Rew.id_app {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (t : LO.FirstOrder.Semiterm L ξ n) :
        LO.FirstOrder.Rew.id t = t
        def LO.FirstOrder.Rew.comp {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {ξ₃ : Type u_5} {n₁ : } {n₂ : } {n₃ : } (ω₂ : LO.FirstOrder.Rew L ξ₂ n₂ ξ₃ n₃) (ω₁ : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) :
        LO.FirstOrder.Rew L ξ₁ n₁ ξ₃ n₃
        Equations
        Instances For
          theorem LO.FirstOrder.Rew.comp_app {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {ξ₃ : Type u_5} {n₁ : } {n₂ : } {n₃ : } (ω₂ : LO.FirstOrder.Rew L ξ₂ n₂ ξ₃ n₃) (ω₁ : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) (t : LO.FirstOrder.Semiterm L ξ₁ n₁) :
          (ω₂.comp ω₁) t = ω₂ (ω₁ t)
          @[simp]
          theorem LO.FirstOrder.Rew.id_comp {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) :
          LO.FirstOrder.Rew.id.comp ω = ω
          @[simp]
          theorem LO.FirstOrder.Rew.comp_id {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) :
          ω.comp LO.FirstOrder.Rew.id = ω
          def LO.FirstOrder.Rew.bindAux {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (b : Fin n₁LO.FirstOrder.Semiterm L ξ₂ n₂) (e : ξ₁LO.FirstOrder.Semiterm L ξ₂ n₂) :
          LO.FirstOrder.Semiterm L ξ₁ n₁LO.FirstOrder.Semiterm L ξ₂ n₂
          Equations
          Instances For
            def LO.FirstOrder.Rew.bind {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (b : Fin n₁LO.FirstOrder.Semiterm L ξ₂ n₂) (e : ξ₁LO.FirstOrder.Semiterm L ξ₂ n₂) :
            LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂
            Equations
            Instances For
              def LO.FirstOrder.Rew.rewrite {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n : } (f : ξ₁LO.FirstOrder.Semiterm L ξ₂ n) :
              LO.FirstOrder.Rew L ξ₁ n ξ₂ n
              Equations
              Instances For
                def LO.FirstOrder.Rew.rewriteMap {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n : } (e : ξ₁ξ₂) :
                LO.FirstOrder.Rew L ξ₁ n ξ₂ n
                Equations
                Instances For
                  def LO.FirstOrder.Rew.map {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (b : Fin n₁Fin n₂) (e : ξ₁ξ₂) :
                  LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂
                  Equations
                  Instances For
                    def LO.FirstOrder.Rew.substs {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {n' : } (v : Fin nLO.FirstOrder.Semiterm L ξ n') :
                    LO.FirstOrder.Rew L ξ n ξ n'
                    Equations
                    Instances For
                      def LO.FirstOrder.Rew.emb {L : LO.FirstOrder.Language} {o : Type v₁} [h : IsEmpty o] {ξ : Type v₂} {n : } :
                      Equations
                      Instances For
                        @[reducible, inline]
                        Equations
                        • LO.FirstOrder.Rew.embs = LO.FirstOrder.Rew.emb
                        Instances For
                          def LO.FirstOrder.Rew.empty {L : LO.FirstOrder.Language} {o : Type v₁} [h : IsEmpty o] {ξ : Type v₂} {n : } :
                          Equations
                          Instances For
                            def LO.FirstOrder.Rew.bShift {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } :
                            LO.FirstOrder.Rew L ξ n ξ (n + 1)
                            Equations
                            Instances For
                              def LO.FirstOrder.Rew.bShiftAdd {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (m : ) :
                              LO.FirstOrder.Rew L ξ n ξ (n + m)
                              Equations
                              Instances For
                                def LO.FirstOrder.Rew.cast {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {n' : } (h : n = n') :
                                LO.FirstOrder.Rew L ξ n ξ n'
                                Equations
                                Instances For
                                  def LO.FirstOrder.Rew.castLE {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {n' : } (h : n n') :
                                  LO.FirstOrder.Rew L ξ n ξ n'
                                  Equations
                                  Instances For
                                    Equations
                                    Instances For
                                      Equations
                                      Instances For
                                        Equations
                                        Instances For
                                          def LO.FirstOrder.Rew.q {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) :
                                          LO.FirstOrder.Rew L ξ₁ (n₁ + 1) ξ₂ (n₂ + 1)
                                          Equations
                                          Instances For
                                            def LO.FirstOrder.Rew.qpow {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) (k : ) :
                                            LO.FirstOrder.Rew L ξ₁ (n₁ + k) ξ₂ (n₂ + k)
                                            Equations
                                            • ω.qpow 0 = ω
                                            • ω.qpow k.succ = (ω.qpow k).q
                                            Instances For
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.qpow_zero {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) :
                                              ω.qpow 0 = ω
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.qpow_succ {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) (k : ) :
                                              ω.qpow (k + 1) = (ω.qpow k).q
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.bind_fvar {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (b : Fin n₁LO.FirstOrder.Semiterm L ξ₂ n₂) (e : ξ₁LO.FirstOrder.Semiterm L ξ₂ n₂) (m : ξ₁) :
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.bind_bvar {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (b : Fin n₁LO.FirstOrder.Semiterm L ξ₂ n₂) (e : ξ₁LO.FirstOrder.Semiterm L ξ₂ n₂) (n : Fin n₁) :
                                              theorem LO.FirstOrder.Rew.eq_bind {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) :
                                              ω = LO.FirstOrder.Rew.bind (ω LO.FirstOrder.Semiterm.bvar) (ω LO.FirstOrder.Semiterm.fvar)
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.bind_eq_id_of_zero {L : LO.FirstOrder.Language} {ξ₂ : Type u_4} (f : Fin 0LO.FirstOrder.Semiterm L ξ₂ 0) :
                                              LO.FirstOrder.Rew.bind f LO.FirstOrder.Semiterm.fvar = LO.FirstOrder.Rew.id
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.map_fvar {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (b : Fin n₁Fin n₂) (e : ξ₁ξ₂) (m : ξ₁) :
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.map_bvar {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (b : Fin n₁Fin n₂) (e : ξ₁ξ₂) (n : Fin n₁) :
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.map_id {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } :
                                              LO.FirstOrder.Rew.map id id = LO.FirstOrder.Rew.id
                                              theorem LO.FirstOrder.Rew.map_inj {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } {b : Fin n₁Fin n₂} {e : ξ₁ξ₂} (hb : Function.Injective b) (he : Function.Injective e) :
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.rewrite_fvar {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n : } (f : ξ₁LO.FirstOrder.Semiterm L ξ₂ n) (x : ξ₁) :
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.rewrite_eq_id {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } :
                                              LO.FirstOrder.Rew.rewrite LO.FirstOrder.Semiterm.fvar = LO.FirstOrder.Rew.id
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.rewriteMap_fvar {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n : } (e : ξ₁ξ₂) (x : ξ₁) :
                                              @[simp]
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.rewriteMap_id {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } :
                                              LO.FirstOrder.Rew.rewriteMap id = LO.FirstOrder.Rew.id
                                              theorem LO.FirstOrder.Rew.eq_rewriteMap_of_funEqOn_fv {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } [DecidableEq ξ₁] (t : LO.FirstOrder.Semiterm L ξ₁ n₁) (f : ξ₁LO.FirstOrder.Semiterm L ξ₂ n₂) (g : ξ₁LO.FirstOrder.Semiterm L ξ₂ n₂) (h : Function.funEqOn (fun (x : ξ₁) => x t.fv) f g) :
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.emb_bvar {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {o : Type v₂} [IsEmpty o] (x : Fin n) :
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.emb_eq_id {L : LO.FirstOrder.Language} {n : } {o : Type v₂} [IsEmpty o] :
                                              LO.FirstOrder.Rew.emb = LO.FirstOrder.Rew.id
                                              theorem LO.FirstOrder.Rew.eq_empty {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n : } [h : IsEmpty ξ₁] (ω : LO.FirstOrder.Rew L ξ₁ 0 ξ₂ n) :
                                              ω = LO.FirstOrder.Rew.empty
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.bShift_bvar {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (x : Fin n) :
                                              LO.FirstOrder.Rew.bShift (LO.FirstOrder.Semiterm.bvar x) = LO.FirstOrder.Semiterm.bvar x.succ
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.bShift_fvar {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (x : ξ) :
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.bShift_ne_zero {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (t : LO.FirstOrder.Semiterm L ξ n) :
                                              LO.FirstOrder.Rew.bShift t LO.FirstOrder.Semiterm.bvar 0
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.bShift_positive {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (t : LO.FirstOrder.Semiterm L ξ n) :
                                              (LO.FirstOrder.Rew.bShift t).Positive
                                              theorem LO.FirstOrder.Rew.positive_iff {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {t : LO.FirstOrder.Semiterm L ξ (n + 1)} :
                                              t.Positive ∃ (t' : LO.FirstOrder.Semiterm L ξ n), t = LO.FirstOrder.Rew.bShift t'
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.leftConcat_bShift_comp_bvar {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } :
                                              LO.FirstOrder.Semiterm.bvar 0 :> LO.FirstOrder.Rew.bShift LO.FirstOrder.Semiterm.bvar = LO.FirstOrder.Semiterm.bvar
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.bShift_comp_fvar {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } :
                                              LO.FirstOrder.Rew.bShift LO.FirstOrder.Semiterm.fvar = LO.FirstOrder.Semiterm.fvar
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.substs_zero {L : LO.FirstOrder.Language} {ξ : Type u_1} (w : Fin 0LO.FirstOrder.Term L ξ) :
                                              LO.FirstOrder.Rew.substs w = LO.FirstOrder.Rew.id
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.substs_eq_id {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } :
                                              LO.FirstOrder.Rew.substs LO.FirstOrder.Semiterm.bvar = LO.FirstOrder.Rew.id
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.cast_eq_id {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {h : n = n} :
                                              LO.FirstOrder.Rew.cast h = LO.FirstOrder.Rew.id
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.castLe_eq_id {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {h : n n} :
                                              LO.FirstOrder.Rew.castLE h = LO.FirstOrder.Rew.id
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.embSubsts_zero {L : LO.FirstOrder.Language} {ξ : Type u_1} (w : Fin 0LO.FirstOrder.Term L ξ) :
                                              LO.FirstOrder.Rew.embSubsts w = LO.FirstOrder.Rew.emb
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.embSubsts_eq_id {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } :
                                              LO.FirstOrder.Rew.embSubsts LO.FirstOrder.Semiterm.bvar = LO.FirstOrder.Rew.emb
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.q_bvar_zero {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) :
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.q_bvar_succ {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) (i : Fin n₁) :
                                              ω.q (LO.FirstOrder.Semiterm.bvar i.succ) = LO.FirstOrder.Rew.bShift (ω (LO.FirstOrder.Semiterm.bvar i))
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.q_fvar {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) (x : ξ₁) :
                                              ω.q (LO.FirstOrder.Semiterm.fvar x) = LO.FirstOrder.Rew.bShift (ω (LO.FirstOrder.Semiterm.fvar x))
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.q_comp_bShift {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) :
                                              ω.q.comp LO.FirstOrder.Rew.bShift = LO.FirstOrder.Rew.bShift.comp ω
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.q_comp_bShift_app {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) (t : LO.FirstOrder.Semiterm L ξ₁ n₁) :
                                              ω.q (LO.FirstOrder.Rew.bShift t) = LO.FirstOrder.Rew.bShift (ω t)
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.q_id {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } :
                                              LO.FirstOrder.Rew.id.q = LO.FirstOrder.Rew.id
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.q_eq_zero_iff {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {t : LO.FirstOrder.Semiterm L ξ₁ (n₁ + 1)} :
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.q_positive_iff {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {t : LO.FirstOrder.Semiterm L ξ₁ (n₁ + 1)} :
                                              (ω.q t).Positive t.Positive
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.qpow_id {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {k : } :
                                              LO.FirstOrder.Rew.id.qpow k = LO.FirstOrder.Rew.id
                                              theorem LO.FirstOrder.Rew.q_comp {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {ξ₃ : Type u_5} {n₁ : } {n₂ : } {n₃ : } (ω₂ : LO.FirstOrder.Rew L ξ₂ n₂ ξ₃ n₃) (ω₁ : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) :
                                              (ω₂.comp ω₁).q = ω₂.q.comp ω₁.q
                                              theorem LO.FirstOrder.Rew.qpow_comp {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {ξ₃ : Type u_5} {n₁ : } {n₂ : } {n₃ : } (k : ) (ω₂ : LO.FirstOrder.Rew L ξ₂ n₂ ξ₃ n₃) (ω₁ : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) :
                                              (ω₂.comp ω₁).qpow k = (ω₂.qpow k).comp (ω₁.qpow k)
                                              theorem LO.FirstOrder.Rew.q_bind {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (b : Fin n₁LO.FirstOrder.Semiterm L ξ₂ n₂) (e : ξ₁LO.FirstOrder.Semiterm L ξ₂ n₂) :
                                              (LO.FirstOrder.Rew.bind b e).q = LO.FirstOrder.Rew.bind (LO.FirstOrder.Semiterm.bvar 0 :> LO.FirstOrder.Rew.bShift b) (LO.FirstOrder.Rew.bShift e)
                                              theorem LO.FirstOrder.Rew.q_map {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (b : Fin n₁Fin n₂) (e : ξ₁ξ₂) :
                                              theorem LO.FirstOrder.Rew.q_rewrite {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n : } (f : ξ₁LO.FirstOrder.Semiterm L ξ₂ n) :
                                              (LO.FirstOrder.Rew.rewrite f).q = LO.FirstOrder.Rew.rewrite (LO.FirstOrder.Rew.bShift f)
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.q_rewriteMap {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n : } (e : ξ₁ξ₂) :
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.q_emb {L : LO.FirstOrder.Language} {ξ₂ : Type u_4} {o : Type v₁} [e : IsEmpty o] {n : } :
                                              LO.FirstOrder.Rew.emb.q = LO.FirstOrder.Rew.emb
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.qpow_emb {L : LO.FirstOrder.Language} {ξ₂ : Type u_4} {o : Type v₁} [e : IsEmpty o] {n : } {k : } :
                                              LO.FirstOrder.Rew.emb.qpow k = LO.FirstOrder.Rew.emb
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.q_cast {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {n' : } (h : n = n') :
                                              @[simp]
                                              theorem LO.FirstOrder.Rew.qpow_castLE {L : LO.FirstOrder.Language} {ξ : Type u_1} {k : } {n : } {n' : } (h : n n') :
                                              Equations
                                              Instances For
                                                Equations
                                                Instances For
                                                  Equations
                                                  Instances For
                                                    @[reducible, inline]
                                                    Equations
                                                    Instances For
                                                      theorem LO.FirstOrder.Rew.shift_func {L : LO.FirstOrder.Language} {n : } {k : } (f : L.Func k) (v : Fin kLO.FirstOrder.SyntacticSemiterm L n) :
                                                      LO.FirstOrder.Rew.shift (LO.FirstOrder.Semiterm.func f v) = LO.FirstOrder.Semiterm.func f fun (i : Fin k) => LO.FirstOrder.Rew.shift (v i)
                                                      @[simp]
                                                      @[simp]
                                                      theorem LO.FirstOrder.Rew.free_comp_fix {L : LO.FirstOrder.Language} {n : } :
                                                      LO.FirstOrder.Rew.comp LO.FirstOrder.Rew.free LO.FirstOrder.Rew.fix = LO.FirstOrder.Rew.id
                                                      @[simp]
                                                      theorem LO.FirstOrder.Rew.fix_comp_free {L : LO.FirstOrder.Language} {n : } :
                                                      LO.FirstOrder.Rew.comp LO.FirstOrder.Rew.fix LO.FirstOrder.Rew.free = LO.FirstOrder.Rew.id
                                                      @[simp]
                                                      theorem LO.FirstOrder.Rew.bShift_free_eq_shift {L : LO.FirstOrder.Language} :
                                                      LO.FirstOrder.Rew.comp LO.FirstOrder.Rew.free LO.FirstOrder.Rew.bShift = LO.FirstOrder.Rew.shift
                                                      theorem LO.FirstOrder.Rew.bShift_comp_substs {L : LO.FirstOrder.Language} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (v : Fin n₁LO.FirstOrder.Semiterm L ξ₂ n₂) :
                                                      LO.FirstOrder.Rew.bShift.comp (LO.FirstOrder.Rew.substs v) = LO.FirstOrder.Rew.substs (LO.FirstOrder.Rew.bShift v)
                                                      theorem LO.FirstOrder.Rew.shift_comp_substs {L : LO.FirstOrder.Language} {n₁ : } {n₂ : } (v : Fin n₁LO.FirstOrder.SyntacticSemiterm L n₂) :
                                                      LO.FirstOrder.Rew.comp LO.FirstOrder.Rew.shift (LO.FirstOrder.Rew.substs v) = (LO.FirstOrder.Rew.substs (LO.FirstOrder.Rew.shift v)).comp LO.FirstOrder.Rew.shift
                                                      theorem LO.FirstOrder.Rew.shift_comp_substs1 {L : LO.FirstOrder.Language} {n₂ : } (t : LO.FirstOrder.SyntacticSemiterm L n₂) :
                                                      LO.FirstOrder.Rew.comp LO.FirstOrder.Rew.shift (LO.FirstOrder.Rew.substs ![t]) = (LO.FirstOrder.Rew.substs ![LO.FirstOrder.Rew.shift t]).comp LO.FirstOrder.Rew.shift
                                                      @[simp]
                                                      theorem LO.FirstOrder.Rew.rewrite_comp_emb {L : LO.FirstOrder.Language} {ξ₂ : Type u_4} {ξ₃ : Type u_5} {n : } {o : Type v₁} [e : IsEmpty o] (f : ξ₂LO.FirstOrder.Semiterm L ξ₃ n) :
                                                      (LO.FirstOrder.Rew.rewrite f).comp LO.FirstOrder.Rew.emb = LO.FirstOrder.Rew.emb
                                                      @[simp]
                                                      theorem LO.FirstOrder.Rew.shift_comp_emb {L : LO.FirstOrder.Language} {n : } {o : Type v₁} [e : IsEmpty o] :
                                                      LO.FirstOrder.Rew.comp LO.FirstOrder.Rew.shift LO.FirstOrder.Rew.emb = LO.FirstOrder.Rew.emb
                                                      theorem LO.FirstOrder.Rew.rewrite_comp_shift_eq_id {L : LO.FirstOrder.Language} (t : LO.FirstOrder.SyntacticTerm L) :
                                                      (LO.FirstOrder.Rew.rewrite (t :>ₙ LO.FirstOrder.Semiterm.fvar)).comp LO.FirstOrder.Rew.shift = LO.FirstOrder.Rew.id
                                                      @[simp]
                                                      theorem LO.FirstOrder.Rew.substs_comp_bShift_eq_id {L : LO.FirstOrder.Language} {ξ : Type u_1} (v : Fin 1LO.FirstOrder.Semiterm L ξ 0) :
                                                      (LO.FirstOrder.Rew.substs v).comp LO.FirstOrder.Rew.bShift = LO.FirstOrder.Rew.id
                                                      theorem LO.FirstOrder.Rew.free_comp_substs_eq_substs_comp_shift {n : } {Lf : LO.FirstOrder.Language} {n' : } (w : Fin n'LO.FirstOrder.SyntacticSemiterm Lf (n + 1)) :
                                                      LO.FirstOrder.Rew.comp LO.FirstOrder.Rew.free (LO.FirstOrder.Rew.substs w) = (LO.FirstOrder.Rew.substs (LO.FirstOrder.Rew.free w)).comp LO.FirstOrder.Rew.shift
                                                      @[simp]
                                                      theorem LO.FirstOrder.Rew.rewriteMap_comp_rewriteMap {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {ξ₃ : Type u_5} {n : } (f : ξ₁ξ₂) (g : ξ₂ξ₃) :
                                                      @[simp]
                                                      theorem LO.FirstOrder.Rew.fix_free_app {L : LO.FirstOrder.Language} {n : } (t : LO.FirstOrder.SyntacticSemiterm L (n + 1)) :
                                                      LO.FirstOrder.Rew.fix (LO.FirstOrder.Rew.free t) = t
                                                      @[simp]
                                                      theorem LO.FirstOrder.Rew.free_fix_app {L : LO.FirstOrder.Language} {n : } (t : LO.FirstOrder.SyntacticSemiterm L n) :
                                                      LO.FirstOrder.Rew.free (LO.FirstOrder.Rew.fix t) = t
                                                      @[simp]
                                                      theorem LO.FirstOrder.Rew.free_bShift_app {L : LO.FirstOrder.Language} (t : LO.FirstOrder.SyntacticSemiterm L 0) :
                                                      LO.FirstOrder.Rew.free (LO.FirstOrder.Rew.bShift t) = LO.FirstOrder.Rew.shift t
                                                      @[simp]
                                                      theorem LO.FirstOrder.Rew.substs_bShift_app {L : LO.FirstOrder.Language} {ξ : Type u_1} {t : LO.FirstOrder.Semiterm L ξ 0} (v : Fin 1LO.FirstOrder.Semiterm L ξ 0) :
                                                      (LO.FirstOrder.Rew.substs v) (LO.FirstOrder.Rew.bShift t) = t
                                                      @[simp]
                                                      theorem LO.FirstOrder.Rew.q_shift {L : LO.FirstOrder.Language} {n : } :
                                                      LO.FirstOrder.Rew.q LO.FirstOrder.Rew.shift = LO.FirstOrder.Rew.shift
                                                      @[simp]
                                                      theorem LO.FirstOrder.Rew.q_free {L : LO.FirstOrder.Language} {n : } :
                                                      LO.FirstOrder.Rew.q LO.FirstOrder.Rew.free = LO.FirstOrder.Rew.free
                                                      @[simp]
                                                      theorem LO.FirstOrder.Rew.q_fix {L : LO.FirstOrder.Language} {n : } :
                                                      LO.FirstOrder.Rew.q LO.FirstOrder.Rew.fix = LO.FirstOrder.Rew.fix
                                                      Equations
                                                      Instances For
                                                        @[simp]
                                                        theorem LO.FirstOrder.Rew.substs_bv {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {m : } (t : LO.FirstOrder.Semiterm L ξ n) (v : Fin nLO.FirstOrder.Semiterm L ξ m) :
                                                        ((LO.FirstOrder.Rew.substs v) t).bv = t.bv.biUnion fun (i : Fin n) => (v i).bv
                                                        @[simp]
                                                        theorem LO.FirstOrder.Rew.substs_positive {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {m : } (t : LO.FirstOrder.Semiterm L ξ n) (v : Fin nLO.FirstOrder.Semiterm L ξ (m + 1)) :
                                                        ((LO.FirstOrder.Rew.substs v) t).Positive it.bv, (v i).Positive
                                                        theorem LO.FirstOrder.Rew.embSubsts_bv {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {m : } (t : LO.FirstOrder.Semiterm L Empty n) (v : Fin nLO.FirstOrder.Semiterm L ξ m) :
                                                        ((LO.FirstOrder.Rew.embSubsts v) t).bv = t.bv.biUnion fun (i : Fin n) => (v i).bv
                                                        @[simp]
                                                        theorem LO.FirstOrder.Rew.embSubsts_positive {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {m : } (t : LO.FirstOrder.Semiterm L Empty n) (v : Fin nLO.FirstOrder.Semiterm L ξ (m + 1)) :
                                                        ((LO.FirstOrder.Rew.embSubsts v) t).Positive it.bv, (v i).Positive
                                                        @[simp]
                                                        theorem LO.FirstOrder.Rew.bshift_positive {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (t : LO.FirstOrder.Semiterm L ξ n) :
                                                        (LO.FirstOrder.Rew.bShift t).Positive
                                                        theorem LO.FirstOrder.Rew.emb_comp_bShift_comm {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {o : Type v₁} [IsEmpty o] :
                                                        LO.FirstOrder.Rew.bShift.comp LO.FirstOrder.Rew.emb = LO.FirstOrder.Rew.emb.comp LO.FirstOrder.Rew.bShift
                                                        theorem LO.FirstOrder.Rew.emb_bShift_term {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {o : Type v₁} [IsEmpty o] (t : LO.FirstOrder.Semiterm L o n) :
                                                        LO.FirstOrder.Rew.bShift (LO.FirstOrder.Rew.emb t) = LO.FirstOrder.Rew.emb (LO.FirstOrder.Rew.bShift t)

                                                        Rewriting system of terms #

                                                        Equations
                                                        • LO.FirstOrder.Semiterm.instCoeEmptySyntacticSemiterm = { coe := LO.FirstOrder.Rew.emb }
                                                        @[simp]
                                                        theorem LO.FirstOrder.Semiterm.fvarList_emb {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {o : Type u_6} [e : IsEmpty o] {t : LO.FirstOrder.Semiterm L o n} :
                                                        (LO.FirstOrder.Rew.emb t).fvarList = []
                                                        theorem LO.FirstOrder.Semiterm.rew_eq_of_funEqOn {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (ω₁ : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) (ω₂ : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) (t : LO.FirstOrder.Semiterm L ξ₁ n₁) (hb : ∀ (x : Fin n₁), ω₁ (LO.FirstOrder.Semiterm.bvar x) = ω₂ (LO.FirstOrder.Semiterm.bvar x)) (he : Function.funEqOn t.fvar? (ω₁ LO.FirstOrder.Semiterm.fvar) (ω₂ LO.FirstOrder.Semiterm.fvar)) :
                                                        ω₁ t = ω₂ t
                                                        theorem LO.FirstOrder.Semiterm.lMap_bind {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (Φ : L₁.Hom L₂) (b : Fin n₁LO.FirstOrder.Semiterm L₁ ξ₂ n₂) (e : ξ₁LO.FirstOrder.Semiterm L₁ ξ₂ n₂) (t : LO.FirstOrder.Semiterm L₁ ξ₁ n₁) :
                                                        theorem LO.FirstOrder.Semiterm.lMap_map {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } (Φ : L₁.Hom L₂) (b : Fin n₁Fin n₂) (e : ξ₁ξ₂) (t : LO.FirstOrder.Semiterm L₁ ξ₁ n₁) :
                                                        theorem LO.FirstOrder.Semiterm.lMap_bShift {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {ξ₁ : Type u_3} {n : } (Φ : L₁.Hom L₂) (t : LO.FirstOrder.Semiterm L₁ ξ₁ n) :
                                                        LO.FirstOrder.Semiterm.lMap Φ (LO.FirstOrder.Rew.bShift t) = LO.FirstOrder.Rew.bShift (LO.FirstOrder.Semiterm.lMap Φ t)
                                                        theorem LO.FirstOrder.Semiterm.lMap_shift {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {n : } (Φ : L₁.Hom L₂) (t : LO.FirstOrder.SyntacticSemiterm L₁ n) :
                                                        LO.FirstOrder.Semiterm.lMap Φ (LO.FirstOrder.Rew.shift t) = LO.FirstOrder.Rew.shift (LO.FirstOrder.Semiterm.lMap Φ t)
                                                        theorem LO.FirstOrder.Semiterm.lMap_free {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {n : } (Φ : L₁.Hom L₂) (t : LO.FirstOrder.SyntacticSemiterm L₁ (n + 1)) :
                                                        LO.FirstOrder.Semiterm.lMap Φ (LO.FirstOrder.Rew.free t) = LO.FirstOrder.Rew.free (LO.FirstOrder.Semiterm.lMap Φ t)
                                                        theorem LO.FirstOrder.Semiterm.lMap_fix {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {n : } (Φ : L₁.Hom L₂) (t : LO.FirstOrder.SyntacticSemiterm L₁ n) :
                                                        LO.FirstOrder.Semiterm.lMap Φ (LO.FirstOrder.Rew.fix t) = LO.FirstOrder.Rew.fix (LO.FirstOrder.Semiterm.lMap Φ t)
                                                        theorem LO.FirstOrder.Semiterm.fvar?_bind {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ : } {n₂ : } {b : Fin n₁LO.FirstOrder.Semiterm L ξ₂ n₂} {f : ξ₁LO.FirstOrder.Semiterm L ξ₂ n₂} {t : LO.FirstOrder.Semiterm L ξ₁ n₁} {x : ξ₂} :
                                                        ((LO.FirstOrder.Rew.bind b f) t).fvar? x(∃ (z : Fin n₁), (b z).fvar? x) ∃ (z : ξ₁), t.fvar? z (f z).fvar? x
                                                        @[simp]
                                                        theorem LO.FirstOrder.Semiterm.fvarList_bShift {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {t : LO.FirstOrder.Semiterm L ξ n} {x : ξ} :
                                                        (LO.FirstOrder.Rew.bShift t).fvar? x t.fvar? x
                                                        Equations
                                                        Instances For
                                                          @[simp]
                                                          theorem LO.FirstOrder.Semiterm.emb_toEmpty {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (t : LO.FirstOrder.Semiterm L ξ n) (ht : t.fvarList = []) :
                                                          LO.FirstOrder.Rew.emb (t.toEmpty ht) = t

                                                          Rewriting system of formulae #

                                                          def LO.FirstOrder.Rew.loMap {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} ⦃n₁ : ⦃n₂ : :
                                                          LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂LO.FirstOrder.Semiformula L ξ₁ n₁LO.FirstOrder.Semiformula L ξ₂ n₂
                                                          Equations
                                                          Instances For
                                                            theorem LO.FirstOrder.Rew.loMap_neg {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) (p : LO.FirstOrder.Semiformula L ξ₁ n₁) :
                                                            ω.loMap (p) = ω.loMap p
                                                            theorem LO.FirstOrder.Rew.ext_loMap' {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } {ω₁ : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂} {ω₂ : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂} (h : ω₁ = ω₂) (p : LO.FirstOrder.Semiformula L ξ₁ n₁) :
                                                            ω₁.loMap p = ω₂.loMap p
                                                            theorem LO.FirstOrder.Rew.neg' {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) (p : LO.FirstOrder.Semiformula L ξ₁ n₁) :
                                                            ω.loMap (p) = ω.loMap p
                                                            theorem LO.FirstOrder.Rew.or' {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) (p : LO.FirstOrder.Semiformula L ξ₁ n₁) (q : LO.FirstOrder.Semiformula L ξ₁ n₁) :
                                                            ω.loMap (p q) = ω.loMap p ω.loMap q
                                                            @[irreducible]
                                                            def LO.FirstOrder.Rew.hom {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) :
                                                            Equations
                                                            • ω.hom = { toTr := ω.loMap, map_top' := , map_bot' := , map_neg' := , map_imply' := , map_and' := , map_or' := }
                                                            Instances For
                                                              theorem LO.FirstOrder.Rew.hom_eq_loMap {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) :
                                                              ω.hom = ω.loMap
                                                              theorem LO.FirstOrder.Rew.rel {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {k : } {r : L.Rel k} {v : Fin kLO.FirstOrder.Semiterm L ξ₁ n₁} :
                                                              ω.hom (LO.FirstOrder.Semiformula.rel r v) = LO.FirstOrder.Semiformula.rel r fun (i : Fin k) => ω (v i)
                                                              theorem LO.FirstOrder.Rew.nrel {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {k : } {r : L.Rel k} {v : Fin kLO.FirstOrder.Semiterm L ξ₁ n₁} :
                                                              theorem LO.FirstOrder.Rew.rel' {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {k : } {r : L.Rel k} {v : Fin kLO.FirstOrder.Semiterm L ξ₁ n₁} :
                                                              theorem LO.FirstOrder.Rew.nrel' {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {k : } {r : L.Rel k} {v : Fin kLO.FirstOrder.Semiterm L ξ₁ n₁} :
                                                              @[simp]
                                                              theorem LO.FirstOrder.Rew.rel0 {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {r : L.Rel 0} {v : Fin 0LO.FirstOrder.Semiterm L ξ₁ n₁} :
                                                              @[simp]
                                                              theorem LO.FirstOrder.Rew.rel1 {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {r : L.Rel 1} {t : LO.FirstOrder.Semiterm L ξ₁ n₁} :
                                                              @[simp]
                                                              theorem LO.FirstOrder.Rew.rel2 {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {r : L.Rel 2} {t₁ : LO.FirstOrder.Semiterm L ξ₁ n₁} {t₂ : LO.FirstOrder.Semiterm L ξ₁ n₁} :
                                                              ω.hom (LO.FirstOrder.Semiformula.rel r ![t₁, t₂]) = LO.FirstOrder.Semiformula.rel r ![ω t₁, ω t₂]
                                                              @[simp]
                                                              theorem LO.FirstOrder.Rew.rel3 {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {r : L.Rel 3} {t₁ : LO.FirstOrder.Semiterm L ξ₁ n₁} {t₂ : LO.FirstOrder.Semiterm L ξ₁ n₁} {t₃ : LO.FirstOrder.Semiterm L ξ₁ n₁} :
                                                              ω.hom (LO.FirstOrder.Semiformula.rel r ![t₁, t₂, t₃]) = LO.FirstOrder.Semiformula.rel r ![ω t₁, ω t₂, ω t₃]
                                                              @[simp]
                                                              theorem LO.FirstOrder.Rew.nrel0 {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {r : L.Rel 0} {v : Fin 0LO.FirstOrder.Semiterm L ξ₁ n₁} :
                                                              @[simp]
                                                              theorem LO.FirstOrder.Rew.nrel1 {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {r : L.Rel 1} {t : LO.FirstOrder.Semiterm L ξ₁ n₁} :
                                                              @[simp]
                                                              theorem LO.FirstOrder.Rew.nrel2 {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {r : L.Rel 2} {t₁ : LO.FirstOrder.Semiterm L ξ₁ n₁} {t₂ : LO.FirstOrder.Semiterm L ξ₁ n₁} :
                                                              ω.hom (LO.FirstOrder.Semiformula.nrel r ![t₁, t₂]) = LO.FirstOrder.Semiformula.nrel r ![ω t₁, ω t₂]
                                                              @[simp]
                                                              theorem LO.FirstOrder.Rew.nrel3 {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {r : L.Rel 3} {t₁ : LO.FirstOrder.Semiterm L ξ₁ n₁} {t₂ : LO.FirstOrder.Semiterm L ξ₁ n₁} {t₃ : LO.FirstOrder.Semiterm L ξ₁ n₁} :
                                                              ω.hom (LO.FirstOrder.Semiformula.nrel r ![t₁, t₂, t₃]) = LO.FirstOrder.Semiformula.nrel r ![ω t₁, ω t₂, ω t₃]
                                                              @[simp]
                                                              theorem LO.FirstOrder.Rew.all {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {p : LO.FirstOrder.Semiformula L ξ₁ (n₁ + 1)} :
                                                              ω.hom (∀' p) = ∀' ω.q.hom p
                                                              @[simp]
                                                              theorem LO.FirstOrder.Rew.ex {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {p : LO.FirstOrder.Semiformula L ξ₁ (n₁ + 1)} :
                                                              ω.hom (∃' p) = ∃' ω.q.hom p
                                                              @[simp]
                                                              theorem LO.FirstOrder.Rew.ball {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {p : LO.FirstOrder.Semiformula L ξ₁ (n₁ + 1)} {q : LO.FirstOrder.Semiformula L ξ₁ (n₁ + 1)} :
                                                              ω.hom (∀[p] q) = ∀[ω.q.hom p] ω.q.hom q
                                                              @[simp]
                                                              theorem LO.FirstOrder.Rew.bex {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {p : LO.FirstOrder.Semiformula L ξ₁ (n₁ + 1)} {q : LO.FirstOrder.Semiformula L ξ₁ (n₁ + 1)} :
                                                              ω.hom (∃[p] q) = ∃[ω.q.hom p] ω.q.hom q
                                                              @[simp]
                                                              theorem LO.FirstOrder.Rew.complexity {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) (p : LO.FirstOrder.Semiformula L ξ₁ n₁) :
                                                              (ω.hom p).complexity = p.complexity
                                                              theorem LO.FirstOrder.Rew.hom_ext' {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } {ω₁ : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂} {ω₂ : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂} (h : ω₁ = ω₂) {p : LO.FirstOrder.Semiformula L ξ₁ n₁} :
                                                              ω₁.hom p = ω₂.hom p
                                                              @[simp]
                                                              theorem LO.FirstOrder.Rew.hom_id_eq {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } :
                                                              LO.FirstOrder.Rew.id.hom = LO.LogicalConnective.Hom.id
                                                              theorem LO.FirstOrder.Rew.hom_comp_eq {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {ξ₃ : Type u_4} {n₁ : } {n₂ : } {n₃ : } (ω₂ : LO.FirstOrder.Rew L ξ₂ n₂ ξ₃ n₃) (ω₁ : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) :
                                                              (ω₂.comp ω₁).hom = ω₂.hom.comp ω₁.hom
                                                              theorem LO.FirstOrder.Rew.hom_comp_app {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {ξ₃ : Type u_4} {n₁ : } {n₂ : } {n₃ : } (ω₂ : LO.FirstOrder.Rew L ξ₂ n₂ ξ₃ n₃) (ω₁ : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) (p : LO.FirstOrder.Semiformula L ξ₁ n₁) :
                                                              (ω₂.comp ω₁).hom p = ω₂.hom (ω₁.hom p)
                                                              theorem LO.FirstOrder.Rew.eq_self_of_eq_id {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {ω : LO.FirstOrder.Rew L ξ n ξ n} (h : ω = LO.FirstOrder.Rew.id) {p : LO.FirstOrder.Semiformula L ξ n} :
                                                              ω.hom p = p
                                                              @[irreducible]
                                                              theorem LO.FirstOrder.Rew.mapl_inj {L : LO.FirstOrder.Language} {n₁ : } {n₂ : } {ξ₁ : Type u_5} {ξ₂ : Type u_6} {b : Fin n₁Fin n₂} {e : ξ₁ξ₂} (hb : Function.Injective b) (hf : Function.Injective e) :
                                                              theorem LO.FirstOrder.Rew.emb.hom_injective {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {o : Type u_5} [e : IsEmpty o] :
                                                              Function.Injective LO.FirstOrder.Rew.emb.hom
                                                              @[simp]
                                                              theorem LO.FirstOrder.Rew.hom_fix_free {L : LO.FirstOrder.Language} {n : } (p : LO.FirstOrder.SyntacticSemiformula L (n + 1)) :
                                                              (LO.FirstOrder.Rew.hom LO.FirstOrder.Rew.fix) ((LO.FirstOrder.Rew.hom LO.FirstOrder.Rew.free) p) = p
                                                              @[simp]
                                                              theorem LO.FirstOrder.Rew.hom_free_fix {L : LO.FirstOrder.Language} {n : } (p : LO.FirstOrder.SyntacticSemiformula L n) :
                                                              (LO.FirstOrder.Rew.hom LO.FirstOrder.Rew.free) ((LO.FirstOrder.Rew.hom LO.FirstOrder.Rew.fix) p) = p
                                                              @[simp]
                                                              theorem LO.FirstOrder.Rew.emb_univClosure {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {o : Type u_5} [e : IsEmpty o] {σ : LO.FirstOrder.Semiformula L o n} :
                                                              LO.FirstOrder.Rew.emb.hom (∀* σ) = ∀* LO.FirstOrder.Rew.emb.hom σ
                                                              @[simp]
                                                              theorem LO.FirstOrder.Rew.eq_top_iff {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {p : LO.FirstOrder.Semiformula L ξ₁ n₁} :
                                                              ω.hom p = p =
                                                              @[simp]
                                                              theorem LO.FirstOrder.Rew.eq_bot_iff {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {p : LO.FirstOrder.Semiformula L ξ₁ n₁} :
                                                              ω.hom p = p =
                                                              theorem LO.FirstOrder.Rew.eq_rel_iff {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {p : LO.FirstOrder.Semiformula L ξ₁ n₁} {k : } {r : L.Rel k} {v : Fin kLO.FirstOrder.Semiterm L ξ₂ n₂} :
                                                              ω.hom p = LO.FirstOrder.Semiformula.rel r v ∃ (v' : Fin kLO.FirstOrder.Semiterm L ξ₁ n₁), ω v' = v p = LO.FirstOrder.Semiformula.rel r v'
                                                              theorem LO.FirstOrder.Rew.eq_nrel_iff {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {p : LO.FirstOrder.Semiformula L ξ₁ n₁} {k : } {r : L.Rel k} {v : Fin kLO.FirstOrder.Semiterm L ξ₂ n₂} :
                                                              ω.hom p = LO.FirstOrder.Semiformula.nrel r v ∃ (v' : Fin kLO.FirstOrder.Semiterm L ξ₁ n₁), ω v' = v p = LO.FirstOrder.Semiformula.nrel r v'
                                                              @[simp]
                                                              theorem LO.FirstOrder.Rew.eq_and_iff {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {p : LO.FirstOrder.Semiformula L ξ₁ n₁} {q₁ : LO.FirstOrder.Semiformula L ξ₂ n₂} {q₂ : LO.FirstOrder.Semiformula L ξ₂ n₂} :
                                                              ω.hom p = q₁ q₂ ∃ (p₁ : LO.FirstOrder.Semiformula L ξ₁ n₁) (p₂ : LO.FirstOrder.Semiformula L ξ₁ n₁), ω.hom p₁ = q₁ ω.hom p₂ = q₂ p = p₁ p₂
                                                              @[simp]
                                                              theorem LO.FirstOrder.Rew.eq_or_iff {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {p : LO.FirstOrder.Semiformula L ξ₁ n₁} {q₁ : LO.FirstOrder.Semiformula L ξ₂ n₂} {q₂ : LO.FirstOrder.Semiformula L ξ₂ n₂} :
                                                              ω.hom p = q₁ q₂ ∃ (p₁ : LO.FirstOrder.Semiformula L ξ₁ n₁) (p₂ : LO.FirstOrder.Semiformula L ξ₁ n₁), ω.hom p₁ = q₁ ω.hom p₂ = q₂ p = p₁ p₂
                                                              theorem LO.FirstOrder.Rew.eq_all_iff {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {p : LO.FirstOrder.Semiformula L ξ₁ n₁} {q : LO.FirstOrder.Semiformula L ξ₂ (n₂ + 1)} :
                                                              ω.hom p = ∀' q ∃ (p' : LO.FirstOrder.Semiformula L ξ₁ (n₁ + 1)), ω.q.hom p' = q p = ∀' p'
                                                              theorem LO.FirstOrder.Rew.eq_ex_iff {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {p : LO.FirstOrder.Semiformula L ξ₁ n₁} {q : LO.FirstOrder.Semiformula L ξ₂ (n₂ + 1)} :
                                                              ω.hom p = ∃' q ∃ (p' : LO.FirstOrder.Semiformula L ξ₁ (n₁ + 1)), ω.q.hom p' = q p = ∃' p'
                                                              @[simp]
                                                              theorem LO.FirstOrder.Rew.eq_neg_iff {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {p : LO.FirstOrder.Semiformula L ξ₁ n₁} {q₁ : LO.FirstOrder.Semiformula L ξ₂ n₂} {q₂ : LO.FirstOrder.Semiformula L ξ₂ n₂} :
                                                              ω.hom p = q₁ q₂ ∃ (p₁ : LO.FirstOrder.Semiformula L ξ₁ n₁) (p₂ : LO.FirstOrder.Semiformula L ξ₁ n₁), ω.hom p₁ = q₁ ω.hom p₂ = q₂ p = p₁ p₂
                                                              theorem LO.FirstOrder.Rew.eq_ball_iff {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {p : LO.FirstOrder.Semiformula L ξ₁ n₁} {q₁ : LO.FirstOrder.Semiformula L ξ₂ (n₂ + 1)} {q₂ : LO.FirstOrder.Semiformula L ξ₂ (n₂ + 1)} :
                                                              (ω.hom p = ∀[q₁] q₂) ∃ (p₁ : LO.FirstOrder.Semiformula L ξ₁ (n₁ + 1)) (p₂ : LO.FirstOrder.Semiformula L ξ₁ (n₁ + 1)), ω.q.hom p₁ = q₁ ω.q.hom p₂ = q₂ p = ∀[p₁] p₂
                                                              theorem LO.FirstOrder.Rew.eq_bex_iff {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {p : LO.FirstOrder.Semiformula L ξ₁ n₁} {q₁ : LO.FirstOrder.Semiformula L ξ₂ (n₂ + 1)} {q₂ : LO.FirstOrder.Semiformula L ξ₂ (n₂ + 1)} :
                                                              (ω.hom p = ∃[q₁] q₂) ∃ (p₁ : LO.FirstOrder.Semiformula L ξ₁ (n₁ + 1)) (p₂ : LO.FirstOrder.Semiformula L ξ₁ (n₁ + 1)), ω.q.hom p₁ = q₁ ω.q.hom p₂ = q₂ p = ∃[p₁] p₂
                                                              theorem LO.FirstOrder.Rew.eq_hom_rewriteMap_of_funEqOn_fv {L : LO.FirstOrder.Language} {ξ₁ : Type u_5} {ξ₂ : Type u_6} {n₁ : } {n₂ : } [DecidableEq ξ₁] (p : LO.FirstOrder.Semiformula L ξ₁ n₁) (f : ξ₁LO.FirstOrder.Semiterm L ξ₂ n₂) (g : ξ₁LO.FirstOrder.Semiterm L ξ₂ n₂) (h : Function.funEqOn (fun (x : ξ₁) => x p.fv) f g) :
                                                              Equations
                                                              • One or more equations did not get rendered due to their size.
                                                              Instances For
                                                                @[reducible, inline]
                                                                Equations
                                                                • σ = LO.FirstOrder.Rew.emb.hom σ
                                                                Instances For
                                                                  Equations
                                                                  • LO.FirstOrder.Semiformula.instCoeSemisentenceSyntacticSemiformula = { coe := LO.FirstOrder.Semiformula.embedding }
                                                                  theorem LO.FirstOrder.Semiformula.coe_substs_eq_substs_coe {L : LO.FirstOrder.Language} {n : } {k : } (σ : LO.FirstOrder.Semisentence L k) (v : Fin kLO.FirstOrder.Semiterm L Empty n) :
                                                                  ((LO.FirstOrder.Rew.substs v).hom σ) = (LO.FirstOrder.Rew.substs fun (x : Fin k) => LO.FirstOrder.Rew.emb (v x)).hom σ
                                                                  Equations
                                                                  • LO.FirstOrder.Semiformula.shiftEmb = { toFun := (LO.FirstOrder.Rew.hom LO.FirstOrder.Rew.shift), inj' := }
                                                                  Instances For
                                                                    theorem LO.FirstOrder.Semiformula.shiftEmb_eq_shift {L : LO.FirstOrder.Language} {n : } (p : LO.FirstOrder.SyntacticSemiformula L n) :
                                                                    LO.FirstOrder.Semiformula.shiftEmb p = (LO.FirstOrder.Rew.hom LO.FirstOrder.Rew.shift) p
                                                                    @[irreducible]
                                                                    def LO.FirstOrder.Semiformula.formulaRec {L : LO.FirstOrder.Language} {C : LO.FirstOrder.SyntacticFormula LSort u_3} (hverum : C ) (hfalsum : C ) (hrel : {l : } → (r : L.Rel l) → (v : Fin lLO.FirstOrder.SyntacticTerm L) → C (LO.FirstOrder.Semiformula.rel r v)) (hnrel : {l : } → (r : L.Rel l) → (v : Fin lLO.FirstOrder.SyntacticTerm L) → C (LO.FirstOrder.Semiformula.nrel r v)) (hand : (p q : LO.FirstOrder.SyntacticFormula L) → C pC qC (p q)) (hor : (p q : LO.FirstOrder.SyntacticFormula L) → C pC qC (p q)) (hall : (p : LO.FirstOrder.SyntacticSemiformula L 1) → C ((LO.FirstOrder.Rew.hom LO.FirstOrder.Rew.free) p)C (∀' p)) (hex : (p : LO.FirstOrder.SyntacticSemiformula L 1) → C ((LO.FirstOrder.Rew.hom LO.FirstOrder.Rew.free) p)C (∃' p)) (p : LO.FirstOrder.SyntacticFormula L) :
                                                                    C p
                                                                    Equations
                                                                    Instances For
                                                                      theorem LO.FirstOrder.Semiformula.fvar?_bind {L : LO.FirstOrder.Language} {n₁ : } {n₂ : } {ξ₁ : Type u_2} {ξ₂ : Type u_3} {p : LO.FirstOrder.Semiformula L ξ₁ n₁} {b : Fin n₁LO.FirstOrder.Semiterm L ξ₂ n₂} {f : ξ₁LO.FirstOrder.Semiterm L ξ₂ n₂} {x : ξ₂} (h : ((LO.FirstOrder.Rew.bind b f).hom p).fvar? x) :
                                                                      (∃ (z : Fin n₁), (b z).fvar? x) ∃ (z : ξ₁), p.fvar? z (f z).fvar? x
                                                                      @[simp]
                                                                      theorem LO.FirstOrder.Semiformula.fvarList_emb {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {o : Type u_2} [IsEmpty o] (p : LO.FirstOrder.Semiformula L o n) :
                                                                      (LO.FirstOrder.Rew.emb.hom p).fvarList = []
                                                                      theorem LO.FirstOrder.Semiformula.rew_eq_of_funEqOn {L : LO.FirstOrder.Language} {n₁ : } {n₂ : } {ξ₁ : Type u_2} {ξ₂ : Type u_3} {ω₁ : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂} {ω₂ : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂} {p : LO.FirstOrder.Semiformula L ξ₁ n₁} (hb : ∀ (x : Fin n₁), ω₁ (LO.FirstOrder.Semiterm.bvar x) = ω₂ (LO.FirstOrder.Semiterm.bvar x)) (hf : Function.funEqOn p.fvar? (ω₁ LO.FirstOrder.Semiterm.fvar) (ω₂ LO.FirstOrder.Semiterm.fvar)) :
                                                                      ω₁.hom p = ω₂.hom p
                                                                      theorem LO.FirstOrder.Semiformula.rew_eq_of_funEqOn₀ {L : LO.FirstOrder.Language} {n₂ : } {ξ₁ : Type u_2} {ξ₂ : Type u_3} {ω₁ : LO.FirstOrder.Rew L ξ₁ 0 ξ₂ n₂} {ω₂ : LO.FirstOrder.Rew L ξ₁ 0 ξ₂ n₂} {p : LO.FirstOrder.Semiformula L ξ₁ 0} (hf : Function.funEqOn p.fvar? (ω₁ LO.FirstOrder.Semiterm.fvar) (ω₂ LO.FirstOrder.Semiterm.fvar)) :
                                                                      ω₁.hom p = ω₂.hom p
                                                                      theorem LO.FirstOrder.Semiformula.rew_eq_self_of {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {ω : LO.FirstOrder.Rew L ξ n ξ n} {p : LO.FirstOrder.Semiformula L ξ n} (hb : ∀ (x : Fin n), ω (LO.FirstOrder.Semiterm.bvar x) = LO.FirstOrder.Semiterm.bvar x) (hf : ∀ (x : ξ), p.fvar? xω (LO.FirstOrder.Semiterm.fvar x) = LO.FirstOrder.Semiterm.fvar x) :
                                                                      ω.hom p = p
                                                                      @[simp]
                                                                      theorem LO.FirstOrder.Semiformula.upper_sentence {L : LO.FirstOrder.Language} {n : } (σ : LO.FirstOrder.Semisentence L n) :
                                                                      (LO.FirstOrder.Rew.embs.hom σ).upper = 0
                                                                      Equations
                                                                      Instances For
                                                                        @[simp]
                                                                        theorem LO.FirstOrder.Semiformula.emb_toEmpty {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ n) (hp : p.fvarList = []) :
                                                                        LO.FirstOrder.Rew.emb.hom (p.toEmpty hp) = p
                                                                        @[simp]
                                                                        theorem LO.FirstOrder.Semiformula.toEmpty_verum {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } :
                                                                        .toEmpty =
                                                                        @[simp]
                                                                        @[simp]
                                                                        theorem LO.FirstOrder.Semiformula.toEmpty_and {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) (h : (p q).fvarList = []) :
                                                                        (p q).toEmpty h = p.toEmpty q.toEmpty
                                                                        @[simp]
                                                                        theorem LO.FirstOrder.Semiformula.toEmpty_or {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ n) (q : LO.FirstOrder.Semiformula L ξ n) (h : (p q).fvarList = []) :
                                                                        (p q).toEmpty h = p.toEmpty q.toEmpty
                                                                        @[simp]
                                                                        theorem LO.FirstOrder.Semiformula.toEmpty_all {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ (n + 1)) (h : (∀' p).fvarList = []) :
                                                                        (∀' p).toEmpty h = ∀' p.toEmpty h
                                                                        @[simp]
                                                                        theorem LO.FirstOrder.Semiformula.toEmpty_ex {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } (p : LO.FirstOrder.Semiformula L ξ (n + 1)) (h : (∃' p).fvarList = []) :
                                                                        (∃' p).toEmpty h = ∃' p.toEmpty h
                                                                        theorem LO.FirstOrder.Semiformula.lMap_bind {n₁ : } {n₂ : } {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {Φ : L₁.Hom L₂} {ξ₂ : Type u_3} {ξ₁ : Type u_4} (b : Fin n₁LO.FirstOrder.Semiterm L₁ ξ₂ n₂) (e : ξ₁LO.FirstOrder.Semiterm L₁ ξ₂ n₂) (p : LO.FirstOrder.Semiformula L₁ ξ₁ n₁) :
                                                                        theorem LO.FirstOrder.Semiformula.lMap_map {n₁ : } {n₂ : } {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {Φ : L₁.Hom L₂} {ξ₁ : Type u_3} {ξ₂ : Type u_4} (b : Fin n₁Fin n₂) (e : ξ₁ξ₂) (p : LO.FirstOrder.Semiformula L₁ ξ₁ n₁) :
                                                                        theorem LO.FirstOrder.Semiformula.lMap_emb {n : } {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {ξ : Type u_2} {Φ : L₁.Hom L₂} {o : Type u_3} [IsEmpty o] (p : LO.FirstOrder.Semiformula L₁ o n) :
                                                                        (LO.FirstOrder.Semiformula.lMap Φ) (LO.FirstOrder.Rew.emb.hom p) = LO.FirstOrder.Rew.emb.hom ((LO.FirstOrder.Semiformula.lMap Φ) p)
                                                                        theorem LO.FirstOrder.Semiformula.lMap_toS {n : } {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {Φ : L₁.Hom L₂} (p : LO.FirstOrder.Semiformula L₁ (Fin n) 0) :
                                                                        (LO.FirstOrder.Semiformula.lMap Φ) (LO.FirstOrder.Rew.toS.hom p) = LO.FirstOrder.Rew.toS.hom ((LO.FirstOrder.Semiformula.lMap Φ) p)
                                                                        theorem LO.FirstOrder.Semiformula.lMap_rewriteMap {n : } {L₁ : LO.FirstOrder.Language} {L₂ : LO.FirstOrder.Language} {Φ : L₁.Hom L₂} {ξ₁ : Type u_3} {ξ₂ : Type u_4} (p : LO.FirstOrder.Semiformula L₁ ξ₁ n) (f : ξ₁ξ₂) :
                                                                        theorem LO.FirstOrder.Semiformula.free_rewrite_eq {L : LO.FirstOrder.Language} (f : LO.FirstOrder.SyntacticTerm L) (p : LO.FirstOrder.SyntacticSemiformula L 1) :
                                                                        (LO.FirstOrder.Rew.hom LO.FirstOrder.Rew.free) ((LO.FirstOrder.Rew.rewrite fun (x : ) => LO.FirstOrder.Rew.bShift (f x)).hom p) = (LO.FirstOrder.Rew.rewrite (LO.FirstOrder.Semiterm.fvar 0 :>ₙ fun (x : ) => LO.FirstOrder.Rew.shift (f x))).hom ((LO.FirstOrder.Rew.hom LO.FirstOrder.Rew.free) p)
                                                                        @[simp]
                                                                        theorem LO.FirstOrder.Formula.fvUnivClosure_sentence {ξ : Type u_1} {L : LO.FirstOrder.Language} [h : IsEmpty ξ] [DecidableEq ξ] (σ : LO.FirstOrder.Formula L ξ) :
                                                                        ∀ᶠ* σ = ∀' LO.FirstOrder.Rew.empty.hom σ
                                                                        theorem LO.FirstOrder.Formula.univClosure_rew_eq_of_eq {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {n₁ : } {ξ₂ : Type u_3} {n₂ : } {n₂' : } (p : LO.FirstOrder.Semiformula L ξ₁ n₁) (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) (ω' : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂') (eq : n₂ = n₂') (H : ω = (LO.FirstOrder.Rew.castLE ).comp ω') :
                                                                        ∀* ω.hom p = ∀* ω'.hom p
                                                                        @[simp]
                                                                        theorem LO.FirstOrder.Rew.open_iff {L : LO.FirstOrder.Language} {ξ₁ : Type u_2} {ξ₂ : Type u_3} {n₁ : } {n₂ : } (ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂) {p : LO.FirstOrder.Semiformula L ξ₁ n₁} :
                                                                        (ω.hom p).Open p.Open