Documentation

Foundation.FirstOrder.Basic.Operator

Instances For
    def LO.FirstOrder.Semiterm.Operator.operator {L : Language} {ξ : Type u_2} {n arity : } (o : Operator L arity) (v : Fin aritySemiterm L ξ n) :
    Semiterm L ξ n
    Equations
    Instances For
      @[reducible, inline]
      abbrev LO.FirstOrder.Semiterm.Operator.const {L : Language} {ξ : Type u_2} {n : } (c : Const L) :
      Semiterm L ξ n
      Equations
      Instances For
        def LO.FirstOrder.Semiterm.Operator.comp {L : Language} {k l : } (o : Operator L k) (w : Fin kOperator L l) :
        Equations
        Instances For
          @[simp]
          theorem LO.FirstOrder.Semiterm.Operator.operator_comp {L : Language} {k l : } {ξ : Type u_1} {n : } (o : Operator L k) (w : Fin kOperator L l) (v : Fin lSemiterm L ξ n) :
          (o.comp w).operator v = o.operator fun (x : Fin k) => (w x).operator v
          theorem LO.FirstOrder.Semiterm.Operator.operator_bvar {L : Language} {k : } {ξ : Type u_1} {n : } (x : Fin k) (v : Fin kSemiterm L ξ n) :
          (bvar x).operator v = v x
          theorem LO.FirstOrder.Semiterm.Operator.bv_operator {L : Language} {ξ : Type u_1} {n k : } (o : Operator L k) (v : Fin kSemiterm L ξ (n + 1)) :
          (o.operator v).bv = (bv o.term).biUnion fun (i : Fin k) => (v i).bv
          theorem LO.FirstOrder.Semiterm.Operator.positive_operator_iff {L : Language} {ξ : Type u_1} {n k : } {o : Operator L k} {v : Fin kSemiterm L ξ (n + 1)} :
          (o.operator v).Positive ibv o.term, (v i).Positive
          @[simp]
          theorem LO.FirstOrder.Semiterm.Operator.positive_const {L : Language} {ξ : Type u_1} {n : } (c : Const L) :
          (↑c).Positive
          def LO.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 LO.FirstOrder.Semiterm.Operator.foldr_nil {L : Language} {k : } (f : Operator L 2) (z : Operator L k) :
            f.foldr z [] = z
            @[simp]
            theorem LO.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 kSemiterm L ξ n) :
            (f.foldr z (o :: os)).operator v = f.operator ![(f.foldr z os).operator v, o.operator v]
            @[simp]
            theorem LO.FirstOrder.Semiterm.Operator.iterr_zero {L : Language} (f : Operator L 2) (z : Const L) :
            f.iterr z 0 = z
            class LO.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 LO.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 LO.FirstOrder.Semiterm.complexity_zero {L : Language} {ξ : Type u_1} {n : } [L.Zero] :
                      @[simp]
                      theorem LO.FirstOrder.Semiterm.complexity_one {L : Language} {ξ : Type u_1} {n : } [L.One] :
                      @[simp]
                      @[simp]
                      @[simp]
                      theorem LO.FirstOrder.Semiterm.val_operator {L : Language} {M : Type w} {s : Structure L M} {n : } {ξ : Type u_1} {k : } (b : Fin nM) (f : ξM) (o : Operator L k) (v : Fin kSemiterm L ξ n) :
                      val b f (o.operator v) = Operator.val (val b f v) o
                      theorem LO.FirstOrder.Semiterm.val_operator' {L : Language} {M : Type w} {s : Structure L M} {ξ : Type u_1} {k : } (b : Fin kM) (f : ξM) (o : Operator L k) (v : Fin kSemiterm L ξ k) :
                      val b f (o.operator v) = Operator.val (fun (i : Fin k) => val b f (v i)) o
                      theorem LO.FirstOrder.Semiterm.Operator.val_comp {L : Language} {M : Type w} {s : Structure L M} {k m : } (o₁ : Operator L k) (o₂ : Fin kOperator L m) (v : Fin mM) :
                      val v (o₁.comp o₂) = val (val v o₂) o₁
                      @[simp]
                      theorem LO.FirstOrder.Semiterm.Operator.val_bvar {L : Language} {M : Type w} {s : Structure L M} {n : } (x : Fin n) (v : Fin nM) :
                      val v (bvar x) = v x
                      Instances For
                        def LO.FirstOrder.Semiformula.Operator.operator {L : Language} {ξ : Type u_2} {n arity : } (o : Operator L arity) (v : Fin aritySemiterm L ξ n) :
                        Equations
                        Instances For
                          Equations
                          Instances For
                            theorem LO.FirstOrder.Semiformula.Operator.operator_comp {L : Language} {k l : } {ξ : Type u_1} {n : } (o : Operator L k) (w : Fin kSemiterm.Operator L l) (v : Fin lSemiterm L ξ n) :
                            (o.comp w).operator v = o.operator fun (x : Fin k) => (w x).operator v
                            Equations
                            Instances For
                              def LO.FirstOrder.Semiformula.Operator.or {L : Language} {k : } (o₁ o₂ : Operator L k) :
                              Equations
                              Instances For
                                @[simp]
                                theorem LO.FirstOrder.Semiformula.Operator.operator_and {L : Language} {k : } {ξ : Type u_1} {n : } (o₁ o₂ : Operator L k) (v : Fin kSemiterm L ξ n) :
                                (o₁.and o₂).operator v = o₁.operator v o₂.operator v
                                @[simp]
                                theorem LO.FirstOrder.Semiformula.Operator.operator_or {L : Language} {k : } {ξ : Type u_1} {n : } (o₁ o₂ : Operator L k) (v : Fin kSemiterm 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 LO.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 LO.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 LO.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 LO.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 LO.FirstOrder.Semiformula.Operator.Eq.open {L : Language} {ξ : Type u_1} {n : } [L.Eq] (t u : Semiterm L ξ n) :
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.Operator.LT.open {L : Language} {ξ : Type u_1} {n : } [L.LT] (t u : Semiterm L ξ n) :
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.Operator.Mem.open {L : Language} {ξ : Type u_1} {n : } [L.Mem] (t u : Semiterm L ξ n) :
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.Operator.LE.open {L : Language} {ξ : Type u_1} {n : } [L.Eq] [L.LT] (t u : Semiterm L ξ n) :
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.val_operator_and {L : Language} {M : Type w} {s : Structure L M} {k : } {o₁ o₂ : Operator L k} {v : Fin kM} :
                                        Operator.val v (o₁.and o₂) Operator.val v o₁ Operator.val v o₂
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.val_operator_or {L : Language} {M : Type w} {s : Structure L M} {k : } {o₁ o₂ : Operator L k} {v : Fin kM} :
                                        Operator.val v (o₁.or o₂) Operator.val v o₁ Operator.val v o₂
                                        @[simp]
                                        theorem LO.FirstOrder.Semiformula.eval_operator {L : Language} {M : Type w} {s : Structure L M} {n : } {ξ : Type u_1} {k : } {o : Operator L k} {e : Fin nM} {f : ξM} {v : Fin kSemiterm L ξ n} :
                                        theorem LO.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 kSemiterm L ξ₁ n₁) :
                                        ω (o.operator v) = o.operator fun (i : Fin k) => ω (v i)
                                        theorem LO.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 kSemiterm L ξ₁ n₁) :
                                        ω (o.operator v) = o.operator (ω v)
                                        @[simp]
                                        theorem LO.FirstOrder.Rew.finitary0 {ξ₁ : Type u_1} {n₁ : } {ξ₂ : Type u_2} {n₂ : } {L : Language} (ω : Rew L ξ₁ n₁ ξ₂ n₂) (o : Semiterm.Operator L 0) (v : Fin 0Semiterm L ξ₁ n₁) :
                                        ω (o.operator v) = o.operator ![]
                                        @[simp]
                                        theorem LO.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 LO.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 LO.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 LO.FirstOrder.Rew.const {ξ₁ : Type u_2} {n₁ : } {ξ₂ : Type u_1} {n₂ : } {L : Language} (ω : Rew L ξ₁ n₁ ξ₂ n₂) (c : Semiterm.Const L) :
                                        ω c = c
                                        theorem LO.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 kSemiterm L ξ₁ n₁) :
                                        (Rewriting.app ω) (o.operator v) = o.operator fun (i : Fin k) => ω (v i)
                                        theorem LO.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 kSemiterm L ξ₁ n₁) :
                                        (Rewriting.app ω) (o.operator v) = o.operator (ω v)
                                        @[simp]
                                        theorem LO.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 0Semiterm L ξ₁ n₁) :
                                        @[simp]
                                        theorem LO.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 LO.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 LO.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 LO.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 LO.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 LO.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 LO.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']
                                        Instances
                                          Instances
                                            @[simp]
                                            theorem LO.FirstOrder.Structure.zero_eq_of_lang {L : Language} {M : Type u_1} [Structure L M] [L.Zero] [Zero M] [Structure.Zero L M] (v : Fin 0M) :
                                            @[simp]
                                            theorem LO.FirstOrder.Structure.one_eq_of_lang {L : Language} {M : Type u_1} [Structure L M] [L.One] [One M] [Structure.One L M] (v : Fin 0M) :
                                            @[simp]
                                            theorem LO.FirstOrder.Structure.add_eq_of_lang {L : Language} {M : Type u_1} [Structure L M] [L.Add] [Add M] [Structure.Add L M] {v : Fin 2M} :
                                            @[simp]
                                            theorem LO.FirstOrder.Structure.mul_eq_of_lang {L : Language} {M : Type u_1} [Structure L M] [L.Mul] [Mul M] [Structure.Mul L M] {v : Fin 2M} :
                                            @[simp]
                                            theorem LO.FirstOrder.Structure.exp_eq_of_lang {L : Language} {M : Type u_1} [Structure L M] [L.Exp] [Exp M] [Structure.Exp L M] {v : Fin 1M} :
                                            @[simp]
                                            theorem LO.FirstOrder.Structure.eq_lang {L : Language} {M : Type u_1} [Structure L M] [L.Eq] [Structure.Eq L M] {v : Fin 2M} :
                                            @[simp]
                                            theorem LO.FirstOrder.Structure.lt_lang {L : Language} {M : Type u_1} [Structure L M] [L.LT] [LT M] [Structure.LT L M] {v : Fin 2M} :
                                            @[simp]
                                            theorem LO.FirstOrder.Structure.mem_lang {L : Language} {M : Type u_1} [Structure L M] [L.Mem] [Membership M M] [Structure.Mem L M] {v : Fin 2M} :
                                            theorem LO.FirstOrder.Structure.operator_val_ofEquiv_iff {L : Language} {M : Type u_1} [Structure L M] {N : Type u_2} (φ : M N) {k : } {o : Semiformula.Operator L k} {v : Fin kN} :
                                            @[simp]
                                            theorem LO.FirstOrder.Semiformula.eval_ballLT {n : } {ξ : Type u_3} {L : Language} {M : Type u_1} {s : Structure L M} {e : Fin nM} {f : ξM} {t : Semiterm L ξ n} {φ : Semiformula L ξ (n + 1)} [Operator.LT L] [LT M] [Structure.LT L M] :
                                            (Eval e f) (ballLT t φ) x < Semiterm.val e f t, (Eval (x :> e) f) φ
                                            @[simp]
                                            theorem LO.FirstOrder.Semiformula.eval_bexsLT {n : } {ξ : Type u_3} {L : Language} {M : Type u_1} {s : Structure L M} {e : Fin nM} {f : ξM} {t : Semiterm L ξ n} {φ : Semiformula L ξ (n + 1)} [Operator.LT L] [LT M] [Structure.LT L M] :
                                            (Eval e f) (bexsLT t φ) x < Semiterm.val e f t, (Eval (x :> e) f) φ
                                            @[simp]
                                            theorem LO.FirstOrder.Semiformula.eval_ballLE {n : } {ξ : Type u_3} {L : Language} {M : Type u_1} {s : Structure L M} {e : Fin nM} {f : ξM} {t : Semiterm L ξ n} {φ : Semiformula L ξ (n + 1)} [Operator.LE L] [LE M] [Structure.LE L M] :
                                            (Eval e f) (ballLE t φ) xSemiterm.val e f t, (Eval (x :> e) f) φ
                                            @[simp]
                                            theorem LO.FirstOrder.Semiformula.eval_bexsLE {n : } {ξ : Type u_3} {L : Language} {M : Type u_1} {s : Structure L M} {e : Fin nM} {f : ξM} {t : Semiterm L ξ n} {φ : Semiformula L ξ (n + 1)} [Operator.LE L] [LE M] [Structure.LE L M] :
                                            (Eval e f) (bexsLE t φ) xSemiterm.val e f t, (Eval (x :> e) f) φ
                                            @[simp]
                                            theorem LO.FirstOrder.Semiformula.eval_ballMem {n : } {ξ : Type u_3} {L : Language} {M : Type u_1} {s : Structure L M} {e : Fin nM} {f : ξM} {t : Semiterm L ξ n} {φ : Semiformula L ξ (n + 1)} [Operator.Mem L] [Membership M M] [Structure.Mem L M] :
                                            (Eval e f) (ballMem t φ) xSemiterm.val e f t, (Eval (x :> e) f) φ
                                            @[simp]
                                            theorem LO.FirstOrder.Semiformula.eval_bexsMem {n : } {ξ : Type u_3} {L : Language} {M : Type u_1} {s : Structure L M} {e : Fin nM} {f : ξM} {t : Semiterm L ξ n} {φ : Semiformula L ξ (n + 1)} [Operator.Mem L] [Membership M M] [Structure.Mem L M] :
                                            (Eval e f) (bexsMem t φ) xSemiterm.val e f t, (Eval (x :> e) f) φ
                                            @[reducible, inline]
                                            abbrev LO.FirstOrder.Semiterm.numeral {L : Language} [L.Zero] [L.One] [L.Add] {ξ : Type u_2} {n : } (k : ) :
                                            Semiterm L ξ n
                                            Equations
                                            Instances For
                                              @[implicit_reducible]
                                              instance LO.FirstOrder.Semiterm.instCoeNat {L : Language} [L.Zero] [L.One] [L.Add] {ξ : Type u_2} {n : } :
                                              Coe (Semiterm L ξ n)
                                              Equations