Documentation

Foundation.FirstOrder.Syntax.Classical.Operator

Instances For
    def FFL.FirstOrder.Semiterm.Operator.operator {L : Language} {ξ : Type u_2} {n arity : ℕ} (o : Operator L arity) (v : Fin arity → Semiterm L ξ n) :
    Semiterm L ξ n
    Equations
    Instances For
      @[reducible, inline]
      abbrev FFL.FirstOrder.Semiterm.Operator.const {L : Language} {ξ : Type u_2} {n : ℕ} (c : Const L) :
      Semiterm L ξ n
      Equations
      Instances For
        def FFL.FirstOrder.Semiterm.Operator.comp {L : Language} {k l : ℕ} (o : Operator L k) (w : Fin k → Operator L l) :
        Equations
        Instances For
          @[simp]
          theorem FFL.FirstOrder.Semiterm.Operator.operator_comp {L : Language} {k l : ℕ} {ξ : Type u_1} {n : ℕ} (o : Operator L k) (w : Fin k → Operator L l) (v : Fin l → Semiterm L ξ n) :
          (o.comp w).operator v = o.operator fun (x : Fin k) => (w x).operator v
          theorem FFL.FirstOrder.Semiterm.Operator.operator_bvar {L : Language} {k : ℕ} {ξ : Type u_1} {n : ℕ} (x : Fin k) (v : Fin k → Semiterm L ξ n) :
          (bvar x).operator v = v x
          theorem FFL.FirstOrder.Semiterm.Operator.bv_operator {L : Language} {ξ : Type u_1} {n k : ℕ} (o : Operator L k) (v : Fin k → Semiterm L ξ (n + 1)) :
          (o.operator v).bv = (bv o.term).biUnion fun (i : Fin k) => (v i).bv
          theorem FFL.FirstOrder.Semiterm.Operator.positive_operator_iff {L : Language} {ξ : Type u_1} {n k : ℕ} {o : Operator L k} {v : Fin k → Semiterm L ξ (n + 1)} :
          (o.operator v).Positive ↔ ∀ i ∈ bv o.term, (v i).Positive
          @[simp]
          theorem FFL.FirstOrder.Semiterm.Operator.positive_const {L : Language} {ξ : Type u_1} {n : ℕ} (c : Const L) :
          (↑c).Positive
          def FFL.FirstOrder.Semiterm.Operator.foldr {L : Language} {k : ℕ} (f : Operator L 2) (z : Operator L k) :
          List (Operator L k) → Operator L k
          Equations
          Instances For
            @[simp]
            theorem FFL.FirstOrder.Semiterm.Operator.foldr_nil {L : Language} {k : ℕ} (f : Operator L 2) (z : Operator L k) :
            f.foldr z [] = z
            @[simp]
            theorem FFL.FirstOrder.Semiterm.Operator.operator_foldr_cons {L : Language} {k : ℕ} {ξ : Type u_1} {n : ℕ} (f : Operator L 2) (z o : Operator L k) (os : List (Operator L k)) (v : Fin k → Semiterm L ξ n) :
            (f.foldr z (o :: os)).operator v = f.operator ![(f.foldr z os).operator v, o.operator v]
            @[simp]
            class FFL.FirstOrder.Semiterm.Operator.GödelNumber (L : Language) (α : Type u_1) :
            Type (max u_1 u_2)
            • gödelNumber : α → Const L
            Instances
              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
                  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
                      @[simp]
                      @[simp]
                      @[simp]
                      @[simp]
                      theorem FFL.FirstOrder.Semiterm.Operator.npow_positive_iff {L : Language} {ξ : Type u_1} {n : ℕ} [Operator.One L] [L.Mul] (t : Semiterm L ξ (n + 1)) (k : ℕ) :
                      @[simp]
                      theorem FFL.FirstOrder.Semiterm.complexity_zero {L : Language} {ξ : Type u_1} {n : ℕ} [L.Zero] :
                      @[simp]
                      theorem FFL.FirstOrder.Semiterm.complexity_one {L : Language} {ξ : Type u_1} {n : ℕ} [L.One] :
                      @[simp]
                      @[simp]
                      Instances For
                        def FFL.FirstOrder.Semiformula.Operator.operator {L : Language} {ξ : Type u_2} {n arity : ℕ} (o : Operator L arity) (v : Fin arity → Semiterm L ξ n) :
                        Equations
                        Instances For
                          class FFL.FirstOrder.Semiformula.Operator.SymbolLike {L : Language} {k : ℕ} (o : Operator L k) (ξ₁ : Type u_1) (ξ₂ : Type u_2) :

                          Auxiliary condition for this formalization: rewriting to an application of o recovers an application of o whose arguments rewrite to the given ones.

                          Instances
                            Equations
                            Instances For
                              theorem FFL.FirstOrder.Semiformula.Operator.operator_comp {L : Language} {k l : ℕ} {ξ : Type u_1} {n : ℕ} (o : Operator L k) (w : Fin k → Semiterm.Operator L l) (v : Fin l → Semiterm L ξ n) :
                              (o.comp w).operator v = o.operator fun (x : Fin k) => (w x).operator v
                              Equations
                              Instances For
                                Equations
                                Instances For
                                  @[simp]
                                  theorem FFL.FirstOrder.Semiformula.Operator.operator_and {L : Language} {k : ℕ} {ξ : Type u_1} {n : ℕ} (o₁ o₂ : Operator L k) (v : Fin k → Semiterm L ξ n) :
                                  (o₁.and o₂).operator v = o₁.operator v ⋏ o₂.operator v
                                  @[simp]
                                  theorem FFL.FirstOrder.Semiformula.Operator.operator_or {L : Language} {k : ℕ} {ξ : Type u_1} {n : ℕ} (o₁ o₂ : Operator L k) (v : Fin k → Semiterm L ξ n) :
                                  (o₁.or o₂).operator v = o₁.operator v ⋎ o₂.operator v
                                  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
                                      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
                                          @[simp]
                                          theorem FFL.FirstOrder.Semiformula.Operator.Eq.equal_inj {L : Language} {ξ₂ : Type u_1} {n₂ : ℕ} [L.Eq] {t₁ t₂ u₁ u₂ : Semiterm L ξ₂ n₂} :
                                          op(=).operator ![t₁, u₁] = op(=).operator ![t₂, u₂] ↔ t₁ = t₂ ∧ u₁ = u₂
                                          @[simp]
                                          theorem FFL.FirstOrder.Semiformula.Operator.LT.lt_inj {L : Language} {ξ₂ : Type u_1} {n₂ : ℕ} [L.LT] {t₁ t₂ u₁ u₂ : Semiterm L ξ₂ n₂} :
                                          op(<).operator ![t₁, u₁] = op(<).operator ![t₂, u₂] ↔ t₁ = t₂ ∧ u₁ = u₂
                                          @[simp]
                                          theorem FFL.FirstOrder.Semiformula.Operator.Mem.mem_inj {L : Language} {ξ₂ : Type u_1} {n₂ : ℕ} [L.Mem] {t₁ t₂ u₁ u₂ : Semiterm L ξ₂ n₂} :
                                          op(∈).operator ![t₁, u₁] = op(∈).operator ![t₂, u₂] ↔ t₁ = t₂ ∧ u₁ = u₂
                                          @[simp]
                                          theorem FFL.FirstOrder.Semiformula.Operator.LE.le_inj {L : Language} {ξ₂ : Type u_1} {n₂ : ℕ} [L.Eq] [L.LT] {t₁ t₂ u₁ u₂ : Semiterm L ξ₂ n₂} :
                                          op(≤).operator ![t₁, u₁] = op(≤).operator ![t₂, u₂] ↔ t₁ = t₂ ∧ u₁ = u₂
                                          @[simp]
                                          theorem FFL.FirstOrder.Semiformula.Operator.Eq.open {L : Language} {ξ : Type u_1} {n : ℕ} [L.Eq] (t u : Semiterm L ξ n) :
                                          @[simp]
                                          theorem FFL.FirstOrder.Semiformula.Operator.LT.open {L : Language} {ξ : Type u_1} {n : ℕ} [L.LT] (t u : Semiterm L ξ n) :
                                          @[simp]
                                          theorem FFL.FirstOrder.Semiformula.Operator.Mem.open {L : Language} {ξ : Type u_1} {n : ℕ} [L.Mem] (t u : Semiterm L ξ n) :
                                          @[simp]
                                          theorem FFL.FirstOrder.Semiformula.Operator.LE.open {L : Language} {ξ : Type u_1} {n : ℕ} [L.Eq] [L.LT] (t u : Semiterm L ξ n) :
                                          theorem FFL.FirstOrder.Rew.operator {ξ₁ : Type u_1} {n₁ : ℕ} {ξ₂ : Type u_2} {n₂ : ℕ} {L : Language} (ω : Rew L ξ₁ n₁ ξ₂ n₂) {k : ℕ} (o : Semiterm.Operator L k) (v : Fin k → Semiterm L ξ₁ n₁) :
                                          ω (o.operator v) = o.operator fun (i : Fin k) => ω (v i)
                                          theorem FFL.FirstOrder.Rew.operator' {ξ₁ : Type u_1} {n₁ : ℕ} {ξ₂ : Type u_2} {n₂ : ℕ} {L : Language} (ω : Rew L ξ₁ n₁ ξ₂ n₂) {k : ℕ} (o : Semiterm.Operator L k) (v : Fin k → Semiterm L ξ₁ n₁) :
                                          ω (o.operator v) = o.operator (⇑ω ∘ v)
                                          @[simp]
                                          theorem FFL.FirstOrder.Rew.finitary0 {ξ₁ : Type u_1} {n₁ : ℕ} {ξ₂ : Type u_2} {n₂ : ℕ} {L : Language} (ω : Rew L ξ₁ n₁ ξ₂ n₂) (o : Semiterm.Operator L 0) (v : Fin 0 → Semiterm L ξ₁ n₁) :
                                          ω (o.operator v) = o.operator ![]
                                          @[simp]
                                          theorem FFL.FirstOrder.Rew.finitary1 {ξ₁ : Type u_1} {n₁ : ℕ} {ξ₂ : Type u_2} {n₂ : ℕ} {L : Language} (ω : Rew L ξ₁ n₁ ξ₂ n₂) (o : Semiterm.Operator L 1) (t : Semiterm L ξ₁ n₁) :
                                          ω (o.operator ![t]) = o.operator ![ω t]
                                          @[simp]
                                          theorem FFL.FirstOrder.Rew.finitary2 {ξ₁ : Type u_1} {n₁ : ℕ} {ξ₂ : Type u_2} {n₂ : ℕ} {L : Language} (ω : Rew L ξ₁ n₁ ξ₂ n₂) (o : Semiterm.Operator L 2) (t₁ t₂ : Semiterm L ξ₁ n₁) :
                                          ω (o.operator ![t₁, t₂]) = o.operator ![ω t₁, ω t₂]
                                          @[simp]
                                          theorem FFL.FirstOrder.Rew.finitary3 {ξ₁ : Type u_1} {n₁ : ℕ} {ξ₂ : Type u_2} {n₂ : ℕ} {L : Language} (ω : Rew L ξ₁ n₁ ξ₂ n₂) (o : Semiterm.Operator L 3) (t₁ t₂ t₃ : Semiterm L ξ₁ n₁) :
                                          ω (o.operator ![t₁, t₂, t₃]) = o.operator ![ω t₁, ω t₂, ω t₃]
                                          @[simp]
                                          theorem FFL.FirstOrder.Rew.const {ξ₁ : Type u_2} {n₁ : ℕ} {ξ₂ : Type u_1} {n₂ : ℕ} {L : Language} (ω : Rew L ξ₁ n₁ ξ₂ n₂) (c : Semiterm.Const L) :
                                          ω ↑c = ↑c
                                          theorem FFL.FirstOrder.Rew.hom_operator {ξ₁ : Type u_1} {n₁ : ℕ} {ξ₂ : Type u_2} {n₂ : ℕ} {L : Language} (ω : Rew L ξ₁ n₁ ξ₂ n₂) {k : ℕ} (o : Semiformula.Operator L k) (v : Fin k → Semiterm L ξ₁ n₁) :
                                          (Rewriting.app ω) (o.operator v) = o.operator fun (i : Fin k) => ω (v i)
                                          theorem FFL.FirstOrder.Rew.hom_operator' {ξ₁ : Type u_1} {n₁ : ℕ} {ξ₂ : Type u_2} {n₂ : ℕ} {L : Language} (ω : Rew L ξ₁ n₁ ξ₂ n₂) {k : ℕ} (o : Semiformula.Operator L k) (v : Fin k → Semiterm L ξ₁ n₁) :
                                          (Rewriting.app ω) (o.operator v) = o.operator (⇑ω ∘ v)
                                          @[simp]
                                          theorem FFL.FirstOrder.Rew.hom_finitary0 {ξ₁ : Type u_1} {n₁ : ℕ} {ξ₂ : Type u_2} {n₂ : ℕ} {L : Language} (ω : Rew L ξ₁ n₁ ξ₂ n₂) (o : Semiformula.Operator L 0) (v : Fin 0 → Semiterm L ξ₁ n₁) :
                                          @[simp]
                                          theorem FFL.FirstOrder.Rew.hom_finitary1 {ξ₁ : Type u_1} {n₁ : ℕ} {ξ₂ : Type u_2} {n₂ : ℕ} {L : Language} (ω : Rew L ξ₁ n₁ ξ₂ n₂) (o : Semiformula.Operator L 1) (t : Semiterm L ξ₁ n₁) :
                                          @[simp]
                                          theorem FFL.FirstOrder.Rew.hom_finitary2 {ξ₁ : Type u_1} {n₁ : ℕ} {ξ₂ : Type u_2} {n₂ : ℕ} {L : Language} (ω : Rew L ξ₁ n₁ ξ₂ n₂) (o : Semiformula.Operator L 2) (t₁ t₂ : Semiterm L ξ₁ n₁) :
                                          (Rewriting.app ω) (o.operator ![t₁, t₂]) = o.operator ![ω t₁, ω t₂]
                                          @[simp]
                                          theorem FFL.FirstOrder.Rew.hom_finitary3 {ξ₁ : Type u_1} {n₁ : ℕ} {ξ₂ : Type u_2} {n₂ : ℕ} {L : Language} (ω : Rew L ξ₁ n₁ ξ₂ n₂) (o : Semiformula.Operator L 3) (t₁ t₂ t₃ : Semiterm L ξ₁ n₁) :
                                          (Rewriting.app ω) (o.operator ![t₁, t₂, t₃]) = o.operator ![ω t₁, ω t₂, ω t₃]
                                          @[simp]
                                          theorem FFL.FirstOrder.Rew.hom_const {ξ₁ : Type u_2} {n₁ : ℕ} {ξ₂ : Type u_1} {n₂ : ℕ} {L : Language} (ω : Rew L ξ₁ n₁ ξ₂ n₂) {c : Semiformula.Const L} :
                                          (Rewriting.app ω) ↑c = ↑c
                                          theorem FFL.FirstOrder.Rew.eq_equal_iff {ξ₁ : Type u_1} {n₁ : ℕ} {ξ₂ : Type u_2} {n₂ : ℕ} {L : Language} (ω : Rew L ξ₁ n₁ ξ₂ n₂) [L.Eq] {φ : Semiformula L ξ₁ n₁} {t u : Semiterm L ξ₂ n₂} :
                                          (Rewriting.app ω) φ = op(=).operator ![t, u] ↔ ∃ (t' : Semiterm L ξ₁ n₁) (u' : Semiterm L ξ₁ n₁), ω t' = t ∧ ω u' = u ∧ φ = op(=).operator ![t', u']
                                          theorem FFL.FirstOrder.Rew.eq_lt_iff {ξ₁ : Type u_1} {n₁ : ℕ} {ξ₂ : Type u_2} {n₂ : ℕ} {L : Language} (ω : Rew L ξ₁ n₁ ξ₂ n₂) [L.LT] {φ : Semiformula L ξ₁ n₁} {t u : Semiterm L ξ₂ n₂} :
                                          (Rewriting.app ω) φ = op(<).operator ![t, u] ↔ ∃ (t' : Semiterm L ξ₁ n₁) (u' : Semiterm L ξ₁ n₁), ω t' = t ∧ ω u' = u ∧ φ = op(<).operator ![t', u']
                                          theorem FFL.FirstOrder.Rew.eq_mem_iff {ξ₁ : Type u_1} {n₁ : ℕ} {ξ₂ : Type u_2} {n₂ : ℕ} {L : Language} (ω : Rew L ξ₁ n₁ ξ₂ n₂) [L.Mem] {φ : Semiformula L ξ₁ n₁} {t u : Semiterm L ξ₂ n₂} :
                                          (Rewriting.app ω) φ = op(∈).operator ![t, u] ↔ ∃ (t' : Semiterm L ξ₁ n₁) (u' : Semiterm L ξ₁ n₁), ω t' = t ∧ ω u' = u ∧ φ = op(∈).operator ![t', u']
                                          instance FFL.FirstOrder.Semiformula.Operator.symbolLikeEq {L : Language} [L.Eq] (ξ₁ : Type u_1) (ξ₂ : Type u_2) :
                                          op(=).SymbolLike ξ₁ ξ₂
                                          instance FFL.FirstOrder.Semiformula.Operator.symbolLikeLT {L : Language} [L.LT] (ξ₁ : Type u_1) (ξ₂ : Type u_2) :
                                          op(<).SymbolLike ξ₁ ξ₂
                                          instance FFL.FirstOrder.Semiformula.Operator.symbolLikeMem {L : Language} [L.Mem] (ξ₁ : Type u_1) (ξ₂ : Type u_2) :
                                          op(∈).SymbolLike ξ₁ ξ₂
                                          @[reducible, inline]
                                          abbrev FFL.FirstOrder.Semiterm.numeral {L : Language} [L.Zero] [L.One] [L.Add] {ξ : Type u_2} {n : ℕ} (k : ℕ) :
                                          Semiterm L ξ n
                                          Equations
                                          Instances For
                                            @[instance_reducible]
                                            instance FFL.FirstOrder.Semiterm.instCoeNat {L : Language} [L.Zero] [L.One] [L.Add] {ξ : Type u_2} {n : ℕ} :
                                            Coe ℕ (Semiterm L ξ n)
                                            Equations