Theorem: LO.FirstOrder.Semiformula.eval_ballClosure (Arithmetization/Vorspiel/Vorspiel.lean)

State before:
ξ : Type u_2
L : Language
M : Type u_1
inst✝ : Nonempty M
s : Structure L M
n : ℕ
ε : ξ → M
p : Fin n → Semiformula L ξ 1
q : Semiformula L ξ n
⊢ (Evalf s ε) (ballClosure p q) ↔ ∀ (e : Fin n → M), (∀ (i : Fin n), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q
Tactic:
induction' n with n IH
State after:
case zero
ξ : Type u_2
L : Language
M : Type u_1
inst✝ : Nonempty M
s : Structure L M
n : ℕ
ε : ξ → M
p : Fin 0 → Semiformula L ξ 1
q : Semiformula L ξ 0
⊢ (Evalf s ε) (ballClosure p q) ↔ ∀ (e : Fin 0 → M), (∀ (i : Fin 0), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q

case succ
ξ : Type u_2
L : Language
M : Type u_1
inst✝ : Nonempty M
s : Structure L M
n✝ : ℕ
ε : ξ → M
n : ℕ
IH :
  ∀ {p : Fin n → Semiformula L ξ 1} {q : Semiformula L ξ n},
    (Evalf s ε) (ballClosure p q) ↔ ∀ (e : Fin n → M), (∀ (i : Fin n), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q
p : Fin (n + 1) → Semiformula L ξ 1
q : Semiformula L ξ (n + 1)
⊢ (Evalf s ε) (ballClosure p q) ↔
    ∀ (e : Fin (n + 1) → M), (∀ (i : Fin (n + 1)), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q

State before:
case zero
ξ : Type u_2
L : Language
M : Type u_1
inst✝ : Nonempty M
s : Structure L M
n : ℕ
ε : ξ → M
p : Fin 0 → Semiformula L ξ 1
q : Semiformula L ξ 0
⊢ (Evalf s ε) (ballClosure p q) ↔ ∀ (e : Fin 0 → M), (∀ (i : Fin 0), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q
Tactic:
simp [Matrix.empty_eq]
State after:
no goals

State before:
case succ
ξ : Type u_2
L : Language
M : Type u_1
inst✝ : Nonempty M
s : Structure L M
n✝ : ℕ
ε : ξ → M
n : ℕ
IH :
  ∀ {p : Fin n → Semiformula L ξ 1} {q : Semiformula L ξ n},
    (Evalf s ε) (ballClosure p q) ↔ ∀ (e : Fin n → M), (∀ (i : Fin n), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q
p : Fin (n + 1) → Semiformula L ξ 1
q : Semiformula L ξ (n + 1)
⊢ (Evalf s ε) (ballClosure p q) ↔
    ∀ (e : Fin (n + 1) → M), (∀ (i : Fin (n + 1)), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q
Tactic:
simp [ball_closure_succ, IH]
State after:
case succ
ξ : Type u_2
L : Language
M : Type u_1
inst✝ : Nonempty M
s : Structure L M
n✝ : ℕ
ε : ξ → M
n : ℕ
IH :
  ∀ {p : Fin n → Semiformula L ξ 1} {q : Semiformula L ξ n},
    (Evalf s ε) (ballClosure p q) ↔ ∀ (e : Fin n → M), (∀ (i : Fin n), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q
p : Fin (n + 1) → Semiformula L ξ 1
q : Semiformula L ξ (n + 1)
⊢ (∀ (e : Fin n → M),
      (∀ (i : Fin n), (Eval s ![e i] ε) (p i.succ)) → ∀ (x : M), (Eval s ![x] ε) (p 0) → (Eval s (x :> e) ε) q) ↔
    ∀ (e : Fin (n + 1) → M), (∀ (i : Fin (n + 1)), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q

State before:
case succ
ξ : Type u_2
L : Language
M : Type u_1
inst✝ : Nonempty M
s : Structure L M
n✝ : ℕ
ε : ξ → M
n : ℕ
IH :
  ∀ {p : Fin n → Semiformula L ξ 1} {q : Semiformula L ξ n},
    (Evalf s ε) (ballClosure p q) ↔ ∀ (e : Fin n → M), (∀ (i : Fin n), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q
p : Fin (n + 1) → Semiformula L ξ 1
q : Semiformula L ξ (n + 1)
⊢ (∀ (e : Fin n → M),
      (∀ (i : Fin n), (Eval s ![e i] ε) (p i.succ)) → ∀ (x : M), (Eval s ![x] ε) (p 0) → (Eval s (x :> e) ε) q) ↔
    ∀ (e : Fin (n + 1) → M), (∀ (i : Fin (n + 1)), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q
Tactic:
constructor
State after:
case succ.mp
ξ : Type u_2
L : Language
M : Type u_1
inst✝ : Nonempty M
s : Structure L M
n✝ : ℕ
ε : ξ → M
n : ℕ
IH :
  ∀ {p : Fin n → Semiformula L ξ 1} {q : Semiformula L ξ n},
    (Evalf s ε) (ballClosure p q) ↔ ∀ (e : Fin n → M), (∀ (i : Fin n), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q
p : Fin (n + 1) → Semiformula L ξ 1
q : Semiformula L ξ (n + 1)
⊢ (∀ (e : Fin n → M),
      (∀ (i : Fin n), (Eval s ![e i] ε) (p i.succ)) → ∀ (x : M), (Eval s ![x] ε) (p 0) → (Eval s (x :> e) ε) q) →
    ∀ (e : Fin (n + 1) → M), (∀ (i : Fin (n + 1)), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q

case succ.mpr
ξ : Type u_2
L : Language
M : Type u_1
inst✝ : Nonempty M
s : Structure L M
n✝ : ℕ
ε : ξ → M
n : ℕ
IH :
  ∀ {p : Fin n → Semiformula L ξ 1} {q : Semiformula L ξ n},
    (Evalf s ε) (ballClosure p q) ↔ ∀ (e : Fin n → M), (∀ (i : Fin n), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q
p : Fin (n + 1) → Semiformula L ξ 1
q : Semiformula L ξ (n + 1)
⊢ (∀ (e : Fin (n + 1) → M), (∀ (i : Fin (n + 1)), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q) →
    ∀ (e : Fin n → M),
      (∀ (i : Fin n), (Eval s ![e i] ε) (p i.succ)) → ∀ (x : M), (Eval s ![x] ε) (p 0) → (Eval s (x :> e) ε) q

State before:
case succ.mp
ξ : Type u_2
L : Language
M : Type u_1
inst✝ : Nonempty M
s : Structure L M
n✝ : ℕ
ε : ξ → M
n : ℕ
IH :
  ∀ {p : Fin n → Semiformula L ξ 1} {q : Semiformula L ξ n},
    (Evalf s ε) (ballClosure p q) ↔ ∀ (e : Fin n → M), (∀ (i : Fin n), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q
p : Fin (n + 1) → Semiformula L ξ 1
q : Semiformula L ξ (n + 1)
⊢ (∀ (e : Fin n → M),
      (∀ (i : Fin n), (Eval s ![e i] ε) (p i.succ)) → ∀ (x : M), (Eval s ![x] ε) (p 0) → (Eval s (x :> e) ε) q) →
    ∀ (e : Fin (n + 1) → M), (∀ (i : Fin (n + 1)), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q
Tactic:
intro H e h
State after:
case succ.mp
ξ : Type u_2
L : Language
M : Type u_1
inst✝ : Nonempty M
s : Structure L M
n✝ : ℕ
ε : ξ → M
n : ℕ
IH :
  ∀ {p : Fin n → Semiformula L ξ 1} {q : Semiformula L ξ n},
    (Evalf s ε) (ballClosure p q) ↔ ∀ (e : Fin n → M), (∀ (i : Fin n), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q
p : Fin (n + 1) → Semiformula L ξ 1
q : Semiformula L ξ (n + 1)
H :
  ∀ (e : Fin n → M),
    (∀ (i : Fin n), (Eval s ![e i] ε) (p i.succ)) → ∀ (x : M), (Eval s ![x] ε) (p 0) → (Eval s (x :> e) ε) q
e : Fin (n + 1) → M
h : ∀ (i : Fin (n + 1)), (Eval s ![e i] ε) (p i)
⊢ (Eval s e ε) q

State before:
case succ.mpr
ξ : Type u_2
L : Language
M : Type u_1
inst✝ : Nonempty M
s : Structure L M
n✝ : ℕ
ε : ξ → M
n : ℕ
IH :
  ∀ {p : Fin n → Semiformula L ξ 1} {q : Semiformula L ξ n},
    (Evalf s ε) (ballClosure p q) ↔ ∀ (e : Fin n → M), (∀ (i : Fin n), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q
p : Fin (n + 1) → Semiformula L ξ 1
q : Semiformula L ξ (n + 1)
⊢ (∀ (e : Fin (n + 1) → M), (∀ (i : Fin (n + 1)), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q) →
    ∀ (e : Fin n → M),
      (∀ (i : Fin n), (Eval s ![e i] ε) (p i.succ)) → ∀ (x : M), (Eval s ![x] ε) (p 0) → (Eval s (x :> e) ε) q
Tactic:
intro H e h x hx
State after:
case succ.mpr
ξ : Type u_2
L : Language
M : Type u_1
inst✝ : Nonempty M
s : Structure L M
n✝ : ℕ
ε : ξ → M
n : ℕ
IH :
  ∀ {p : Fin n → Semiformula L ξ 1} {q : Semiformula L ξ n},
    (Evalf s ε) (ballClosure p q) ↔ ∀ (e : Fin n → M), (∀ (i : Fin n), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q
p : Fin (n + 1) → Semiformula L ξ 1
q : Semiformula L ξ (n + 1)
H : ∀ (e : Fin (n + 1) → M), (∀ (i : Fin (n + 1)), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q
e : Fin n → M
h : ∀ (i : Fin n), (Eval s ![e i] ε) (p i.succ)
x : M
hx : (Eval s ![x] ε) (p 0)
⊢ (Eval s (x :> e) ε) q

State before:
case succ.mpr
ξ : Type u_2
L : Language
M : Type u_1
inst✝ : Nonempty M
s : Structure L M
n✝ : ℕ
ε : ξ → M
n : ℕ
IH :
  ∀ {p : Fin n → Semiformula L ξ 1} {q : Semiformula L ξ n},
    (Evalf s ε) (ballClosure p q) ↔ ∀ (e : Fin n → M), (∀ (i : Fin n), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q
p : Fin (n + 1) → Semiformula L ξ 1
q : Semiformula L ξ (n + 1)
H : ∀ (e : Fin (n + 1) → M), (∀ (i : Fin (n + 1)), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q
e : Fin n → M
h : ∀ (i : Fin n), (Eval s ![e i] ε) (p i.succ)
x : M
hx : (Eval s ![x] ε) (p 0)
⊢ (Eval s (x :> e) ε) q
Tactic:
exact H (x :> e) (Fin.cases (by simpa [Matrix.empty_eq] using hx) (fun i ↦ by simpa using h i))
State after:
no goals

State before:
ξ : Type u_2
L : Language
M : Type u_1
inst✝ : Nonempty M
s : Structure L M
n✝ : ℕ
ε : ξ → M
n : ℕ
IH :
  ∀ {p : Fin n → Semiformula L ξ 1} {q : Semiformula L ξ n},
    (Evalf s ε) (ballClosure p q) ↔ ∀ (e : Fin n → M), (∀ (i : Fin n), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q
p : Fin (n + 1) → Semiformula L ξ 1
q : Semiformula L ξ (n + 1)
H : ∀ (e : Fin (n + 1) → M), (∀ (i : Fin (n + 1)), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q
e : Fin n → M
h : ∀ (i : Fin n), (Eval s ![e i] ε) (p i.succ)
x : M
hx : (Eval s ![x] ε) (p 0)
⊢ (Eval s ![(x :> e) 0] ε) (p 0)
Tactic:
simpa [Matrix.empty_eq] using hx
State after:
no goals

State before:
ξ : Type u_2
L : Language
M : Type u_1
inst✝ : Nonempty M
s : Structure L M
n✝ : ℕ
ε : ξ → M
n : ℕ
IH :
  ∀ {p : Fin n → Semiformula L ξ 1} {q : Semiformula L ξ n},
    (Evalf s ε) (ballClosure p q) ↔ ∀ (e : Fin n → M), (∀ (i : Fin n), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q
p : Fin (n + 1) → Semiformula L ξ 1
q : Semiformula L ξ (n + 1)
H : ∀ (e : Fin (n + 1) → M), (∀ (i : Fin (n + 1)), (Eval s ![e i] ε) (p i)) → (Eval s e ε) q
e : Fin n → M
h : ∀ (i : Fin n), (Eval s ![e i] ε) (p i.succ)
x : M
hx : (Eval s ![x] ε) (p 0)
i : Fin n
⊢ (Eval s ![(x :> e) i.succ] ε) (p i.succ)
Tactic:
simpa using h i
State after:
no goals