Theorem: LO.FirstOrder.UFormula.neg_primrec (Logic/FirstOrder/Computability/Formula.lean)

State before:
L : Language
μ : Type v
inst✝⁴ : (k : ℕ) → Primcodable (L.Func k)
inst✝³ : (k : ℕ) → Primcodable (L.Rel k)
inst✝² : UniformlyPrimcodable L.Func
inst✝¹ : UniformlyPrimcodable L.Rel
inst✝ : Primcodable μ
⊢ Primrec neg
Tactic:
have := elim_primrec (L := L) (μ := μ) falsum verum nrel_primrec rel_primrec or_primrec and_primrec ex_primrec all_primrec
State after:
L : Language
μ : Type v
inst✝⁴ : (k : ℕ) → Primcodable (L.Func k)
inst✝³ : (k : ℕ) → Primcodable (L.Rel k)
inst✝² : UniformlyPrimcodable L.Func
inst✝¹ : UniformlyPrimcodable L.Rel
inst✝ : Primcodable μ
this :
  Primrec
    (elim falsum verum (fun {k} f v => nrel ⟨k, (f, v)⟩.snd.1 ⟨k, (f, v)⟩.snd.2)
      (fun {k} f v => rel ⟨k, (f, v)⟩.snd.1 ⟨k, (f, v)⟩.snd.2) or and ex all)
⊢ Primrec neg

State before:
L : Language
μ : Type v
inst✝⁴ : (k : ℕ) → Primcodable (L.Func k)
inst✝³ : (k : ℕ) → Primcodable (L.Rel k)
inst✝² : UniformlyPrimcodable L.Func
inst✝¹ : UniformlyPrimcodable L.Rel
inst✝ : Primcodable μ
this :
  Primrec
    (elim falsum verum (fun {k} f v => nrel ⟨k, (f, v)⟩.snd.1 ⟨k, (f, v)⟩.snd.2)
      (fun {k} f v => rel ⟨k, (f, v)⟩.snd.1 ⟨k, (f, v)⟩.snd.2) or and ex all)
⊢ Primrec neg
Tactic:
exact this.of_eq <| fun p => by simp; induction p <;> simp[elim, neg, *]
State after:
no goals

State before:
L : Language
μ : Type v
inst✝⁴ : (k : ℕ) → Primcodable (L.Func k)
inst✝³ : (k : ℕ) → Primcodable (L.Rel k)
inst✝² : UniformlyPrimcodable L.Func
inst✝¹ : UniformlyPrimcodable L.Rel
inst✝ : Primcodable μ
this :
  Primrec
    (elim falsum verum (fun {k} f v => nrel ⟨k, (f, v)⟩.snd.1 ⟨k, (f, v)⟩.snd.2)
      (fun {k} f v => rel ⟨k, (f, v)⟩.snd.1 ⟨k, (f, v)⟩.snd.2) or and ex all)
p : UFormula L μ
⊢ elim falsum verum (fun {k} f v => nrel ⟨k, (f, v)⟩.snd.1 ⟨k, (f, v)⟩.snd.2)
      (fun {k} f v => rel ⟨k, (f, v)⟩.snd.1 ⟨k, (f, v)⟩.snd.2) or and ex all p =
    p.neg
Tactic:
simp
State after:
L : Language
μ : Type v
inst✝⁴ : (k : ℕ) → Primcodable (L.Func k)
inst✝³ : (k : ℕ) → Primcodable (L.Rel k)
inst✝² : UniformlyPrimcodable L.Func
inst✝¹ : UniformlyPrimcodable L.Rel
inst✝ : Primcodable μ
this :
  Primrec
    (elim falsum verum (fun {k} f v => nrel ⟨k, (f, v)⟩.snd.1 ⟨k, (f, v)⟩.snd.2)
      (fun {k} f v => rel ⟨k, (f, v)⟩.snd.1 ⟨k, (f, v)⟩.snd.2) or and ex all)
p : UFormula L μ
⊢ elim falsum verum (fun {k} f v => nrel f v) (fun {k} f v => rel f v) or and ex all p = p.neg

State before:
L : Language
μ : Type v
inst✝⁴ : (k : ℕ) → Primcodable (L.Func k)
inst✝³ : (k : ℕ) → Primcodable (L.Rel k)
inst✝² : UniformlyPrimcodable L.Func
inst✝¹ : UniformlyPrimcodable L.Rel
inst✝ : Primcodable μ
this :
  Primrec
    (elim falsum verum (fun {k} f v => nrel ⟨k, (f, v)⟩.snd.1 ⟨k, (f, v)⟩.snd.2)
      (fun {k} f v => rel ⟨k, (f, v)⟩.snd.1 ⟨k, (f, v)⟩.snd.2) or and ex all)
p : UFormula L μ
⊢ elim falsum verum (fun {k} f v => nrel f v) (fun {k} f v => rel f v) or and ex all p = p.neg
Tactic:
induction p <;> simp[elim, neg, *]
State after:
no goals