Theorem: LO.FirstOrder.Arith.Model.PR.Construction.result_defined (Arithmetization/ISigmaOne/HFS/PRF.lean)

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
k : ℕ
p : Formulae k
c : Construction M p
v : Fin k → M
⊢ DefinedFunction ℒₒᵣ 𝚺₁ (fun v => c.result (fun x => v x.succ) (v 0)) p.resultDef
Tactic:
intro v
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
k : ℕ
p : Formulae k
c : Construction M p
v✝ : Fin k → M
v : Fin (k + 1).succ → M
⊢ (fun v => v 0 = (fun v => c.result (fun x => v x.succ) (v 0)) fun x => v x.succ) v ↔
    (Semiformula.Evalbm M v) (HSemiformula.val p.resultDef)

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
k : ℕ
p : Formulae k
c : Construction M p
v✝ : Fin k → M
v : Fin (k + 1).succ → M
⊢ (fun v => v 0 = (fun v => c.result (fun x => v x.succ) (v 0)) fun x => v x.succ) v ↔
    (Semiformula.Evalbm M v) (HSemiformula.val p.resultDef)
Tactic:
simp [Formulae.resultDef, result_graph]
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
k : ℕ
p : Formulae k
c : Construction M p
v✝ : Fin k → M
v : Fin (k + 1).succ → M
⊢ (∃ s, c.CSeq (fun x => v x.succ.succ) s ∧ ⟪v 1, v 0⟫ ∈ s) ↔
    ∃ x,
      (Semiformula.Eval (standardModel M) (x :> fun i => v i.succ.succ) Empty.elim) (HSemiformula.val p.cseqDef) ∧
        ⟪v (Fin.succ 0), v 0⟫ ∈ x

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
k : ℕ
p : Formulae k
c : Construction M p
v✝ : Fin k → M
v : Fin (k + 1).succ → M
⊢ (∃ s, c.CSeq (fun x => v x.succ.succ) s ∧ ⟪v 1, v 0⟫ ∈ s) ↔
    ∃ x,
      (Semiformula.Eval (standardModel M) (x :> fun i => v i.succ.succ) Empty.elim) (HSemiformula.val p.cseqDef) ∧
        ⟪v (Fin.succ 0), v 0⟫ ∈ x
Tactic:
apply exists_congr
State after:
case h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
k : ℕ
p : Formulae k
c : Construction M p
v✝ : Fin k → M
v : Fin (k + 1).succ → M
⊢ ∀ (a : M),
    c.CSeq (fun x => v x.succ.succ) a ∧ ⟪v 1, v 0⟫ ∈ a ↔
      (Semiformula.Eval (standardModel M) (a :> fun i => v i.succ.succ) Empty.elim) (HSemiformula.val p.cseqDef) ∧
        ⟪v (Fin.succ 0), v 0⟫ ∈ a

State before:
case h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
k : ℕ
p : Formulae k
c : Construction M p
v✝ : Fin k → M
v : Fin (k + 1).succ → M
⊢ ∀ (a : M),
    c.CSeq (fun x => v x.succ.succ) a ∧ ⟪v 1, v 0⟫ ∈ a ↔
      (Semiformula.Eval (standardModel M) (a :> fun i => v i.succ.succ) Empty.elim) (HSemiformula.val p.cseqDef) ∧
        ⟪v (Fin.succ 0), v 0⟫ ∈ a
Tactic:
intro x
State after:
case h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
k : ℕ
p : Formulae k
c : Construction M p
v✝ : Fin k → M
v : Fin (k + 1).succ → M
x : M
⊢ c.CSeq (fun x => v x.succ.succ) x ∧ ⟪v 1, v 0⟫ ∈ x ↔
    (Semiformula.Eval (standardModel M) (x :> fun i => v i.succ.succ) Empty.elim) (HSemiformula.val p.cseqDef) ∧
      ⟪v (Fin.succ 0), v 0⟫ ∈ x

State before:
case h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
k : ℕ
p : Formulae k
c : Construction M p
v✝ : Fin k → M
v : Fin (k + 1).succ → M
x : M
⊢ c.CSeq (fun x => v x.succ.succ) x ∧ ⟪v 1, v 0⟫ ∈ x ↔
    (Semiformula.Eval (standardModel M) (x :> fun i => v i.succ.succ) Empty.elim) (HSemiformula.val p.cseqDef) ∧
      ⟪v (Fin.succ 0), v 0⟫ ∈ x
Tactic:
simp [c.cseq_defined_iff]
State after:
case h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
k : ℕ
p : Formulae k
c : Construction M p
v✝ : Fin k → M
v : Fin (k + 1).succ → M
x : M
⊢ c.CSeq (fun x => v x.succ.succ) x → (⟪v 1, v 0⟫ ∈ x ↔ ⟪v (Fin.succ 0), v 0⟫ ∈ x)

State before:
case h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
k : ℕ
p : Formulae k
c : Construction M p
v✝ : Fin k → M
v : Fin (k + 1).succ → M
x : M
⊢ c.CSeq (fun x => v x.succ.succ) x → (⟪v 1, v 0⟫ ∈ x ↔ ⟪v (Fin.succ 0), v 0⟫ ∈ x)
Tactic:
intros
State after:
case h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
k : ℕ
p : Formulae k
c : Construction M p
v✝ : Fin k → M
v : Fin (k + 1).succ → M
x : M
a✝ : c.CSeq (fun x => v x.succ.succ) x
⊢ ⟪v 1, v 0⟫ ∈ x ↔ ⟪v (Fin.succ 0), v 0⟫ ∈ x

State before:
case h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
k : ℕ
p : Formulae k
c : Construction M p
v✝ : Fin k → M
v : Fin (k + 1).succ → M
x : M
a✝ : c.CSeq (fun x => v x.succ.succ) x
⊢ ⟪v 1, v 0⟫ ∈ x ↔ ⟪v (Fin.succ 0), v 0⟫ ∈ x
Tactic:
rfl
State after:
no goals