Theorem: FirstOrder.Language.LHom.realize_onBoundedFormula
File: Mathlib/ModelTheory/Semantics.lean

tactic: induction' ψ with _ _ _ _ _ _ _ _ _ _ _ ih1 ih2 _ _ ih3
state_before: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝⁴ : L.Structure M
inst✝³ : L.Structure N
inst✝² : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n✝ : ℕ
inst✝¹ : L'.Structure M
φ : L →ᴸ L'
inst✝ : φ.IsExpansionOn M
n : ℕ
ψ : L.BoundedFormula α n
v : α → M
xs : Fin n → M
⊢ (φ.onBoundedFormula ψ).Realize v xs ↔ ψ.Realize v xs
state_after: case falsum
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝⁴ : L.Structure M
inst✝³ : L.Structure N
inst✝² : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n✝¹ : ℕ
inst✝¹ : L'.Structure M
φ : L →ᴸ L'
inst✝ : φ.IsExpansionOn M
n : ℕ
v : α → M
n✝ : ℕ
xs : Fin n✝ → M
⊢ (φ.onBoundedFormula falsum).Realize v xs ↔ falsum.Realize v xs

case equal
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝⁴ : L.Structure M
inst✝³ : L.Structure N
inst✝² : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n✝¹ : ℕ
inst✝¹ : L'.Structure M
φ : L →ᴸ L'
inst✝ : φ.IsExpansionOn M
n : ℕ
v : α → M
n✝ : ℕ
t₁✝ t₂✝ : L.Term (α ⊕ Fin n✝)
xs : Fin n✝ → M
⊢ (φ.onBoundedFormula (equal t₁✝ t₂✝)).Realize v xs ↔ (equal t₁✝ t₂✝).Realize v xs

case rel
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝⁴ : L.Structure M
inst✝³ : L.Structure N
inst✝² : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n✝¹ : ℕ
inst✝¹ : L'.Structure M
φ : L →ᴸ L'
inst✝ : φ.IsExpansionOn M
n : ℕ
v : α → M
n✝ l✝ : ℕ
R✝ : L.Relations l✝
ts✝ : Fin l✝ → L.Term (α ⊕ Fin n✝)
xs : Fin n✝ → M
⊢ (φ.onBoundedFormula (rel R✝ ts✝)).Realize v xs ↔ (rel R✝ ts✝).Realize v xs

case imp
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝⁴ : L.Structure M
inst✝³ : L.Structure N
inst✝² : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n✝¹ : ℕ
inst✝¹ : L'.Structure M
φ : L →ᴸ L'
inst✝ : φ.IsExpansionOn M
n : ℕ
v : α → M
n✝ : ℕ
f₁✝ f₂✝ : L.BoundedFormula α n✝
ih1 : ∀ {xs : Fin n✝ → M}, (φ.onBoundedFormula f₁✝).Realize v xs ↔ f₁✝.Realize v xs
ih2 : ∀ {xs : Fin n✝ → M}, (φ.onBoundedFormula f₂✝).Realize v xs ↔ f₂✝.Realize v xs
xs : Fin n✝ → M
⊢ (φ.onBoundedFormula (f₁✝ ⟹ f₂✝)).Realize v xs ↔ (f₁✝ ⟹ f₂✝).Realize v xs

case all
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝⁴ : L.Structure M
inst✝³ : L.Structure N
inst✝² : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n✝¹ : ℕ
inst✝¹ : L'.Structure M
φ : L →ᴸ L'
inst✝ : φ.IsExpansionOn M
n : ℕ
v : α → M
n✝ : ℕ
f✝ : L.BoundedFormula α (n✝ + 1)
ih3 : ∀ {xs : Fin (n✝ + 1) → M}, (φ.onBoundedFormula f✝).Realize v xs ↔ f✝.Realize v xs
xs : Fin n✝ → M
⊢ (φ.onBoundedFormula (∀'f✝)).Realize v xs ↔ (∀'f✝).Realize v xs

tactic: rfl
state_before: case falsum
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝⁴ : L.Structure M
inst✝³ : L.Structure N
inst✝² : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n✝¹ : ℕ
inst✝¹ : L'.Structure M
φ : L →ᴸ L'
inst✝ : φ.IsExpansionOn M
n : ℕ
v : α → M
n✝ : ℕ
xs : Fin n✝ → M
⊢ (φ.onBoundedFormula falsum).Realize v xs ↔ falsum.Realize v xs
state_after: no goals

tactic: simp only [onBoundedFormula, realize_bdEqual, realize_onTerm]
state_before: case equal
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝⁴ : L.Structure M
inst✝³ : L.Structure N
inst✝² : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n✝¹ : ℕ
inst✝¹ : L'.Structure M
φ : L →ᴸ L'
inst✝ : φ.IsExpansionOn M
n : ℕ
v : α → M
n✝ : ℕ
t₁✝ t₂✝ : L.Term (α ⊕ Fin n✝)
xs : Fin n✝ → M
⊢ (φ.onBoundedFormula (equal t₁✝ t₂✝)).Realize v xs ↔ (equal t₁✝ t₂✝).Realize v xs
state_after: case equal
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝⁴ : L.Structure M
inst✝³ : L.Structure N
inst✝² : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n✝¹ : ℕ
inst✝¹ : L'.Structure M
φ : L →ᴸ L'
inst✝ : φ.IsExpansionOn M
n : ℕ
v : α → M
n✝ : ℕ
t₁✝ t₂✝ : L.Term (α ⊕ Fin n✝)
xs : Fin n✝ → M
⊢ Term.realize (Sum.elim v xs) t₁✝ = Term.realize (Sum.elim v xs) t₂✝ ↔ (equal t₁✝ t₂✝).Realize v xs

tactic: rfl
state_before: case equal
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝⁴ : L.Structure M
inst✝³ : L.Structure N
inst✝² : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n✝¹ : ℕ
inst✝¹ : L'.Structure M
φ : L →ᴸ L'
inst✝ : φ.IsExpansionOn M
n : ℕ
v : α → M
n✝ : ℕ
t₁✝ t₂✝ : L.Term (α ⊕ Fin n✝)
xs : Fin n✝ → M
⊢ Term.realize (Sum.elim v xs) t₁✝ = Term.realize (Sum.elim v xs) t₂✝ ↔ (equal t₁✝ t₂✝).Realize v xs
state_after: no goals

tactic: simp only [onBoundedFormula, realize_rel, LHom.map_onRelation,
  Function.comp_apply, realize_onTerm]
state_before: case rel
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝⁴ : L.Structure M
inst✝³ : L.Structure N
inst✝² : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n✝¹ : ℕ
inst✝¹ : L'.Structure M
φ : L →ᴸ L'
inst✝ : φ.IsExpansionOn M
n : ℕ
v : α → M
n✝ l✝ : ℕ
R✝ : L.Relations l✝
ts✝ : Fin l✝ → L.Term (α ⊕ Fin n✝)
xs : Fin n✝ → M
⊢ (φ.onBoundedFormula (rel R✝ ts✝)).Realize v xs ↔ (rel R✝ ts✝).Realize v xs
state_after: case rel
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝⁴ : L.Structure M
inst✝³ : L.Structure N
inst✝² : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n✝¹ : ℕ
inst✝¹ : L'.Structure M
φ : L →ᴸ L'
inst✝ : φ.IsExpansionOn M
n : ℕ
v : α → M
n✝ l✝ : ℕ
R✝ : L.Relations l✝
ts✝ : Fin l✝ → L.Term (α ⊕ Fin n✝)
xs : Fin n✝ → M
⊢ (RelMap R✝ fun i => Term.realize (Sum.elim v xs) (ts✝ i)) ↔ (rel R✝ ts✝).Realize v xs

tactic: rfl
state_before: case rel
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝⁴ : L.Structure M
inst✝³ : L.Structure N
inst✝² : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n✝¹ : ℕ
inst✝¹ : L'.Structure M
φ : L →ᴸ L'
inst✝ : φ.IsExpansionOn M
n : ℕ
v : α → M
n✝ l✝ : ℕ
R✝ : L.Relations l✝
ts✝ : Fin l✝ → L.Term (α ⊕ Fin n✝)
xs : Fin n✝ → M
⊢ (RelMap R✝ fun i => Term.realize (Sum.elim v xs) (ts✝ i)) ↔ (rel R✝ ts✝).Realize v xs
state_after: no goals

tactic: simp only [onBoundedFormula, ih1, ih2, realize_imp]
state_before: case imp
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝⁴ : L.Structure M
inst✝³ : L.Structure N
inst✝² : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n✝¹ : ℕ
inst✝¹ : L'.Structure M
φ : L →ᴸ L'
inst✝ : φ.IsExpansionOn M
n : ℕ
v : α → M
n✝ : ℕ
f₁✝ f₂✝ : L.BoundedFormula α n✝
ih1 : ∀ {xs : Fin n✝ → M}, (φ.onBoundedFormula f₁✝).Realize v xs ↔ f₁✝.Realize v xs
ih2 : ∀ {xs : Fin n✝ → M}, (φ.onBoundedFormula f₂✝).Realize v xs ↔ f₂✝.Realize v xs
xs : Fin n✝ → M
⊢ (φ.onBoundedFormula (f₁✝ ⟹ f₂✝)).Realize v xs ↔ (f₁✝ ⟹ f₂✝).Realize v xs
state_after: no goals

tactic: simp only [onBoundedFormula, ih3, realize_all]
state_before: case all
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝⁴ : L.Structure M
inst✝³ : L.Structure N
inst✝² : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n✝¹ : ℕ
inst✝¹ : L'.Structure M
φ : L →ᴸ L'
inst✝ : φ.IsExpansionOn M
n : ℕ
v : α → M
n✝ : ℕ
f✝ : L.BoundedFormula α (n✝ + 1)
ih3 : ∀ {xs : Fin (n✝ + 1) → M}, (φ.onBoundedFormula f✝).Realize v xs ↔ f✝.Realize v xs
xs : Fin n✝ → M
⊢ (φ.onBoundedFormula (∀'f✝)).Realize v xs ↔ (∀'f✝).Realize v xs
state_after: no goals