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

tactic: induction' φ with _ _ _ _ _ _ _ _ _ _ _ ih1 ih2 _ _ ih3
state_before: L : Language
L' : Language
M : Type w
N : Type ?u.135581
P : Type ?u.135584
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✝ : DecidableEq α
n : ℕ
φ : BoundedFormula L α n
s : Set α
h : ↑(freeVarFinset φ) ⊆ s
v : α → M
xs : Fin n → M
⊢ Realize (restrictFreeVar φ (Set.inclusion h)) (v ∘ Subtype.val) xs ↔ Realize φ v xs

tactic: rfl
state_before: case falsum
L : Language
L' : Language
M : Type w
N : Type ?u.135581
P : Type ?u.135584
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✝ : DecidableEq α
n : ℕ
φ : BoundedFormula L α n
s : Set α
h✝ : ↑(freeVarFinset φ) ⊆ s
v : α → M
xs✝ : Fin n → M
n✝ : ℕ
h : ↑(freeVarFinset falsum) ⊆ s
xs : Fin n✝ → M
⊢ Realize (restrictFreeVar falsum (Set.inclusion h)) (v ∘ Subtype.val) xs ↔ Realize falsum v xs

tactic: simp [restrictFreeVar, Realize]
state_before: case equal
L : Language
L' : Language
M : Type w
N : Type ?u.135581
P : Type ?u.135584
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✝ : DecidableEq α
n : ℕ
φ : BoundedFormula L α n
s : Set α
h✝ : ↑(freeVarFinset φ) ⊆ s
v : α → M
xs✝ : Fin n → M
n✝ : ℕ
t₁✝ t₂✝ : Term L (α ⊕ Fin n✝)
h : ↑(freeVarFinset (equal t₁✝ t₂✝)) ⊆ s
xs : Fin n✝ → M
⊢ Realize (restrictFreeVar (equal t₁✝ t₂✝) (Set.inclusion h)) (v ∘ Subtype.val) xs ↔ Realize (equal t₁✝ t₂✝) v xs

tactic: simp [restrictFreeVar, Realize]
state_before: case rel
L : Language
L' : Language
M : Type w
N : Type ?u.135581
P : Type ?u.135584
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✝ : DecidableEq α
n : ℕ
φ : BoundedFormula L α n
s : Set α
h✝ : ↑(freeVarFinset φ) ⊆ s
v : α → M
xs✝ : Fin n → M
n✝ l✝ : ℕ
R✝ : Relations L l✝
ts✝ : Fin l✝ → Term L (α ⊕ Fin n✝)
h : ↑(freeVarFinset (rel R✝ ts✝)) ⊆ s
xs : Fin n✝ → M
⊢ Realize (restrictFreeVar (rel R✝ ts✝) (Set.inclusion h)) (v ∘ Subtype.val) xs ↔ Realize (rel R✝ ts✝) v xs

tactic: simp [restrictFreeVar, Realize, ih1, ih2]
state_before: case imp
L : Language
L' : Language
M : Type w
N : Type ?u.135581
P : Type ?u.135584
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✝ : DecidableEq α
n : ℕ
φ : BoundedFormula L α n
s : Set α
h✝ : ↑(freeVarFinset φ) ⊆ s
v : α → M
xs✝ : Fin n → M
n✝ : ℕ
f₁✝ f₂✝ : BoundedFormula L α n✝
ih1 :
  ∀ (h : ↑(freeVarFinset f₁✝) ⊆ s) {xs : Fin n✝ → M},
    Realize (restrictFreeVar f₁✝ (Set.inclusion h)) (v ∘ Subtype.val) xs ↔ Realize f₁✝ v xs
ih2 :
  ∀ (h : ↑(freeVarFinset f₂✝) ⊆ s) {xs : Fin n✝ → M},
    Realize (restrictFreeVar f₂✝ (Set.inclusion h)) (v ∘ Subtype.val) xs ↔ Realize f₂✝ v xs
h : ↑(freeVarFinset (f₁✝ ⟹ f₂✝)) ⊆ s
xs : Fin n✝ → M
⊢ Realize (restrictFreeVar (f₁✝ ⟹ f₂✝) (Set.inclusion h)) (v ∘ Subtype.val) xs ↔ Realize (f₁✝ ⟹ f₂✝) v xs

tactic: simp [restrictFreeVar, Realize, ih3]
state_before: case all
L : Language
L' : Language
M : Type w
N : Type ?u.135581
P : Type ?u.135584
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✝ : DecidableEq α
n : ℕ
φ : BoundedFormula L α n
s : Set α
h✝ : ↑(freeVarFinset φ) ⊆ s
v : α → M
xs✝ : Fin n → M
n✝ : ℕ
f✝ : BoundedFormula L α (n✝ + 1)
ih3 :
  ∀ (h : ↑(freeVarFinset f✝) ⊆ s) {xs : Fin (n✝ + 1) → M},
    Realize (restrictFreeVar f✝ (Set.inclusion h)) (v ∘ Subtype.val) xs ↔ Realize f✝ v xs
h : ↑(freeVarFinset (∀'f✝)) ⊆ s
xs : Fin n✝ → M
⊢ Realize (restrictFreeVar (∀'f✝) (Set.inclusion h)) (v ∘ Subtype.val) xs ↔ Realize (∀'f✝) v xs