Theorem: FirstOrder.Language.BoundedFormula.realize_toPrenex
File: Mathlib/ModelTheory/Semantics.lean

tactic: induction' φ with _ _ _ _ _ _ _ _ _ f1 f2 h1 h2 _ _ h
state_before: L : Language
L' : Language
M : Type w
N : Type ?u.229555
P : Type ?u.229558
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
α : Type u'
β : Type v'
n l : ℕ
φ✝ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v✝ : α → M
xs : Fin l → M
inst✝ : Nonempty M
φ : BoundedFormula L α n
v : α → M
⊢ ∀ {xs : Fin n → M}, Realize (toPrenex φ) v xs ↔ Realize φ v xs

tactic: . exact Iff.rfl
state_before: case falsum
L : Language
L' : Language
M : Type w
N : Type ?u.229555
P : Type ?u.229558
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
α : Type u'
β : Type v'
n l : ℕ
φ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v✝ : α → M
xs : Fin l → M
inst✝ : Nonempty M
v : α → M
n✝ : ℕ
⊢ ∀ {xs : Fin n✝ → M}, Realize (toPrenex falsum) v xs ↔ Realize falsum v xs

case equal
L : Language
L' : Language
M : Type w
N : Type ?u.229555
P : Type ?u.229558
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
α : Type u'
β : Type v'
n l : ℕ
φ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v✝ : α → M
xs : Fin l → M
inst✝ : Nonempty M
v : α → M
n✝ : ℕ
t₁✝ t₂✝ : Term L (α ⊕ Fin n✝)
⊢ ∀ {xs : Fin n✝ → M}, Realize (toPrenex (equal t₁✝ t₂✝)) v xs ↔ Realize (equal t₁✝ t₂✝) v xs

case rel
L : Language
L' : Language
M : Type w
N : Type ?u.229555
P : Type ?u.229558
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
α : Type u'
β : Type v'
n l : ℕ
φ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v✝ : α → M
xs : Fin l → M
inst✝ : Nonempty M
v : α → M
n✝ l✝ : ℕ
R✝ : Relations L l✝
ts✝ : Fin l✝ → Term L (α ⊕ Fin n✝)
⊢ ∀ {xs : Fin n✝ → M}, Realize (toPrenex (rel R✝ ts✝)) v xs ↔ Realize (rel R✝ ts✝) v xs

case imp
L : Language
L' : Language
M : Type w
N : Type ?u.229555
P : Type ?u.229558
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
α : Type u'
β : Type v'
n l : ℕ
φ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v✝ : α → M
xs : Fin l → M
inst✝ : Nonempty M
v : α → M
n✝ : ℕ
f1 f2 : BoundedFormula L α n✝
h1 : ∀ {xs : Fin n✝ → M}, Realize (toPrenex f1) v xs ↔ Realize f1 v xs
h2 : ∀ {xs : Fin n✝ → M}, Realize (toPrenex f2) v xs ↔ Realize f2 v xs
⊢ ∀ {xs : Fin n✝ → M}, Realize (toPrenex (f1 ⟹ f2)) v xs ↔ Realize (f1 ⟹ f2) v xs

case all
L : Language
L' : Language
M : Type w
N : Type ?u.229555
P : Type ?u.229558
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
α : Type u'
β : Type v'
n l : ℕ
φ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v✝ : α → M
xs : Fin l → M
inst✝ : Nonempty M
v : α → M
n✝ : ℕ
f✝ : BoundedFormula L α (n✝ + 1)
h : ∀ {xs : Fin (n✝ + 1) → M}, Realize (toPrenex f✝) v xs ↔ Realize f✝ v xs
⊢ ∀ {xs : Fin n✝ → M}, Realize (toPrenex (∀'f✝)) v xs ↔ Realize (∀'f✝) v xs

tactic: . exact Iff.rfl
state_before: case equal
L : Language
L' : Language
M : Type w
N : Type ?u.229555
P : Type ?u.229558
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
α : Type u'
β : Type v'
n l : ℕ
φ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v✝ : α → M
xs : Fin l → M
inst✝ : Nonempty M
v : α → M
n✝ : ℕ
t₁✝ t₂✝ : Term L (α ⊕ Fin n✝)
⊢ ∀ {xs : Fin n✝ → M}, Realize (toPrenex (equal t₁✝ t₂✝)) v xs ↔ Realize (equal t₁✝ t₂✝) v xs

case rel
L : Language
L' : Language
M : Type w
N : Type ?u.229555
P : Type ?u.229558
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
α : Type u'
β : Type v'
n l : ℕ
φ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v✝ : α → M
xs : Fin l → M
inst✝ : Nonempty M
v : α → M
n✝ l✝ : ℕ
R✝ : Relations L l✝
ts✝ : Fin l✝ → Term L (α ⊕ Fin n✝)
⊢ ∀ {xs : Fin n✝ → M}, Realize (toPrenex (rel R✝ ts✝)) v xs ↔ Realize (rel R✝ ts✝) v xs

case imp
L : Language
L' : Language
M : Type w
N : Type ?u.229555
P : Type ?u.229558
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
α : Type u'
β : Type v'
n l : ℕ
φ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v✝ : α → M
xs : Fin l → M
inst✝ : Nonempty M
v : α → M
n✝ : ℕ
f1 f2 : BoundedFormula L α n✝
h1 : ∀ {xs : Fin n✝ → M}, Realize (toPrenex f1) v xs ↔ Realize f1 v xs
h2 : ∀ {xs : Fin n✝ → M}, Realize (toPrenex f2) v xs ↔ Realize f2 v xs
⊢ ∀ {xs : Fin n✝ → M}, Realize (toPrenex (f1 ⟹ f2)) v xs ↔ Realize (f1 ⟹ f2) v xs

case all
L : Language
L' : Language
M : Type w
N : Type ?u.229555
P : Type ?u.229558
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
α : Type u'
β : Type v'
n l : ℕ
φ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v✝ : α → M
xs : Fin l → M
inst✝ : Nonempty M
v : α → M
n✝ : ℕ
f✝ : BoundedFormula L α (n✝ + 1)
h : ∀ {xs : Fin (n✝ + 1) → M}, Realize (toPrenex f✝) v xs ↔ Realize f✝ v xs
⊢ ∀ {xs : Fin n✝ → M}, Realize (toPrenex (∀'f✝)) v xs ↔ Realize (∀'f✝) v xs

tactic: . exact Iff.rfl
state_before: case rel
L : Language
L' : Language
M : Type w
N : Type ?u.229555
P : Type ?u.229558
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
α : Type u'
β : Type v'
n l : ℕ
φ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v✝ : α → M
xs : Fin l → M
inst✝ : Nonempty M
v : α → M
n✝ l✝ : ℕ
R✝ : Relations L l✝
ts✝ : Fin l✝ → Term L (α ⊕ Fin n✝)
⊢ ∀ {xs : Fin n✝ → M}, Realize (toPrenex (rel R✝ ts✝)) v xs ↔ Realize (rel R✝ ts✝) v xs

case imp
L : Language
L' : Language
M : Type w
N : Type ?u.229555
P : Type ?u.229558
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
α : Type u'
β : Type v'
n l : ℕ
φ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v✝ : α → M
xs : Fin l → M
inst✝ : Nonempty M
v : α → M
n✝ : ℕ
f1 f2 : BoundedFormula L α n✝
h1 : ∀ {xs : Fin n✝ → M}, Realize (toPrenex f1) v xs ↔ Realize f1 v xs
h2 : ∀ {xs : Fin n✝ → M}, Realize (toPrenex f2) v xs ↔ Realize f2 v xs
⊢ ∀ {xs : Fin n✝ → M}, Realize (toPrenex (f1 ⟹ f2)) v xs ↔ Realize (f1 ⟹ f2) v xs

case all
L : Language
L' : Language
M : Type w
N : Type ?u.229555
P : Type ?u.229558
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
α : Type u'
β : Type v'
n l : ℕ
φ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v✝ : α → M
xs : Fin l → M
inst✝ : Nonempty M
v : α → M
n✝ : ℕ
f✝ : BoundedFormula L α (n✝ + 1)
h : ∀ {xs : Fin (n✝ + 1) → M}, Realize (toPrenex f✝) v xs ↔ Realize f✝ v xs
⊢ ∀ {xs : Fin n✝ → M}, Realize (toPrenex (∀'f✝)) v xs ↔ Realize (∀'f✝) v xs

tactic: exact Iff.rfl
state_before: case falsum
L : Language
L' : Language
M : Type w
N : Type ?u.229555
P : Type ?u.229558
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
α : Type u'
β : Type v'
n l : ℕ
φ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v✝ : α → M
xs : Fin l → M
inst✝ : Nonempty M
v : α → M
n✝ : ℕ
⊢ ∀ {xs : Fin n✝ → M}, Realize (toPrenex falsum) v xs ↔ Realize falsum v xs

tactic: exact Iff.rfl
state_before: case equal
L : Language
L' : Language
M : Type w
N : Type ?u.229555
P : Type ?u.229558
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
α : Type u'
β : Type v'
n l : ℕ
φ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v✝ : α → M
xs : Fin l → M
inst✝ : Nonempty M
v : α → M
n✝ : ℕ
t₁✝ t₂✝ : Term L (α ⊕ Fin n✝)
⊢ ∀ {xs : Fin n✝ → M}, Realize (toPrenex (equal t₁✝ t₂✝)) v xs ↔ Realize (equal t₁✝ t₂✝) v xs

tactic: exact Iff.rfl
state_before: case rel
L : Language
L' : Language
M : Type w
N : Type ?u.229555
P : Type ?u.229558
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
α : Type u'
β : Type v'
n l : ℕ
φ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v✝ : α → M
xs : Fin l → M
inst✝ : Nonempty M
v : α → M
n✝ l✝ : ℕ
R✝ : Relations L l✝
ts✝ : Fin l✝ → Term L (α ⊕ Fin n✝)
⊢ ∀ {xs : Fin n✝ → M}, Realize (toPrenex (rel R✝ ts✝)) v xs ↔ Realize (rel R✝ ts✝) v xs

tactic: intros
state_before: case imp
L : Language
L' : Language
M : Type w
N : Type ?u.229555
P : Type ?u.229558
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
α : Type u'
β : Type v'
n l : ℕ
φ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v✝ : α → M
xs : Fin l → M
inst✝ : Nonempty M
v : α → M
n✝ : ℕ
f1 f2 : BoundedFormula L α n✝
h1 : ∀ {xs : Fin n✝ → M}, Realize (toPrenex f1) v xs ↔ Realize f1 v xs
h2 : ∀ {xs : Fin n✝ → M}, Realize (toPrenex f2) v xs ↔ Realize f2 v xs
⊢ ∀ {xs : Fin n✝ → M}, Realize (toPrenex (f1 ⟹ f2)) v xs ↔ Realize (f1 ⟹ f2) v xs

tactic: rw [toPrenex, realize_toPrenexImp f1.toPrenex_isPrenex f2.toPrenex_isPrenex, realize_imp,
  realize_imp, h1, h2]
state_before: case imp
L : Language
L' : Language
M : Type w
N : Type ?u.229555
P : Type ?u.229558
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
α : Type u'
β : Type v'
n l : ℕ
φ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v✝ : α → M
xs : Fin l → M
inst✝ : Nonempty M
v : α → M
n✝ : ℕ
f1 f2 : BoundedFormula L α n✝
h1 : ∀ {xs : Fin n✝ → M}, Realize (toPrenex f1) v xs ↔ Realize f1 v xs
h2 : ∀ {xs : Fin n✝ → M}, Realize (toPrenex f2) v xs ↔ Realize f2 v xs
xs✝ : Fin n✝ → M
⊢ Realize (toPrenex (f1 ⟹ f2)) v xs✝ ↔ Realize (f1 ⟹ f2) v xs✝

tactic: intros
state_before: case all
L : Language
L' : Language
M : Type w
N : Type ?u.229555
P : Type ?u.229558
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
α : Type u'
β : Type v'
n l : ℕ
φ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v✝ : α → M
xs : Fin l → M
inst✝ : Nonempty M
v : α → M
n✝ : ℕ
f✝ : BoundedFormula L α (n✝ + 1)
h : ∀ {xs : Fin (n✝ + 1) → M}, Realize (toPrenex f✝) v xs ↔ Realize f✝ v xs
⊢ ∀ {xs : Fin n✝ → M}, Realize (toPrenex (∀'f✝)) v xs ↔ Realize (∀'f✝) v xs

tactic: rw [realize_all, toPrenex, realize_all]
state_before: case all
L : Language
L' : Language
M : Type w
N : Type ?u.229555
P : Type ?u.229558
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
α : Type u'
β : Type v'
n l : ℕ
φ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v✝ : α → M
xs : Fin l → M
inst✝ : Nonempty M
v : α → M
n✝ : ℕ
f✝ : BoundedFormula L α (n✝ + 1)
h : ∀ {xs : Fin (n✝ + 1) → M}, Realize (toPrenex f✝) v xs ↔ Realize f✝ v xs
xs✝ : Fin n✝ → M
⊢ Realize (toPrenex (∀'f✝)) v xs✝ ↔ Realize (∀'f✝) v xs✝

tactic: exact forall_congr' fun a => h
state_before: case all
L : Language
L' : Language
M : Type w
N : Type ?u.229555
P : Type ?u.229558
inst✝³ : Structure L M
inst✝² : Structure L N
inst✝¹ : Structure L P
α : Type u'
β : Type v'
n l : ℕ
φ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v✝ : α → M
xs : Fin l → M
inst✝ : Nonempty M
v : α → M
n✝ : ℕ
f✝ : BoundedFormula L α (n✝ + 1)
h : ∀ {xs : Fin (n✝ + 1) → M}, Realize (toPrenex f✝) v xs ↔ Realize f✝ v xs
xs✝ : Fin n✝ → M
⊢ (∀ (a : M), Realize (toPrenex f✝) v (snoc xs✝ a)) ↔ ∀ (a : M), Realize f✝ v (snoc xs✝ a)