internlm/Lean-Github huggingface dataset:
Theorem: Arith.Model.DefinableFunction.graph_delta
Proof state before:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k✝ : ℕ
P Q : (Fin k✝ → M) → Prop
m k : ℕ
f : (Fin k → M) → M
h : DefinableFunction L (𝚺, m) f
⊢ DefinableFunction L (𝚫, m) f
Tactic:
rcases h with ⟨p, h⟩
Proof state after:
case mk.intro
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k✝ : ℕ
P Q : (Fin k✝ → M) → Prop
m k : ℕ
f : (Fin k → M) → M
p : HSemiformula L M (k + 1) (𝚺, m)
h : DefinedWithParam (fun v => v 0 = f fun x => v x.succ) p
⊢ DefinableFunction L (𝚫, m) f
Theorem: Arith.Model.DefinableFunction.graph_delta
Proof state before:
case mk.intro
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k✝ : ℕ
P Q : (Fin k✝ → M) → Prop
m k : ℕ
f : (Fin k → M) → M
p : HSemiformula L M (k + 1) (𝚺, m)
h : DefinedWithParam (fun v => v 0 = f fun x => v x.succ) p
⊢ DefinableFunction L (𝚫, m) f
Tactic:
exact ⟨p.graphDelta, by
  cases' m with m <;> simp [HSemiformula.graphDelta]
  intro e; simp [Empty.eq_elim, h.df.iff]
  exact eq_comm, by
  intro v; simp [h.df.iff]⟩
Proof state after:
no goals
Theorem: Arith.Model.DefinableFunction.graph_delta
Proof state before:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k✝ : ℕ
P Q : (Fin k✝ → M) → Prop
m k : ℕ
f : (Fin k → M) → M
p : HSemiformula L M (k + 1) (𝚺, m)
h : DefinedWithParam (fun v => v 0 = f fun x => v x.succ) p
⊢ HSemiformula.ProperWithParamOn M p.graphDelta
Tactic:
cases' m with m <;> simp [HSemiformula.graphDelta]
Proof state after:
case succ
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k✝ : ℕ
P Q : (Fin k✝ → M) → Prop
k : ℕ
f : (Fin k → M) → M
m : ℕ
p : HSemiformula L M (k + 1) (𝚺, m + 1)
h : DefinedWithParam (fun v => v 0 = f fun x => v x.succ) p
⊢ HSemiformula.ProperWithParamOn M
    (p.mkDelta (HSemiformula.mkPi (“∀' (!((Rew.substs (#0 :> fun x => #x.succ.succ)).hom p.val) → #0 = #1)”) ⋯))
Theorem: Arith.Model.DefinableFunction.graph_delta
Proof state before:
case succ
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k✝ : ℕ
P Q : (Fin k✝ → M) → Prop
k : ℕ
f : (Fin k → M) → M
m : ℕ
p : HSemiformula L M (k + 1) (𝚺, m + 1)
h : DefinedWithParam (fun v => v 0 = f fun x => v x.succ) p
⊢ HSemiformula.ProperWithParamOn M
    (p.mkDelta (HSemiformula.mkPi (“∀' (!((Rew.substs (#0 :> fun x => #x.succ.succ)).hom p.val) → #0 = #1)”) ⋯))
Tactic:
intro e
Proof state after:
case succ
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k✝ : ℕ
P Q : (Fin k✝ → M) → Prop
k : ℕ
f : (Fin k → M) → M
m : ℕ
p : HSemiformula L M (k + 1) (𝚺, m + 1)
h : DefinedWithParam (fun v => v 0 = f fun x => v x.succ) p
e : Fin (k + 1) → M
⊢ (Semiformula.Evalm M e id)
      (p.mkDelta
            (HSemiformula.mkPi (“∀' (!((Rew.substs (#0 :> fun x => #x.succ.succ)).hom p.val) → #0 = #1)”)
              ⋯)).sigma.val ↔
    (Semiformula.Evalm M e id)
      (p.mkDelta
            (HSemiformula.mkPi (“∀' (!((Rew.substs (#0 :> fun x => #x.succ.succ)).hom p.val) → #0 = #1)”) ⋯)).pi.val
Theorem: Arith.Model.DefinableFunction.graph_delta
Proof state before:
case succ
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k✝ : ℕ
P Q : (Fin k✝ → M) → Prop
k : ℕ
f : (Fin k → M) → M
m : ℕ
p : HSemiformula L M (k + 1) (𝚺, m + 1)
h : DefinedWithParam (fun v => v 0 = f fun x => v x.succ) p
e : Fin (k + 1) → M
⊢ (Semiformula.Evalm M e id)
      (p.mkDelta
            (HSemiformula.mkPi (“∀' (!((Rew.substs (#0 :> fun x => #x.succ.succ)).hom p.val) → #0 = #1)”)
              ⋯)).sigma.val ↔
    (Semiformula.Evalm M e id)
      (p.mkDelta
            (HSemiformula.mkPi (“∀' (!((Rew.substs (#0 :> fun x => #x.succ.succ)).hom p.val) → #0 = #1)”) ⋯)).pi.val
Tactic:
simp [Empty.eq_elim, h.df.iff]
Proof state after:
case succ
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k✝ : ℕ
P Q : (Fin k✝ → M) → Prop
k : ℕ
f : (Fin k → M) → M
m : ℕ
p : HSemiformula L M (k + 1) (𝚺, m + 1)
h : DefinedWithParam (fun v => v 0 = f fun x => v x.succ) p
e : Fin (k + 1) → M
⊢ (e 0 = f fun x => e x.succ) ↔ (f fun x => e x.succ) = e 0
Theorem: Arith.Model.DefinableFunction.graph_delta
Proof state before:
case succ
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k✝ : ℕ
P Q : (Fin k✝ → M) → Prop
k : ℕ
f : (Fin k → M) → M
m : ℕ
p : HSemiformula L M (k + 1) (𝚺, m + 1)
h : DefinedWithParam (fun v => v 0 = f fun x => v x.succ) p
e : Fin (k + 1) → M
⊢ (e 0 = f fun x => e x.succ) ↔ (f fun x => e x.succ) = e 0
Tactic:
exact eq_comm
Proof state after:
no goals
Theorem: Arith.Model.DefinableFunction.graph_delta
Proof state before:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k✝ : ℕ
P Q : (Fin k✝ → M) → Prop
m k : ℕ
f : (Fin k → M) → M
p : HSemiformula L M (k + 1) (𝚺, m)
h : DefinedWithParam (fun v => v 0 = f fun x => v x.succ) p
⊢ FirstOrder.DefinedWithParam (fun v => v 0 = f fun x => v x.succ) p.graphDelta.val
Tactic:
intro v
Proof state after:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k✝ : ℕ
P Q : (Fin k✝ → M) → Prop
m k : ℕ
f : (Fin k → M) → M
p : HSemiformula L M (k + 1) (𝚺, m)
h : DefinedWithParam (fun v => v 0 = f fun x => v x.succ) p
v : Fin (k + 1) → M
⊢ (fun v => v 0 = f fun x => v x.succ) v ↔ (Semiformula.Evalm M v id) p.graphDelta.val
Theorem: Arith.Model.DefinableFunction.graph_delta
Proof state before:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k✝ : ℕ
P Q : (Fin k✝ → M) → Prop
m k : ℕ
f : (Fin k → M) → M
p : HSemiformula L M (k + 1) (𝚺, m)
h : DefinedWithParam (fun v => v 0 = f fun x => v x.succ) p
v : Fin (k + 1) → M
⊢ (fun v => v 0 = f fun x => v x.succ) v ↔ (Semiformula.Evalm M v id) p.graphDelta.val
Tactic:
simp [h.df.iff]
Proof state after:
no goals
Theorem: Arith.Model.DefinableFunction.var
Proof state before:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k✝ : ℕ
P Q : (Fin k✝ → M) → Prop
k : ℕ
i : Fin k
⊢ Hierarchy 𝚺 0 (“#0 = #i.succ”)
Tactic:
simp
Proof state after:
no goals
Theorem: Arith.Model.DefinableFunction.var
Proof state before:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k✝ : ℕ
P Q : (Fin k✝ → M) → Prop
k : ℕ
i : Fin k
⊢ DefinedWithParam (fun v => v 0 = (fun v => v i) fun x => v x.succ) (HSemiformula.mkSigma (“#0 = #i.succ”) ⋯)
Tactic:
intro _
Proof state after:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k✝ : ℕ
P Q : (Fin k✝ → M) → Prop
k : ℕ
i : Fin k
v✝ : Fin k.succ → M
⊢ (fun v => v 0 = (fun v => v i) fun x => v x.succ) v✝ ↔
    (Semiformula.Evalm M v✝ id) (HSemiformula.mkSigma (“#0 = #i.succ”) ⋯).val
Theorem: Arith.Model.DefinableFunction.var
Proof state before:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k✝ : ℕ
P Q : (Fin k✝ → M) → Prop
k : ℕ
i : Fin k
v✝ : Fin k.succ → M
⊢ (fun v => v 0 = (fun v => v i) fun x => v x.succ) v✝ ↔
    (Semiformula.Evalm M v✝ id) (HSemiformula.mkSigma (“#0 = #i.succ”) ⋯).val
Tactic:
simp
Proof state after:
no goals
Theorem: Arith.Model.DefinableFunction.const
Proof state before:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k✝ : ℕ
P Q : (Fin k✝ → M) → Prop
k : ℕ
c : M
⊢ Hierarchy 𝚺 0 (“#0 = &c”)
Tactic:
simp
Proof state after:
no goals
Theorem: Arith.Model.DefinableFunction.const
Proof state before:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k✝ : ℕ
P Q : (Fin k✝ → M) → Prop
k : ℕ
c : M
⊢ DefinedWithParam (fun v => v 0 = (fun x => c) fun x => v x.succ) (HSemiformula.mkSigma (“#0 = &c”) ⋯)
Tactic:
intro v
Proof state after:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k✝ : ℕ
P Q : (Fin k✝ → M) → Prop
k : ℕ
c : M
v : Fin (k + 1) → M
⊢ (fun v => v 0 = (fun x => c) fun x => v x.succ) v ↔
    (Semiformula.Evalm M v id) (HSemiformula.mkSigma (“#0 = &c”) ⋯).val
Theorem: Arith.Model.DefinableFunction.const
Proof state before:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k✝ : ℕ
P Q : (Fin k✝ → M) → Prop
k : ℕ
c : M
v : Fin (k + 1) → M
⊢ (fun v => v 0 = (fun x => c) fun x => v x.succ) v ↔
    (Semiformula.Evalm M v id) (HSemiformula.mkSigma (“#0 = &c”) ⋯).val
Tactic:
simp
Proof state after:
no goals
Theorem: Arith.Model.DefinableFunction.term_retraction
Proof state before:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k : ℕ
P Q : (Fin k → M) → Prop
t : Semiterm L M n
e : Fin n → Fin k
⊢ Hierarchy 𝚺 0 (“#0 = !!((Rew.substs fun x => #(e x).succ) t)”)
Tactic:
simp
Proof state after:
no goals
Theorem: Arith.Model.DefinableFunction.term_retraction
Proof state before:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k : ℕ
P Q : (Fin k → M) → Prop
t : Semiterm L M n
e : Fin n → Fin k
⊢ DefinedWithParam (fun v => v 0 = (fun v => Semiterm.valm M (fun x => v (e x)) id t) fun x => v x.succ)
    (HSemiformula.mkSigma (“#0 = !!((Rew.substs fun x => #(e x).succ) t)”) ⋯)
Tactic:
intro v
Proof state after:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k : ℕ
P Q : (Fin k → M) → Prop
t : Semiterm L M n
e : Fin n → Fin k
v : Fin k.succ → M
⊢ (fun v => v 0 = (fun v => Semiterm.valm M (fun x => v (e x)) id t) fun x => v x.succ) v ↔
    (Semiformula.Evalm M v id) (HSemiformula.mkSigma (“#0 = !!((Rew.substs fun x => #(e x).succ) t)”) ⋯).val
Theorem: Arith.Model.DefinableFunction.term_retraction
Proof state before:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k : ℕ
P Q : (Fin k → M) → Prop
t : Semiterm L M n
e : Fin n → Fin k
v : Fin k.succ → M
⊢ (fun v => v 0 = (fun v => Semiterm.valm M (fun x => v (e x)) id t) fun x => v x.succ) v ↔
    (Semiformula.Evalm M v id) (HSemiformula.mkSigma (“#0 = !!((Rew.substs fun x => #(e x).succ) t)”) ⋯).val
Tactic:
simp [Semiterm.val_substs]
Proof state after:
no goals
Theorem: Arith.Model.DefinableFunction.term
Proof state before:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k : ℕ
P Q : (Fin k → M) → Prop
t : Semiterm L M k
⊢ Hierarchy 𝚺 0 (“#0 = !!(Rew.bShift t)”)
Tactic:
simp
Proof state after:
no goals
Theorem: Arith.Model.DefinableFunction.term
Proof state before:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k : ℕ
P Q : (Fin k → M) → Prop
t : Semiterm L M k
⊢ DefinedWithParam (fun v => v 0 = (fun v => Semiterm.valm M v id t) fun x => v x.succ)
    (HSemiformula.mkSigma (“#0 = !!(Rew.bShift t)”) ⋯)
Tactic:
intro v
Proof state after:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k : ℕ
P Q : (Fin k → M) → Prop
t : Semiterm L M k
v : Fin (k + 1) → M
⊢ (fun v => v 0 = (fun v => Semiterm.valm M v id t) fun x => v x.succ) v ↔
    (Semiformula.Evalm M v id) (HSemiformula.mkSigma (“#0 = !!(Rew.bShift t)”) ⋯).val
Theorem: Arith.Model.DefinableFunction.term
Proof state before:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k : ℕ
P Q : (Fin k → M) → Prop
t : Semiterm L M k
v : Fin (k + 1) → M
⊢ (fun v => v 0 = (fun v => Semiterm.valm M v id t) fun x => v x.succ) v ↔
    (Semiformula.Evalm M v id) (HSemiformula.mkSigma (“#0 = !!(Rew.bShift t)”) ⋯).val
Tactic:
simp [Semiterm.val_bShift']
Proof state after:
no goals
Theorem: Arith.Model.DefinableFunction.of_eq
Proof state before:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k : ℕ
P Q : (Fin k → M) → Prop
f g : (Fin k → M) → M
h : ∀ (v : Fin k → M), f v = g v
H : DefinableFunction L Γ f
⊢ DefinableFunction L Γ g
Tactic:
rwa [show g = f from by funext v; simp [h]]
Proof state after:
no goals
Theorem: Arith.Model.DefinableFunction.of_eq
Proof state before:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k : ℕ
P Q : (Fin k → M) → Prop
f g : (Fin k → M) → M
h : ∀ (v : Fin k → M), f v = g v
H : DefinableFunction L Γ f
⊢ g = f
Tactic:
funext v
Proof state after:
case h
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k : ℕ
P Q : (Fin k → M) → Prop
f g : (Fin k → M) → M
h : ∀ (v : Fin k → M), f v = g v
H : DefinableFunction L Γ f
v : Fin k → M
⊢ g v = f v
Theorem: Arith.Model.DefinableFunction.of_eq
Proof state before:
case h
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k : ℕ
P Q : (Fin k → M) → Prop
f g : (Fin k → M) → M
h : ∀ (v : Fin k → M), f v = g v
H : DefinableFunction L Γ f
v : Fin k → M
⊢ g v = f v
Tactic:
simp [h]
Proof state after:
no goals
Theorem: Arith.Model.DefinableFunction.retraction
Proof state before:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k : ℕ
P Q : (Fin k → M) → Prop
f : (Fin k → M) → M
hf : DefinableFunction L Γ f
e : Fin k → Fin n
⊢ DefinableFunction L Γ fun v => f fun i => v (e i)
Tactic:
have := Definable.retraction (n := n + 1) hf (0 :> fun i ↦ (e i).succ)
Proof state after:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k : ℕ
P Q : (Fin k → M) → Prop
f : (Fin k → M) → M
hf : DefinableFunction L Γ f
e : Fin k → Fin n
this :
  Definable L Γ fun v =>
    (fun i => v ((0 :> fun i => (e i).succ) i)) 0 = f fun x => (fun i => v ((0 :> fun i => (e i).succ) i)) x.succ
⊢ DefinableFunction L Γ fun v => f fun i => v (e i)
Theorem: Arith.Model.DefinableFunction.retraction
Proof state before:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k : ℕ
P Q : (Fin k → M) → Prop
f : (Fin k → M) → M
hf : DefinableFunction L Γ f
e : Fin k → Fin n
this :
  Definable L Γ fun v =>
    (fun i => v ((0 :> fun i => (e i).succ) i)) 0 = f fun x => (fun i => v ((0 :> fun i => (e i).succ) i)) x.succ
⊢ DefinableFunction L Γ fun v => f fun i => v (e i)
Tactic:
simp at this
Proof state after:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k : ℕ
P Q : (Fin k → M) → Prop
f : (Fin k → M) → M
hf : DefinableFunction L Γ f
e : Fin k → Fin n
this : Definable L Γ fun v => v 0 = f fun x => v (e x).succ
⊢ DefinableFunction L Γ fun v => f fun i => v (e i)
Theorem: Arith.Model.DefinableFunction.retraction
Proof state before:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k : ℕ
P Q : (Fin k → M) → Prop
f : (Fin k → M) → M
hf : DefinableFunction L Γ f
e : Fin k → Fin n
this : Definable L Γ fun v => v 0 = f fun x => v (e x).succ
⊢ DefinableFunction L Γ fun v => f fun i => v (e i)
Tactic:
exact this.of_iff _ (by intro x; simp)
Proof state after:
no goals
Theorem: Arith.Model.DefinableFunction.retraction
Proof state before:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k : ℕ
P Q : (Fin k → M) → Prop
f : (Fin k → M) → M
hf : DefinableFunction L Γ f
e : Fin k → Fin n
this : Definable L Γ fun v => v 0 = f fun x => v (e x).succ
⊢ ∀ (x : Fin (n + 1) → M),
    (x 0 = (fun v => f fun i => v (e i)) fun x_1 => x x_1.succ) ↔ x 0 = f fun x_1 => x (e x_1).succ
Tactic:
intro x
Proof state after:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k : ℕ
P Q : (Fin k → M) → Prop
f : (Fin k → M) → M
hf : DefinableFunction L Γ f
e : Fin k → Fin n
this : Definable L Γ fun v => v 0 = f fun x => v (e x).succ
x : Fin (n + 1) → M
⊢ (x 0 = (fun v => f fun i => v (e i)) fun x_1 => x x_1.succ) ↔ x 0 = f fun x_1 => x (e x_1).succ
Theorem: Arith.Model.DefinableFunction.retraction
Proof state before:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ : HierarchySymbol
k : ℕ
P Q : (Fin k → M) → Prop
f : (Fin k → M) → M
hf : DefinableFunction L Γ f
e : Fin k → Fin n
this : Definable L Γ fun v => v 0 = f fun x => v (e x).succ
x : Fin (n + 1) → M
⊢ (x 0 = (fun v => f fun i => v (e i)) fun x_1 => x x_1.succ) ↔ x 0 = f fun x_1 => x (e x_1).succ
Tactic:
simp
Proof state after:
no goals
Theorem: Arith.Model.DefinableFunction₁.comp
Proof state before:
L : Language
inst✝⁹ : L.ORing
ξ : Type v
n : ℕ
M : Type u_1
inst✝⁸ : Zero M
inst✝⁷ : One M
inst✝⁶ : Add M
inst✝⁵ : Mul M
inst✝⁴ : LT M
inst✝³ : M ⊧ₘ* 𝐏𝐀⁻
inst✝² : Structure L M
inst✝¹ : Structure.ORing L M
inst✝ : Structure.Monotone L M
Γ✝ : HierarchySymbol
k✝ : ℕ
P Q : (Fin k✝ → M) → Prop
m : ℕ
Γ : SigmaPiDelta
k : ℕ
f : M → M
g : (Fin k → M) → M
hf : DefinableFunction₁ L (Γ, m + 1) f
hg : DefinableFunction L (𝚺, m + 1) g
⊢ DefinableFunction L (Γ, m + 1) fun v => f (g v)
Tactic:
simpa using Definable.comp₂ (P := Function.Graph f) (DefinableFunction.var 0) (hg.retraction Fin.succ) hf
Proof state after:
no goals