Documentation

Logic.FirstOrder.Computability.Formula

inductive LO.FirstOrder.UFormula (L : LO.FirstOrder.Language) (μ : Type v) :
Type (max u v)
Instances For
    Equations
    • LO.FirstOrder.UFormula.instInhabited = { default := LO.FirstOrder.UFormula.verum }
    def LO.FirstOrder.UFormula.elim {L : LO.FirstOrder.Language} {μ : Type v} {γ : Type u_1} (γVerum : γ) (γFalsum : γ) (γRel : {k : } → L.Rel k(Fin kLO.FirstOrder.UTerm L μ)γ) (γNrel : {k : } → L.Rel k(Fin kLO.FirstOrder.UTerm L μ)γ) (γAnd : γγγ) (γOr : γγγ) (γAll : γγ) (γEx : γγ) :
    Equations
    Instances For
      Equations
      Instances For
        Equations
        Instances For
          Equations
          Instances For
            def LO.FirstOrder.UFormula.bindq {L : LO.FirstOrder.Language} {μ₂ : Type u_1} {μ₁ : Type u_2} (b : LO.FirstOrder.UTerm L μ₂) (e : μ₁LO.FirstOrder.UTerm L μ₂) :
            Equations
            Instances For
              def LO.FirstOrder.UFormula.bind {L : LO.FirstOrder.Language} {μ₂ : Type u_1} {μ₁ : Type u_2} (b : LO.FirstOrder.UTerm L μ₂) (e : μ₁LO.FirstOrder.UTerm L μ₂) :
              Equations
              Instances For
                @[simp]
                theorem LO.FirstOrder.UFormula.bv_verum {L : LO.FirstOrder.Language} {μ : Type v} :
                LO.FirstOrder.UFormula.verum.bv = 0
                @[simp]
                theorem LO.FirstOrder.UFormula.bv_falsum {L : LO.FirstOrder.Language} {μ : Type v} :
                LO.FirstOrder.UFormula.falsum.bv = 0
                @[simp]
                theorem LO.FirstOrder.UFormula.bv_rel {L : LO.FirstOrder.Language} {μ : Type v} {k : } (r : L.Rel k) (v : Fin kLO.FirstOrder.UTerm L μ) :
                (LO.FirstOrder.UFormula.rel r v).bv = Finset.univ.sup fun (i : Fin k) => (v i).bv
                @[simp]
                theorem LO.FirstOrder.UFormula.bv_nrel {L : LO.FirstOrder.Language} {μ : Type v} {k : } (r : L.Rel k) (v : Fin kLO.FirstOrder.UTerm L μ) :
                (LO.FirstOrder.UFormula.nrel r v).bv = Finset.univ.sup fun (i : Fin k) => (v i).bv
                @[simp]
                theorem LO.FirstOrder.UFormula.bv_and {L : LO.FirstOrder.Language} {μ : Type v} (p : LO.FirstOrder.UFormula L μ) (q : LO.FirstOrder.UFormula L μ) :
                (p.and q).bv = max p.bv q.bv
                @[simp]
                theorem LO.FirstOrder.UFormula.bv_or {L : LO.FirstOrder.Language} {μ : Type v} (p : LO.FirstOrder.UFormula L μ) (q : LO.FirstOrder.UFormula L μ) :
                (p.or q).bv = max p.bv q.bv
                @[simp]
                theorem LO.FirstOrder.UFormula.bv_all {L : LO.FirstOrder.Language} {μ : Type v} (p : LO.FirstOrder.UFormula L μ) :
                p.all.bv = p.bv.pred
                @[simp]
                theorem LO.FirstOrder.UFormula.bv_ex {L : LO.FirstOrder.Language} {μ : Type v} (p : LO.FirstOrder.UFormula L μ) :
                p.ex.bv = p.bv.pred
                @[simp]
                theorem LO.FirstOrder.UFormula.subtype_val_le {L : LO.FirstOrder.Language} {μ : Type v} {n : } (p : { p : LO.FirstOrder.UFormula L μ // p.bv n }) :
                (p).bv n
                theorem LO.FirstOrder.UFormula.bind_eq_bind_of_eq {L : LO.FirstOrder.Language} {μ₂ : Type u_1} {μ₁ : Type u_2} (b₁ : LO.FirstOrder.UTerm L μ₂) (b₂ : LO.FirstOrder.UTerm L μ₂) (e₁ : μ₁LO.FirstOrder.UTerm L μ₂) (e₂ : μ₁LO.FirstOrder.UTerm L μ₂) (p : LO.FirstOrder.UFormula L μ₁) (hb : x < p.bv, b₁ x = b₂ x) (he : ∀ (x : μ₁), e₁ x = e₂ x) :
                Equations
                Instances For
                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    theorem LO.FirstOrder.UFormula.ofSubformula_eq_subfEquiv {L : LO.FirstOrder.Language} {μ : Type v} {n : } :
                    LO.FirstOrder.UFormula.ofSubformula = LO.FirstOrder.UFormula.subfEquiv
                    @[simp]
                    theorem LO.FirstOrder.UFormula.subfEquiv_verum {L : LO.FirstOrder.Language} {μ : Type v} {n : } :
                    LO.FirstOrder.UFormula.subfEquiv = LO.FirstOrder.UFormula.verum,
                    @[simp]
                    theorem LO.FirstOrder.UFormula.subfEquiv_falsum {L : LO.FirstOrder.Language} {μ : Type v} {n : } :
                    LO.FirstOrder.UFormula.subfEquiv = LO.FirstOrder.UFormula.falsum,
                    @[simp]
                    theorem LO.FirstOrder.UFormula.subfEquiv_rel {L : LO.FirstOrder.Language} {μ : Type v} {n : } {k : } (r : L.Rel k) (v : Fin kLO.FirstOrder.Semiterm L μ n) :
                    LO.FirstOrder.UFormula.subfEquiv (LO.FirstOrder.Semiformula.rel r v) = LO.FirstOrder.UFormula.rel r fun (i : Fin k) => (LO.FirstOrder.UTerm.subtEquiv (v i)),
                    @[simp]
                    theorem LO.FirstOrder.UFormula.subfEquiv_nrel {L : LO.FirstOrder.Language} {μ : Type v} {n : } {k : } (r : L.Rel k) (v : Fin kLO.FirstOrder.Semiterm L μ n) :
                    LO.FirstOrder.UFormula.subfEquiv (LO.FirstOrder.Semiformula.nrel r v) = LO.FirstOrder.UFormula.nrel r fun (i : Fin k) => (LO.FirstOrder.UTerm.subtEquiv (v i)),
                    @[simp]
                    theorem LO.FirstOrder.UFormula.subfEquiv_and {L : LO.FirstOrder.Language} {μ : Type v} {n : } (p : LO.FirstOrder.Semiformula L μ n) (q : LO.FirstOrder.Semiformula L μ n) :
                    LO.FirstOrder.UFormula.subfEquiv (p q) = ((LO.FirstOrder.UFormula.subfEquiv p)).and (LO.FirstOrder.UFormula.subfEquiv q),
                    @[simp]
                    theorem LO.FirstOrder.UFormula.subfEquiv_or {L : LO.FirstOrder.Language} {μ : Type v} {n : } (p : LO.FirstOrder.Semiformula L μ n) (q : LO.FirstOrder.Semiformula L μ n) :
                    LO.FirstOrder.UFormula.subfEquiv (p q) = ((LO.FirstOrder.UFormula.subfEquiv p)).or (LO.FirstOrder.UFormula.subfEquiv q),
                    @[simp]
                    theorem LO.FirstOrder.UFormula.subfEquiv_all {L : LO.FirstOrder.Language} {μ : Type v} {n : } (p : LO.FirstOrder.Semiformula L μ (n + 1)) :
                    LO.FirstOrder.UFormula.subfEquiv (∀' p) = ((LO.FirstOrder.UFormula.subfEquiv p)).all,
                    @[simp]
                    theorem LO.FirstOrder.UFormula.subfEquiv_ex {L : LO.FirstOrder.Language} {μ : Type v} {n : } (p : LO.FirstOrder.Semiformula L μ (n + 1)) :
                    LO.FirstOrder.UFormula.subfEquiv (∃' p) = ((LO.FirstOrder.UFormula.subfEquiv p)).ex,
                    @[reducible, inline]
                    Equations
                    Instances For
                      Equations
                      • LO.FirstOrder.UFormula.instPrimcodableNode = Primcodable.prod
                      @[reducible]
                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        Equations
                        Equations
                        Instances For
                          Equations
                          Instances For
                            @[simp]
                            theorem LO.FirstOrder.UFormula.equivW_verum {L : LO.FirstOrder.Language} {μ : Type v} :
                            (LO.FirstOrder.UFormula.equivW L μ) LO.FirstOrder.UFormula.verum = WType.mk (true, Sum.inr (Sum.inl ())) Empty.elim
                            @[simp]
                            theorem LO.FirstOrder.UFormula.equivW_falsum {L : LO.FirstOrder.Language} {μ : Type v} :
                            (LO.FirstOrder.UFormula.equivW L μ) LO.FirstOrder.UFormula.falsum = WType.mk (false, Sum.inr (Sum.inl ())) Empty.elim
                            @[simp]
                            theorem LO.FirstOrder.UFormula.equivW_rel {L : LO.FirstOrder.Language} {μ : Type v} {k : } (r : L.Rel k) (v : Fin kLO.FirstOrder.UTerm L μ) :
                            @[simp]
                            theorem LO.FirstOrder.UFormula.equivW_nrel {L : LO.FirstOrder.Language} {μ : Type v} {k : } (r : L.Rel k) (v : Fin kLO.FirstOrder.UTerm L μ) :
                            @[simp]
                            theorem LO.FirstOrder.UFormula.equivW_symm_true_inl {L : LO.FirstOrder.Language} {μ : Type v} {k : } {r : L.Rel k} {v : Fin kLO.FirstOrder.UTerm L μ} :
                            (LO.FirstOrder.UFormula.equivW L μ).symm (WType.mk (true, Sum.inl k, (r, v)) Empty.elim) = LO.FirstOrder.UFormula.rel r v
                            @[simp]
                            theorem LO.FirstOrder.UFormula.equivW_symm_false_inl {L : LO.FirstOrder.Language} {μ : Type v} {k : } {r : L.Rel k} {v : Fin kLO.FirstOrder.UTerm L μ} :
                            (LO.FirstOrder.UFormula.equivW L μ).symm (WType.mk (false, Sum.inl k, (r, v)) Empty.elim) = LO.FirstOrder.UFormula.nrel r v
                            Equations
                            • One or more equations did not get rendered due to their size.
                            Equations
                            • One or more equations did not get rendered due to their size.
                            Equations
                            • One or more equations did not get rendered due to their size.
                            Equations
                            theorem LO.FirstOrder.UFormula.qeq {α : Sort u_1} {a : α} {b : α} {c : α} {d : α} (h₁ : a = b) (h₂ : b = c) (h₃ : c = d) :
                            a = d
                            theorem LO.FirstOrder.UFormula.rel_primrec {L : LO.FirstOrder.Language} {μ : Type v} [(k : ) → Primcodable (L.Func k)] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Func] [UniformlyPrimcodable L.Rel] [Primcodable μ] :
                            Primrec fun (p : (k : ) × L.Rel k × (Fin kLO.FirstOrder.UTerm L μ)) => LO.FirstOrder.UFormula.rel p.snd.1 p.snd.2
                            theorem LO.FirstOrder.UFormula.nrel_primrec {L : LO.FirstOrder.Language} {μ : Type v} [(k : ) → Primcodable (L.Func k)] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Func] [UniformlyPrimcodable L.Rel] [Primcodable μ] :
                            Primrec fun (p : (k : ) × L.Rel k × (Fin kLO.FirstOrder.UTerm L μ)) => LO.FirstOrder.UFormula.nrel p.snd.1 p.snd.2
                            Equations
                            Instances For
                              Equations
                              Instances For
                                theorem LO.FirstOrder.UFormula.relL_primrec {L : LO.FirstOrder.Language} {μ : Type v} [(k : ) → Primcodable (L.Func k)] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Func] [UniformlyPrimcodable L.Rel] [Primcodable μ] :
                                Primrec₂ LO.FirstOrder.UFormula.relL
                                theorem LO.FirstOrder.UFormula.nrelL_primrec {L : LO.FirstOrder.Language} {μ : Type v} [(k : ) → Primcodable (L.Func k)] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Func] [UniformlyPrimcodable L.Rel] [Primcodable μ] :
                                Primrec₂ LO.FirstOrder.UFormula.nrelL
                                theorem LO.FirstOrder.UFormula.and_primrec {L : LO.FirstOrder.Language} {μ : Type v} [(k : ) → Primcodable (L.Func k)] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Func] [UniformlyPrimcodable L.Rel] [Primcodable μ] :
                                Primrec₂ LO.FirstOrder.UFormula.and
                                theorem LO.FirstOrder.UFormula.or_primrec {L : LO.FirstOrder.Language} {μ : Type v} [(k : ) → Primcodable (L.Func k)] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Func] [UniformlyPrimcodable L.Rel] [Primcodable μ] :
                                Primrec₂ LO.FirstOrder.UFormula.or
                                theorem LO.FirstOrder.UFormula.all_primrec {L : LO.FirstOrder.Language} {μ : Type v} [(k : ) → Primcodable (L.Func k)] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Func] [UniformlyPrimcodable L.Rel] [Primcodable μ] :
                                Primrec LO.FirstOrder.UFormula.all
                                theorem LO.FirstOrder.UFormula.ex_primrec {L : LO.FirstOrder.Language} {μ : Type v} [(k : ) → Primcodable (L.Func k)] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Func] [UniformlyPrimcodable L.Rel] [Primcodable μ] :
                                Primrec LO.FirstOrder.UFormula.ex
                                theorem LO.FirstOrder.UFormula.elim_primrec_param {L : LO.FirstOrder.Language} {μ : Type v} [(k : ) → Primcodable (L.Func k)] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Func] [UniformlyPrimcodable L.Rel] [Primcodable μ] {σ : Type u_1} {γ : Type u_2} [Primcodable σ] [Primcodable γ] [Inhabited γ] {γVerum : σγ} {γFalsum : σγ} {γRel : σ(k : ) × L.Rel k × (Fin kLO.FirstOrder.UTerm L μ)γ} {γNrel : σ(k : ) × L.Rel k × (Fin kLO.FirstOrder.UTerm L μ)γ} {γAnd : σγ × γγ} {γOr : σγ × γγ} {γAll : σγγ} {γEx : σγγ} {f : σLO.FirstOrder.UFormula L μ} (hVerum : Primrec γVerum) (hFalsum : Primrec γFalsum) (hRel : Primrec₂ γRel) (hNrel : Primrec₂ γNrel) (hAnd : Primrec₂ γAnd) (hOr : Primrec₂ γOr) (hAll : Primrec₂ γAll) (hEx : Primrec₂ γEx) (hf : Primrec f) :
                                Primrec fun (x : σ) => LO.FirstOrder.UFormula.elim (γVerum x) (γFalsum x) (fun {k : } (f : L.Rel k) (v : Fin kLO.FirstOrder.UTerm L μ) => γRel x k, (f, v)) (fun {k : } (f : L.Rel k) (v : Fin kLO.FirstOrder.UTerm L μ) => γNrel x k, (f, v)) (fun (y₁ y₂ : γ) => γAnd x (y₁, y₂)) (fun (y₁ y₂ : γ) => γOr x (y₁, y₂)) (γAll x) (γEx x) (f x)
                                theorem LO.FirstOrder.UFormula.elim_primrec {L : LO.FirstOrder.Language} {μ : Type v} [(k : ) → Primcodable (L.Func k)] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Func] [UniformlyPrimcodable L.Rel] [Primcodable μ] {γ : Type u_1} [Primcodable γ] [Inhabited γ] (γVerum : γ) (γFalsum : γ) {γRel : (k : ) × L.Rel k × (Fin kLO.FirstOrder.UTerm L μ)γ} {γNrel : (k : ) × L.Rel k × (Fin kLO.FirstOrder.UTerm L μ)γ} {γAnd : γγγ} {γOr : γγγ} {γAll : γγ} {γEx : γγ} (hRel : Primrec γRel) (hNrel : Primrec γNrel) (hAnd : Primrec₂ γAnd) (hOr : Primrec₂ γOr) (hAll : Primrec γAll) (hEx : Primrec γEx) :
                                Primrec (LO.FirstOrder.UFormula.elim γVerum γFalsum (fun {k : } (f : L.Rel k) (v : Fin kLO.FirstOrder.UTerm L μ) => γRel k, (f, v)) (fun {k : } (f : L.Rel k) (v : Fin kLO.FirstOrder.UTerm L μ) => γNrel k, (f, v)) γAnd γOr γAll γEx)
                                theorem LO.FirstOrder.UFormula.bv_primrec {L : LO.FirstOrder.Language} {μ : Type v} [(k : ) → Primcodable (L.Func k)] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Func] [UniformlyPrimcodable L.Rel] [Primcodable μ] :
                                Primrec LO.FirstOrder.UFormula.bv
                                theorem LO.FirstOrder.UFormula.depth_primrec {L : LO.FirstOrder.Language} {μ : Type v} [(k : ) → Primcodable (L.Func k)] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Func] [UniformlyPrimcodable L.Rel] [Primcodable μ] :
                                Primrec LO.FirstOrder.UFormula.depth
                                theorem LO.FirstOrder.UFormula.neg_primrec {L : LO.FirstOrder.Language} {μ : Type v} [(k : ) → Primcodable (L.Func k)] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Func] [UniformlyPrimcodable L.Rel] [Primcodable μ] :
                                Primrec LO.FirstOrder.UFormula.neg
                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  theorem LO.FirstOrder.UFormula.inversion_primrec {L : LO.FirstOrder.Language} {μ : Type v} [(k : ) → Primcodable (L.Func k)] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Func] [UniformlyPrimcodable L.Rel] [Primcodable μ] :
                                  Primrec LO.FirstOrder.UFormula.inversion
                                  theorem LO.FirstOrder.UFormula.bindq_param_primrec {L : LO.FirstOrder.Language} [(k : ) → Primcodable (L.Func k)] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Func] [UniformlyPrimcodable L.Rel] {σ : Type u_1} {μ₁ : Type u_2} {μ₂ : Type u_3} [Primcodable μ₁] [Primcodable μ₂] [Primcodable σ] {b : σLO.FirstOrder.UTerm L μ₂} {e : σμ₁LO.FirstOrder.UTerm L μ₂} {k : σ} {p : σLO.FirstOrder.UFormula L μ₁} (hb : Primrec₂ b) (he : Primrec₂ e) (hk : Primrec k) (hp : Primrec p) :
                                  Primrec fun (x : σ) => LO.FirstOrder.UFormula.bindq (b x) (e x) (k x) (p x)
                                  theorem LO.FirstOrder.UFormula.bind_primrec_param {L : LO.FirstOrder.Language} [(k : ) → Primcodable (L.Func k)] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Func] [UniformlyPrimcodable L.Rel] {σ : Type u_1} {μ₁ : Type u_2} {μ₂ : Type u_3} [Primcodable μ₁] [Primcodable μ₂] [Primcodable σ] {b : σLO.FirstOrder.UTerm L μ₂} {e : σμ₁LO.FirstOrder.UTerm L μ₂} {p : σLO.FirstOrder.UFormula L μ₁} (hb : Primrec₂ b) (he : Primrec₂ e) (hp : Primrec p) :
                                  Primrec fun (x : σ) => LO.FirstOrder.UFormula.bind (b x) (e x) (p x)
                                  Equations
                                  theorem LO.FirstOrder.Semiformula.rel_primrec {L : LO.FirstOrder.Language} {μ : Type v} [Primcodable μ] [(k : ) → Primcodable (L.Func k)] [UniformlyPrimcodable L.Func] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Rel] {n : } :
                                  Primrec fun (p : (k : ) × L.Rel k × (Fin kLO.FirstOrder.Semiterm L μ n)) => LO.FirstOrder.Semiformula.rel p.snd.1 p.snd.2
                                  theorem LO.FirstOrder.Semiformula.nrel_primrec {L : LO.FirstOrder.Language} {μ : Type v} [Primcodable μ] [(k : ) → Primcodable (L.Func k)] [UniformlyPrimcodable L.Func] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Rel] {n : } :
                                  Primrec fun (p : (k : ) × L.Rel k × (Fin kLO.FirstOrder.Semiterm L μ n)) => LO.FirstOrder.Semiformula.nrel p.snd.1 p.snd.2
                                  def LO.FirstOrder.Semiformula.relL {L : LO.FirstOrder.Language} {μ : Type v} {n : } (r : (k : ) × L.Rel k) (l : List (LO.FirstOrder.Semiterm L μ n)) :
                                  Equations
                                  Instances For
                                    def LO.FirstOrder.Semiformula.nrelL {L : LO.FirstOrder.Language} {μ : Type v} {n : } (r : (k : ) × L.Rel k) (l : List (LO.FirstOrder.Semiterm L μ n)) :
                                    Equations
                                    Instances For
                                      theorem LO.FirstOrder.Semiformula.relL_primrec {L : LO.FirstOrder.Language} {μ : Type v} [Primcodable μ] [(k : ) → Primcodable (L.Func k)] [UniformlyPrimcodable L.Func] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Rel] {n : } :
                                      Primrec₂ LO.FirstOrder.Semiformula.relL
                                      theorem LO.FirstOrder.Semiformula.nrelL_primrec {L : LO.FirstOrder.Language} {μ : Type v} [Primcodable μ] [(k : ) → Primcodable (L.Func k)] [UniformlyPrimcodable L.Func] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Rel] {n : } :
                                      Primrec₂ LO.FirstOrder.Semiformula.nrelL
                                      theorem LO.FirstOrder.Semiformula.and_primrec {L : LO.FirstOrder.Language} {μ : Type v} [Primcodable μ] [(k : ) → Primcodable (L.Func k)] [UniformlyPrimcodable L.Func] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Rel] {n : } :
                                      Primrec₂ fun (x x_1 : LO.FirstOrder.Semiformula L μ n) => x x_1
                                      theorem LO.FirstOrder.Semiformula.or_primrec {L : LO.FirstOrder.Language} {μ : Type v} [Primcodable μ] [(k : ) → Primcodable (L.Func k)] [UniformlyPrimcodable L.Func] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Rel] {n : } :
                                      Primrec₂ fun (x x_1 : LO.FirstOrder.Semiformula L μ n) => x x_1
                                      theorem LO.FirstOrder.Semiformula.all_primrec {L : LO.FirstOrder.Language} {μ : Type v} [Primcodable μ] [(k : ) → Primcodable (L.Func k)] [UniformlyPrimcodable L.Func] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Rel] {n : } :
                                      Primrec fun (x : LO.FirstOrder.Semiformula L μ (n + 1)) => ∀' x
                                      theorem LO.FirstOrder.Semiformula.ex_primrec {L : LO.FirstOrder.Language} {μ : Type v} [Primcodable μ] [(k : ) → Primcodable (L.Func k)] [UniformlyPrimcodable L.Func] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Rel] {n : } :
                                      Primrec fun (x : LO.FirstOrder.Semiformula L μ (n + 1)) => ∃' x
                                      theorem LO.FirstOrder.Semiformula.neg_primrec {L : LO.FirstOrder.Language} {μ : Type v} [Primcodable μ] [(k : ) → Primcodable (L.Func k)] [UniformlyPrimcodable L.Func] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Rel] {n : } :
                                      Primrec fun (x : LO.FirstOrder.Semiformula L μ n) => ~x
                                      theorem LO.FirstOrder.Semiformula.imply_primrec {L : LO.FirstOrder.Language} {μ : Type v} [Primcodable μ] [(k : ) → Primcodable (L.Func k)] [UniformlyPrimcodable L.Func] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Rel] {n : } :
                                      Primrec₂ fun (x x_1 : LO.FirstOrder.Semiformula L μ n) => x x_1
                                      theorem LO.FirstOrder.Semiformula.bv_subtEquiv {L : LO.FirstOrder.Language} {μ : Type v} {n : } (p : LO.FirstOrder.Semiformula L μ n) :
                                      ((LO.FirstOrder.UFormula.subfEquiv p)).bv n
                                      theorem LO.FirstOrder.Semiformula.subfEquiv_bind_eq_bind {L : LO.FirstOrder.Language} {n₁ : } {μ₂ : Type u_2} {n₂ : } {μ₁ : Type u_3} (b : Fin n₁LO.FirstOrder.Semiterm L μ₂ n₂) (e : μ₁LO.FirstOrder.Semiterm L μ₂ n₂) (p : LO.FirstOrder.Semiformula L μ₁ n₁) :
                                      (LO.FirstOrder.UFormula.subfEquiv ((LO.FirstOrder.Rew.bind b e).hom p)) = LO.FirstOrder.UFormula.bind (fun (x : ) => if hx : x < n₁ then (LO.FirstOrder.UTerm.subtEquiv (b x, hx)) else default) (fun (x : μ₁) => (LO.FirstOrder.UTerm.subtEquiv (e x))) (LO.FirstOrder.UFormula.subfEquiv p)
                                      theorem LO.FirstOrder.Semiformula.bind_primrec {L : LO.FirstOrder.Language} [(k : ) → Primcodable (L.Func k)] [UniformlyPrimcodable L.Func] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Rel] {σ : Type u_2} {μ₁ : Type u_3} {μ₂ : Type u_4} [Primcodable μ₁] [Primcodable μ₂] [Primcodable σ] {n₁ : } {n₂ : } {b : σFin n₁LO.FirstOrder.Semiterm L μ₂ n₂} {e : σμ₁LO.FirstOrder.Semiterm L μ₂ n₂} {p : σLO.FirstOrder.Semiformula L μ₁ n₁} (hb : Primrec b) (he : Primrec₂ e) (hp : Primrec p) :
                                      Primrec fun (x : σ) => (LO.FirstOrder.Rew.bind (b x) (e x)).hom (p x)
                                      theorem LO.FirstOrder.Semiformula.rewrite_primrec {L : LO.FirstOrder.Language} {μ : Type v} [Primcodable μ] [(k : ) → Primcodable (L.Func k)] [UniformlyPrimcodable L.Func] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Rel] {k : } {n : } :
                                      theorem LO.FirstOrder.Semiformula.substs_primrec {L : LO.FirstOrder.Language} {μ : Type v} [Primcodable μ] [(k : ) → Primcodable (L.Func k)] [UniformlyPrimcodable L.Func] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Rel] {n : } {n' : } :
                                      theorem LO.FirstOrder.Semiformula.substs₁_primrec {L : LO.FirstOrder.Language} {μ : Type v} [Primcodable μ] [(k : ) → Primcodable (L.Func k)] [UniformlyPrimcodable L.Func] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Rel] {n' : } :
                                      theorem LO.FirstOrder.Semiformula.shift_primrec {L : LO.FirstOrder.Language} [(k : ) → Primcodable (L.Func k)] [UniformlyPrimcodable L.Func] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Rel] {n : } :
                                      Primrec (LO.FirstOrder.Rew.hom LO.FirstOrder.Rew.shift)
                                      theorem LO.FirstOrder.Semiformula.free_primrec {L : LO.FirstOrder.Language} [(k : ) → Primcodable (L.Func k)] [UniformlyPrimcodable L.Func] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Rel] {n : } :
                                      Primrec (LO.FirstOrder.Rew.hom LO.FirstOrder.Rew.free)
                                      theorem LO.FirstOrder.Semiformula.emb_primrec {L : LO.FirstOrder.Language} {μ : Type v} [Primcodable μ] [(k : ) → Primcodable (L.Func k)] [UniformlyPrimcodable L.Func] [(k : ) → Primcodable (L.Rel k)] [UniformlyPrimcodable L.Rel] :
                                      Primrec LO.FirstOrder.Rew.emb.hom