Vec #
Equations
- LO.Arith.instCons_arithmetization = { cons := fun (x1 x2 : V) => ⟪x1, x2⟫ + 1 }
Equations
- LO.Arith.«term_∷_» = Lean.ParserDescr.trailingNode `LO.Arith.«term_∷_» 67 68 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ∷ ") (Lean.ParserDescr.cat `term 67))
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.
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
Equations
- One or more equations did not get rendered due to their size.
@[simp]
theorem
LO.Arith.eval_cons
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
(v : Fin 3 → V)
:
V ⊧/v (FirstOrder.Arith.HierarchySymbol.Semiformula.val FirstOrder.Arith.consDef) ↔ v 0 = cons (v 1) (v 2)
instance
LO.Arith.cons_definable'
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
(ℌ : FirstOrder.Arith.HierarchySymbol)
:
Equations
- One or more equations did not get rendered due to their size.
theorem
LO.Arith.mkVec₁_defined
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
:
𝚺₀-Function₁ fun (x : V) => ?[x] via FirstOrder.Arith.mkVec₁Def
@[simp]
theorem
LO.Arith.eval_mkVec₁Def
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
(v : Fin 2 → V)
:
V ⊧/v (FirstOrder.Arith.HierarchySymbol.Semiformula.val FirstOrder.Arith.mkVec₁Def) ↔ v 0 = ?[v 1]
instance
LO.Arith.mkVec₁_definable
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
:
𝚺₀-Function₁ fun (x : V) => ?[x]
instance
LO.Arith.mkVec₁_definable'
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
(ℌ : FirstOrder.Arith.HierarchySymbol)
:
ℌ-Function₁ fun (x : V) => ?[x]
Equations
- One or more equations did not get rendered due to their size.
theorem
LO.Arith.mkVec₂_defined
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
:
𝚺₁-Function₂ fun (x y : V) => ?[x, y] via FirstOrder.Arith.mkVec₂Def
@[simp]
theorem
LO.Arith.eval_mkVec₂Def
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
(v : Fin 3 → V)
:
V ⊧/v (FirstOrder.Arith.HierarchySymbol.Semiformula.val FirstOrder.Arith.mkVec₂Def) ↔ v 0 = ?[v 1, v 2]
instance
LO.Arith.mkVec₂_definable
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
:
𝚺₁-Function₂ fun (x y : V) => ?[x, y]
instance
LO.Arith.mkVec₂_definable'
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
(Γ : SigmaPiDelta)
(m : ℕ)
:
{ Γ := Γ, rank := m + 1 }-Function₂ fun (x y : V) => ?[x, y]
N-th element of List #
Equations
- LO.Arith.Nth.Phi C pr = ((∃ (v : V), pr = ⟪v, ⟪0, LO.Arith.fstIdx v⟫⟫) ∨ ∃ (v : V) (i : V) (x : V), pr = ⟪v, ⟪i + 1, x⟫⟫ ∧ ⟪LO.Arith.sndIdx v, ⟪i, x⟫⟫ ∈ C)
Equations
- One or more equations did not get rendered due to their size.
Equations
- LO.Arith.Nth.construction = { Φ := fun (x : Fin 0 → V) => LO.Arith.Nth.Phi, defined := ⋯, monotone := ⋯ }
Instances For
Equations
- LO.Arith.Nth.Graph = LO.Arith.Nth.construction.Fixpoint ![]
Equations
- LO.Arith.Nth.graphDef = LO.Arith.Nth.blueprint.fixpointDef
instance
LO.Arith.Nth.graph_definable'
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
:
{ Γ := 𝚺, rank := 0 + 1 }-Predicate Graph
@[simp]
TODO: move
theorem
LO.Arith.Nth.graph_exists
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
(v i : V)
:
∃ (x : V), Graph ⟪v, ⟪i, x⟫⟫
theorem
LO.Arith.Nth.graph_existsUnique
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
(v i : V)
:
∃! x : V, Graph ⟪v, ⟪i, x⟫⟫
Equations
- LO.Arith.nth v i = Classical.choose! ⋯
Instances For
Equations
- One or more equations did not get rendered due to their size.
theorem
LO.Arith.nth_eq_of_graph
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{v i x : V}
(h : Nth.Graph ⟪v, ⟪i, x⟫⟫)
:
@[simp]
@[simp]
@[simp]
theorem
LO.Arith.cons_induction
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
(Γ : SigmaPiDelta)
{P : V → Prop}
(hP : { Γ := Γ, rank := 1 }-Predicate P)
(nil : P 0)
(cons : ∀ (x v : V), P v → P (cons x v))
(v : V)
:
P v
theorem
LO.Arith.cons_induction_sigma1
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{P : V → Prop}
(hP : 𝚺₁-Predicate P)
(nil : P 0)
(cons : ∀ (x v : V), P v → P (cons x v))
(v : V)
:
P v
theorem
LO.Arith.cons_induction_pi1
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{P : V → Prop}
(hP : 𝚷₁-Predicate P)
(nil : P 0)
(cons : ∀ (x v : V), P v → P (cons x v))
(v : V)
:
P v
Equations
- One or more equations did not get rendered due to their size.
@[simp]
theorem
LO.Arith.eval_nthDef
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
(v : Fin 3 → V)
:
V ⊧/v (FirstOrder.Arith.HierarchySymbol.Semiformula.val FirstOrder.Arith.nthDef) ↔ v 0 = nth (v 1) (v 2)
instance
LO.Arith.nth_definable'
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
(Γ : SigmaPiDelta)
(m : ℕ)
:
{ Γ := Γ, rank := m + 1 }-Function₂ nth
@[simp]
theorem
LO.Arith.nth_lt_of_pos
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{v : V}
(hv : 0 < v)
(i : V)
:
@[simp]
Inductivly Construction of Function on List #
Equations
- One or more equations did not get rendered due to their size.
structure
LO.Arith.VecRec.Construction
(V : Type u_1)
[ORingStruc V]
{arity : ℕ}
(β : Blueprint arity)
:
Type u_1
- nil (param : Fin arity → V) : V
- nil_defined : FirstOrder.Arith.HierarchySymbol.DefinedFunction self.nil β.nil
def
LO.Arith.VecRec.Construction.Phi
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{arity : ℕ}
{β : Blueprint arity}
(c : Construction V β)
(param : Fin arity → V)
(C : Set V)
(pr : V)
:
def
LO.Arith.VecRec.Construction.construction
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{arity : ℕ}
{β : Blueprint arity}
(c : Construction V β)
:
Fixpoint.Construction V β.blueprint
Equations
- c.construction = { Φ := c.Phi, defined := ⋯, monotone := ⋯ }
Instances For
instance
LO.Arith.VecRec.Construction.instFiniteConstruction
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{arity : ℕ}
{β : Blueprint arity}
(c : Construction V β)
:
Fixpoint.Construction.Finite V c.construction
def
LO.Arith.VecRec.Construction.Graph
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{arity : ℕ}
{β : Blueprint arity}
(c : Construction V β)
(param : Fin arity → V)
:
V → Prop
Equations
- c.Graph param = c.construction.Fixpoint param
theorem
LO.Arith.VecRec.Construction.graph_defined
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{arity : ℕ}
{β : Blueprint arity}
(c : Construction V β)
:
FirstOrder.Arith.HierarchySymbol.Defined
(fun (v : Fin (arity + 1) → V) => c.Graph (fun (x : Fin arity) => v x.succ) (v 0)) β.graphDef
instance
LO.Arith.VecRec.Construction.graph_definable
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{arity : ℕ}
{β : Blueprint arity}
(c : Construction V β)
:
instance
LO.Arith.VecRec.Construction.graph_definable'
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{arity : ℕ}
{β : Blueprint arity}
(c : Construction V β)
(param : Fin arity → V)
:
𝚺₁-Predicate c.Graph param
instance
LO.Arith.VecRec.Construction.graph_definable''
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{arity : ℕ}
{β : Blueprint arity}
(c : Construction V β)
(param : Fin arity → V)
:
{ Γ := 𝚺, rank := 0 + 1 }-Predicate c.Graph param
theorem
LO.Arith.VecRec.Construction.graph_case
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{arity : ℕ}
{β : Blueprint arity}
(c : Construction V β)
{param : Fin arity → V}
{pr : V}
:
theorem
LO.Arith.VecRec.Construction.graph_nil
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{arity : ℕ}
{β : Blueprint arity}
(c : Construction V β)
{param : Fin arity → V}
{l : V}
:
theorem
LO.Arith.VecRec.Construction.graph_cons
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{arity : ℕ}
{β : Blueprint arity}
(c : Construction V β)
{param : Fin arity → V}
{x xs y : V}
:
theorem
LO.Arith.VecRec.Construction.graph_exists
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{arity : ℕ}
{β : Blueprint arity}
(c : Construction V β)
(param : Fin arity → V)
(xs : V)
:
∃ (y : V), c.Graph param ⟪xs, y⟫
theorem
LO.Arith.VecRec.Construction.graph_unique
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{arity : ℕ}
{β : Blueprint arity}
(c : Construction V β)
{param : Fin arity → V}
{xs y₁ y₂ : V}
:
c.Graph param ⟪xs, y₁⟫ → c.Graph param ⟪xs, y₂⟫ → y₁ = y₂
theorem
LO.Arith.VecRec.Construction.graph_existsUnique
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{arity : ℕ}
{β : Blueprint arity}
(c : Construction V β)
(param : Fin arity → V)
(xs : V)
:
∃! y : V, c.Graph param ⟪xs, y⟫
def
LO.Arith.VecRec.Construction.result
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{arity : ℕ}
{β : Blueprint arity}
(c : Construction V β)
(param : Fin arity → V)
(xs : V)
:
V
Equations
- c.result param xs = Classical.choose! ⋯
theorem
LO.Arith.VecRec.Construction.result_graph
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{arity : ℕ}
{β : Blueprint arity}
(c : Construction V β)
(param : Fin arity → V)
(xs : V)
:
c.Graph param ⟪xs, c.result param xs⟫
theorem
LO.Arith.VecRec.Construction.result_eq_of_graph
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{arity : ℕ}
{β : Blueprint arity}
(c : Construction V β)
(param : Fin arity → V)
{xs y : V}
(h : c.Graph param ⟪xs, y⟫)
:
c.result param xs = y
@[simp]
theorem
LO.Arith.VecRec.Construction.result_nil
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{arity : ℕ}
{β : Blueprint arity}
(c : Construction V β)
(param : Fin arity → V)
:
c.result param 0 = c.nil param
@[simp]
theorem
LO.Arith.VecRec.Construction.result_cons
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{arity : ℕ}
{β : Blueprint arity}
(c : Construction V β)
(param : Fin arity → V)
(x xs : V)
:
theorem
LO.Arith.VecRec.Construction.result_defined
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{arity : ℕ}
{β : Blueprint arity}
(c : Construction V β)
:
FirstOrder.Arith.HierarchySymbol.DefinedFunction
(fun (v : Fin (arity + 1) → V) => c.result (fun (x : Fin arity) => v x.succ) (v 0)) β.resultDef
@[simp]
theorem
LO.Arith.VecRec.Construction.eval_resultDef
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{arity : ℕ}
{β : Blueprint arity}
(c : Construction V β)
(v : Fin (arity + 2) → V)
:
V ⊧/v (FirstOrder.Arith.HierarchySymbol.Semiformula.val β.resultDef) ↔ v 0 = c.result (fun (x : Fin arity) => v x.succ.succ) (v 1)
instance
LO.Arith.VecRec.Construction.result_definable
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{arity : ℕ}
{β : Blueprint arity}
(c : Construction V β)
:
instance
LO.Arith.VecRec.Construction.result_definable'
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{arity : ℕ}
{β : Blueprint arity}
(c : Construction V β)
(Γ : SigmaPiDelta)
(m : ℕ)
:
Length of List #
Equations
- One or more equations did not get rendered due to their size.
Equations
- LO.Arith.Len.construction = { nil := fun (x : Fin 0 → V) => 0, cons := fun (x : Fin 0 → V) (x x ih : V) => ih + 1, nil_defined := ⋯, cons_defined := ⋯ }
Equations
- LO.Arith.len v = LO.Arith.Len.construction.result ![] v
Instances For
Equations
@[simp]
theorem
LO.Arith.eval_lenDef
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
(v : Fin 2 → V)
:
V ⊧/v (FirstOrder.Arith.HierarchySymbol.Semiformula.val FirstOrder.Arith.lenDef) ↔ v 0 = len (v 1)
instance
LO.Arith.len_definable'
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
(Γ : SigmaPiDelta)
(m : ℕ)
:
{ Γ := Γ, rank := m + 1 }-Function₁ len
@[simp]
Maximum of List #
Equations
- One or more equations did not get rendered due to their size.
Equations
- LO.Arith.ListMax.construction = { nil := fun (x : Fin 0 → V) => 0, cons := fun (x : Fin 0 → V) (x x_1 ih : V) => x ⊔ ih, nil_defined := ⋯, cons_defined := ⋯ }
Equations
- LO.Arith.listMax v = LO.Arith.ListMax.construction.result ![] v
Equations
@[simp]
instance
LO.Arith.listMax_definable'
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
(Γ : SigmaPiDelta)
(m : ℕ)
:
{ Γ := Γ, rank := m + 1 }-Function₁ listMax
Take Last k-Element #
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
- LO.Arith.takeLast v k = LO.Arith.TakeLast.construction.result ![k] v
@[simp]
Equations
@[simp]
theorem
LO.Arith.eval_takeLastDef
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
(v : Fin 3 → V)
:
V ⊧/v (FirstOrder.Arith.HierarchySymbol.Semiformula.val FirstOrder.Arith.takeLastDef) ↔ v 0 = takeLast (v 1) (v 2)
instance
LO.Arith.takeLast_definable'
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
(Γ : SigmaPiDelta)
(m : ℕ)
:
{ Γ := Γ, rank := m + 1 }-Function₂ takeLast
@[simp]
@[simp]
Concatation #
Equations
- One or more equations did not get rendered due to their size.
Equations
- LO.Arith.Concat.construction = { nil := fun (param : Fin 1 → V) => ?[param 0], cons := fun (x : Fin 1 → V) (x x_1 ih : V) => cons x ih, nil_defined := ⋯, cons_defined := ⋯ }
Equations
- LO.Arith.concat v z = LO.Arith.Concat.construction.result ![z] v
Instances For
@[simp]
Equations
@[simp]
theorem
LO.Arith.eval_concatDef
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
(v : Fin 3 → V)
:
V ⊧/v (FirstOrder.Arith.HierarchySymbol.Semiformula.val FirstOrder.Arith.concatDef) ↔ v 0 = concat (v 1) (v 2)
instance
LO.Arith.concat_definable'
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
(Γ : SigmaPiDelta)
(m : ℕ)
:
{ Γ := Γ, rank := m + 1 }-Function₂ concat
@[simp]
Membership #
Equations
- LO.Arith.MemVec x v = ∃ i < LO.Arith.len v, x = LO.Arith.nth v i
Instances For
Equations
- LO.Arith.«term_∈ᵥ_» = Lean.ParserDescr.trailingNode `LO.Arith.«term_∈ᵥ_» 40 41 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ∈ᵥ ") (Lean.ParserDescr.cat `term 41))
@[simp]
theorem
LO.Arith.nth_mem_memVec
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{i v : V}
(h : i < len v)
:
@[simp]
theorem
LO.Arith.le_of_memVec
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{x v : V}
(h : MemVec x v)
:
x ≤ v
Equations
- One or more equations did not get rendered due to their size.
@[simp]
theorem
LO.Arith.eval_memVecDef
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
(v : Fin 2 → V)
:
V ⊧/v (FirstOrder.Arith.HierarchySymbol.Semiformula.val FirstOrder.Arith.memVecDef) ↔ MemVec (v 0) (v 1)
instance
LO.Arith.memVec_definable'
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
(Γ : SigmaPiDelta)
(m : ℕ)
:
Subset #
Equations
- LO.Arith.SubsetVec v w = ∀ (x : V), LO.Arith.MemVec x v → LO.Arith.MemVec x w
Equations
- LO.Arith.«term_⊆ᵥ_» = Lean.ParserDescr.trailingNode `LO.Arith.«term_⊆ᵥ_» 30 31 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊆ᵥ ") (Lean.ParserDescr.cat `term 31))
@[simp]
@[simp]
Equations
- One or more equations did not get rendered due to their size.
@[simp]
instance
LO.Arith.subsetVec_definable'
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
(Γ : SigmaPiDelta)
(m : ℕ)
:
Repeat #
Equations
- One or more equations did not get rendered due to their size.
Equations
- LO.Arith.repeatVec.construction = { zero := fun (x : Fin 1 → V) => 0, succ := fun (x : Fin 1 → V) (x_1 ih : V) => cons (x 0) ih, zero_defined := ⋯, succ_defined := ⋯ }
repeatVec x k = x ∷ x ∷ x ∷ ... k times ... ∷ 0
Equations
- LO.Arith.repeatVec x k = LO.Arith.repeatVec.construction.result ![x] k
@[simp]
Equations
- One or more equations did not get rendered due to their size.
@[simp]
theorem
LO.Arith.eval_repeatVec
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
(v : Fin 3 → V)
:
V ⊧/v (FirstOrder.Arith.HierarchySymbol.Semiformula.val FirstOrder.Arith.repeatVecDef) ↔ v 0 = repeatVec (v 1) (v 2)
instance
LO.Arith.repeatVec_definable'
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{m : ℕ}
(Γ : SigmaPiDelta)
:
{ Γ := Γ, rank := m + 1 }-Function₂ repeatVec
@[simp]
@[simp]
theorem
LO.Arith.nth_repeatVec
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
(x k : V)
{i : V}
(h : i < k)
:
Convert to Set #
Equations
- One or more equations did not get rendered due to their size.
Equations
- LO.Arith.vecToSet v = LO.Arith.VecToSet.construction.result ![] v
@[simp]
Equations
@[simp]
instance
LO.Arith.vecToSet_definable'
{V : Type u_1}
[ORingStruc V]
[V ⊧ₘ* 𝐈𝚺₁]
{m : ℕ}
(Γ : SigmaPiDelta)
:
{ Γ := Γ, rank := m + 1 }-Function₁ vecToSet