Documentation

Foundation.Logic.Predicate.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
    @[reducible, inline]
    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₁ 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₁ t₂ 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₂) (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₂} (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
                                        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 g : ξ₁LO.FirstOrder.Semiterm L ξ₂ n₂) (h : Function.funEqOn t.FVar? 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]
                                            @[simp]
                                            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.freeVariables_emb {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } {ο : Type u_6} [IsEmpty ο] [DecidableEq ξ] {t : LO.FirstOrder.Semiterm L ο n} :
                                                      (LO.FirstOrder.Rew.emb t).freeVariables =
                                                      theorem LO.FirstOrder.Semiterm.rew_eq_of_funEqOn {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ n₂ : } [DecidableEq ξ₁] (ω₁ ω₂ : 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?_rew {L : LO.FirstOrder.Language} {ξ₁ : Type u_3} {ξ₂ : Type u_4} {n₁ n₂ : } [DecidableEq ξ₁] [DecidableEq ξ₂] {ω : LO.FirstOrder.Rew L ξ₁ n₁ ξ₂ n₂} {t : LO.FirstOrder.Semiterm L ξ₁ n₁} {x : ξ₂} :
                                                      (ω t).FVar? x(∃ (i : Fin n₁), (ω (LO.FirstOrder.Semiterm.bvar i)).FVar? x) ∃ (z : ξ₁), t.FVar? z (ω (LO.FirstOrder.Semiterm.fvar z)).FVar? x
                                                      @[simp]
                                                      theorem LO.FirstOrder.Semiterm.fvar?_bShift {L : LO.FirstOrder.Language} {ξ : Type u_1} {n : } [DecidableEq ξ] {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 : } [DecidableEq ξ] (t : LO.FirstOrder.Semiterm L ξ n) (ht : t.freeVariables = ) :
                                                        LO.FirstOrder.Rew.emb (t.toEmpty ht) = t

                                                        Rewriting system of formulae #

                                                        class LO.FirstOrder.FreeVar (ξ : outParam (Type u_1)) (F : Type u_2) :
                                                          Instances
                                                            class LO.FirstOrder.Rewriting (L : outParam LO.FirstOrder.Language) (ξ : outParam (Type u_1)) (F : Type u_2) (ζ : Type u_3) (G : outParam (Type u_4)) [LO.LCWQ F] [LO.LCWQ G] :
                                                            Type (max (max (max (max u_1 u_2) u_3) u_4) u_5)
                                                            Instances
                                                              @[reducible, inline]
                                                              abbrev LO.FirstOrder.SyntacticRewriting (L : outParam LO.FirstOrder.Language) (F : Type u_1) (G : outParam (Type u_2)) [LO.LCWQ F] [LO.LCWQ G] :
                                                              Type (max (max u_1 u_2) u_3)
                                                              Equations
                                                              Instances For
                                                                Equations
                                                                • One or more equations did not get rendered due to their size.
                                                                Instances For
                                                                  theorem LO.FirstOrder.Rewriting.smul_ext' {F : Type u_5} {G : Type u_4} {L : LO.FirstOrder.Language} {ξ : Type u_1} {ζ : Type u_2} [LO.LCWQ F] [LO.LCWQ G] [LO.FirstOrder.Rewriting L ξ F ζ G] {n₁ n₂ : } {ω₁ ω₂ : LO.FirstOrder.Rew L ξ n₁ ζ n₂} (h : ω₁ = ω₂) {φ : F n₁} :
                                                                  @[simp]
                                                                  theorem LO.FirstOrder.Rewriting.smul_ball {F : Type u_5} {G : Type u_4} {L : LO.FirstOrder.Language} {ξ : Type u_1} {ζ : Type u_2} [LO.LCWQ F] [LO.LCWQ G] [LO.FirstOrder.Rewriting L ξ F ζ G] {n₁ n₂ : } (ω : LO.FirstOrder.Rew L ξ n₁ ζ n₂) (φ ψ : F (n₁ + 1)) :
                                                                  @[simp]
                                                                  theorem LO.FirstOrder.Rewriting.smul_bex {F : Type u_5} {G : Type u_4} {L : LO.FirstOrder.Language} {ξ : Type u_1} {ζ : Type u_2} [LO.LCWQ F] [LO.LCWQ G] [LO.FirstOrder.Rewriting L ξ F ζ G] {n₁ n₂ : } (ω : LO.FirstOrder.Rew L ξ n₁ ζ n₂) (φ ψ : F (n₁ + 1)) :
                                                                  @[reducible, inline]
                                                                  abbrev LO.FirstOrder.Rewriting.substitute {F : Type u_1} {L : LO.FirstOrder.Language} {ξ : Type u_3} [LO.LCWQ F] {n₁ n₂ : } [LO.FirstOrder.Rewriting L ξ F ξ F] (φ : F n₁) (w : Fin n₁LO.FirstOrder.Semiterm L ξ n₂) :
                                                                  F n₂
                                                                  Equations
                                                                  Instances For
                                                                    Equations
                                                                    • One or more equations did not get rendered due to their size.
                                                                    Instances For
                                                                      @[reducible, inline]
                                                                      abbrev LO.FirstOrder.Rewriting.shift {F : Type u_1} {L : LO.FirstOrder.Language} [LO.LCWQ F] {n : } [LO.FirstOrder.Rewriting L F F] (φ : F n) :
                                                                      F n
                                                                      Equations
                                                                      Instances For
                                                                        @[reducible, inline]
                                                                        abbrev LO.FirstOrder.Rewriting.free {F : Type u_1} {L : LO.FirstOrder.Language} [LO.LCWQ F] {n : } [LO.FirstOrder.Rewriting L F F] (φ : F (n + 1)) :
                                                                        F n
                                                                        Equations
                                                                        Instances For
                                                                          @[reducible, inline]
                                                                          abbrev LO.FirstOrder.Rewriting.fix {F : Type u_1} {L : LO.FirstOrder.Language} [LO.LCWQ F] {n : } [LO.FirstOrder.Rewriting L F F] (φ : F n) :
                                                                          F (n + 1)
                                                                          Equations
                                                                          Instances For
                                                                            def LO.FirstOrder.Rewriting.shifts {F : Type u_1} {L : LO.FirstOrder.Language} [LO.LCWQ F] {n : } [LO.FirstOrder.Rewriting L F F] (Γ : List (F n)) :
                                                                            List (F n)
                                                                            Equations
                                                                            Instances For
                                                                              @[reducible, inline]
                                                                              abbrev LO.FirstOrder.Rewriting.embedding {L : LO.FirstOrder.Language} {n : } {ο : Type u_4} {ξ : Type u_5} [IsEmpty ο] {O : Type u_1} {F : Type u_2} [LO.LCWQ O] [LO.LCWQ F] [LO.FirstOrder.Rewriting L ο O ξ F] (φ : O n) :
                                                                              F n
                                                                              Equations
                                                                              Instances For
                                                                                Equations
                                                                                • One or more equations did not get rendered due to their size.
                                                                                Instances For
                                                                                  Equations
                                                                                  • One or more equations did not get rendered due to their size.
                                                                                  Instances For
                                                                                    Instances
                                                                                      class LO.FirstOrder.TransitiveRewriting (L : outParam LO.FirstOrder.Language) (ξ₁ : outParam (Type u_1)) (F₁ : Type u_2) (ξ₂ : Type u_3) (F₂ : outParam (Type u_4)) (ξ₃ : Type u_5) (F₃ : outParam (Type u_6)) [LO.LCWQ F₁] [LO.LCWQ F₂] [LO.LCWQ F₃] [LO.FirstOrder.Rewriting L ξ₁ F₁ ξ₂ F₂] [LO.FirstOrder.Rewriting L ξ₂ F₂ ξ₃ F₃] [LO.FirstOrder.Rewriting L ξ₁ F₁ ξ₃ F₃] :
                                                                                      Instances
                                                                                        class LO.FirstOrder.InjMapRewriting (L : outParam LO.FirstOrder.Language) (ξ : outParam (Type u_1)) (F : Type u_2) (ζ : Type u_3) (G : outParam (Type u_4)) [LO.LCWQ F] [LO.LCWQ G] [LO.FirstOrder.Rewriting L ξ F ζ G] :
                                                                                        Instances
                                                                                          Instances
                                                                                            Equations
                                                                                            • LO.FirstOrder.LawfulSyntacticRewriting.shiftEmb = { toFun := LO.FirstOrder.Rewriting.shift, inj' := }
                                                                                            Instances For
                                                                                              theorem LO.FirstOrder.Rewriting.embedding_injective {ο : Type u_1} {ξ : Type u_2} [IsEmpty ο] {O : Type u_3} {F : Type u_4} [LO.LCWQ O] [LO.LCWQ F] {L : LO.FirstOrder.Language} {n : } [LO.FirstOrder.Rewriting L ο O ξ F] [LO.FirstOrder.InjMapRewriting L ο O ξ F] :
                                                                                              Function.Injective fun (φ : O n) => φ
                                                                                              @[simp]
                                                                                              theorem LO.FirstOrder.Rewriting.emb_univClosure {ο : Type u_1} {ξ : Type u_2} [IsEmpty ο] {O : Type u_3} {F : Type u_4} [LO.LCWQ O] [LO.LCWQ F] {L : LO.FirstOrder.Language} {n : } [LO.FirstOrder.Rewriting L ο O ξ F] {σ : O n} :
                                                                                              (∀* σ) = ∀* σ
                                                                                              theorem LO.FirstOrder.Rewriting.embedding_substitute_eq_substitute_embedding {ο : Type u_1} {ξ : Type u_2} [IsEmpty ο] {O : Type u_3} {F : Type u_4} [LO.LCWQ O] [LO.LCWQ F] {L : LO.FirstOrder.Language} {k n : } [LO.FirstOrder.Rewriting L ο O ο O] [LO.FirstOrder.Rewriting L ο O ξ F] [LO.FirstOrder.Rewriting L ξ F ξ F] [LO.FirstOrder.TransitiveRewriting L ο O ο O ξ F] [LO.FirstOrder.TransitiveRewriting L ο O ξ F ξ F] (φ : O k) (v : Fin kLO.FirstOrder.Semiterm L ο n) :
                                                                                              (φ v) = φ fun (i : Fin k) => LO.FirstOrder.Rew.emb (v i)

                                                                                              coe_substs_eq_substs_coe

                                                                                              theorem LO.FirstOrder.Rewriting.embedding_substs_eq_substs_coe₁ {ο : Type u_1} {ξ : Type u_2} [IsEmpty ο] {O : Type u_3} {F : Type u_4} [LO.LCWQ O] [LO.LCWQ F] {L : LO.FirstOrder.Language} {n : } [LO.FirstOrder.Rewriting L ο O ο O] [LO.FirstOrder.Rewriting L ο O ξ F] [LO.FirstOrder.Rewriting L ξ F ξ F] [LO.FirstOrder.TransitiveRewriting L ο O ο O ξ F] [LO.FirstOrder.TransitiveRewriting L ο O ξ F ξ F] (φ : O 1) (t : LO.FirstOrder.Semiterm L ο n) :
                                                                                              (φ/[t]) = φ/[LO.FirstOrder.Rew.emb t]

                                                                                              coe_substs_eq_substs_coe₁

                                                                                              @[simp]
                                                                                              theorem LO.FirstOrder.Rewriting.shifts_emb {L : LO.FirstOrder.Language} {ο : Type u_1} [IsEmpty ο] {O : Type u_3} {F : Type u_4} [LO.LCWQ O] [LO.LCWQ F] {n : } [LO.FirstOrder.Rewriting L ο O F] [LO.FirstOrder.Rewriting L F F] [LO.FirstOrder.TransitiveRewriting L ο O F F] (Γ : List (O n)) :
                                                                                              LO.FirstOrder.Rewriting.shifts (List.map LO.FirstOrder.Rewriting.embedding Γ) = List.map LO.FirstOrder.Rewriting.embedding Γ