Theorem: Arith.Model.Definable.of_delta (Arithmetization/Definability/Hierarchy.lean)

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 : ℕ
h : Definable L (𝚫, m) P
Γ : SigmaPiDelta
⊢ Definable L (Γ, m) P
Tactic:
rcases h with ⟨p, h⟩
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 : ℕ
Γ : SigmaPiDelta
p : HSemiformula L M k (𝚫, m)
h : DefinedWithParam P p
⊢ Definable L (Γ, m) P

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 : ℕ
Γ : SigmaPiDelta
p : HSemiformula L M k (𝚫, m)
h : DefinedWithParam P p
⊢ Definable L (Γ, m) P
Tactic:
match Γ with
| 𝚺 => exact ⟨p.sigma, by intro v; simp [HSemiformula.val_sigma, h.df.iff]⟩
| 𝚷 => exact ⟨p.pi, by intro v; simp [←h.proper v, HSemiformula.val_sigma, h.df.iff]⟩
| 𝚫 => exact ⟨p, h⟩
State after:
no goals

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
p : HSemiformula L M k (𝚫, m)
h : DefinedWithParam P p
⊢ Definable L (𝚺, m) P
Tactic:
exact ⟨p.sigma, by intro v; simp [HSemiformula.val_sigma, h.df.iff]⟩
State after:
no goals

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
p : HSemiformula L M k (𝚫, m)
h : DefinedWithParam P p
⊢ DefinedWithParam P p.sigma
Tactic:
intro v
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 : ℕ
Γ : SigmaPiDelta
p : HSemiformula L M k (𝚫, m)
h : DefinedWithParam P p
v : Fin k → M
⊢ P v ↔ (Semiformula.Evalm M v id) p.sigma.val

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
p : HSemiformula L M k (𝚫, m)
h : DefinedWithParam P p
v : Fin k → M
⊢ P v ↔ (Semiformula.Evalm M v id) p.sigma.val
Tactic:
simp [HSemiformula.val_sigma, h.df.iff]
State after:
no goals

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
p : HSemiformula L M k (𝚫, m)
h : DefinedWithParam P p
⊢ Definable L (𝚷, m) P
Tactic:
exact ⟨p.pi, by intro v; simp [←h.proper v, HSemiformula.val_sigma, h.df.iff]⟩
State after:
no goals

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
p : HSemiformula L M k (𝚫, m)
h : DefinedWithParam P p
⊢ DefinedWithParam P p.pi
Tactic:
intro v
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 : ℕ
Γ : SigmaPiDelta
p : HSemiformula L M k (𝚫, m)
h : DefinedWithParam P p
v : Fin k → M
⊢ P v ↔ (Semiformula.Evalm M v id) p.pi.val

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
p : HSemiformula L M k (𝚫, m)
h : DefinedWithParam P p
v : Fin k → M
⊢ P v ↔ (Semiformula.Evalm M v id) p.pi.val
Tactic:
simp [←h.proper v, HSemiformula.val_sigma, h.df.iff]
State after:
no goals

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
p : HSemiformula L M k (𝚫, m)
h : DefinedWithParam P p
⊢ Definable L (𝚫, m) P
Tactic:
exact ⟨p, h⟩
State after:
no goals