Theorem: FirstOrder.Language.Ultraproduct.term_realize_cast
File: Mathlib/ModelTheory/Ultraproducts.lean

tactic: convert @Term.realize_quotient_mk' L _ ((u : Filter α).productSetoid M)
    (Ultraproduct.setoidPrestructure M u) _ t x using 2
state_before: α : Type u_2
M : α → Type u_3
u : Ultrafilter α
L : Language
inst✝ : (a : α) → Structure L (M a)
β : Type u_1
x : β → (a : α) → M a
t : Term L β
⊢ Term.realize (fun i => Quotient.mk' (x i)) t = Quotient.mk' fun a => Term.realize (fun i => x i a) t

tactic: ext a
state_before: case h.e'_3.h.e'_3
α : Type u_2
M : α → Type u_3
u : Ultrafilter α
L : Language
inst✝ : (a : α) → Structure L (M a)
β : Type u_1
x : β → (a : α) → M a
t : Term L β
⊢ (fun a => Term.realize (fun i => x i a) t) = Term.realize x t

tactic: induction t
state_before: case h.e'_3.h.e'_3.h
α : Type u_2
M : α → Type u_3
u : Ultrafilter α
L : Language
inst✝ : (a : α) → Structure L (M a)
β : Type u_1
x : β → (a : α) → M a
t : Term L β
a : α
⊢ Term.realize (fun i => x i a) t = Term.realize x t a

tactic: case var =>
  rfl
state_before: case h.e'_3.h.e'_3.h.var
α : Type u_2
M : α → Type u_3
u : Ultrafilter α
L : Language
inst✝ : (a : α) → Structure L (M a)
β : Type u_1
x : β → (a : α) → M a
a : α
_a✝ : β
⊢ Term.realize (fun i => x i a) (var _a✝) = Term.realize x (var _a✝) a

case h.e'_3.h.e'_3.h.func
α : Type u_2
M : α → Type u_3
u : Ultrafilter α
L : Language
inst✝ : (a : α) → Structure L (M a)
β : Type u_1
x : β → (a : α) → M a
a : α
l✝ : ℕ
_f✝ : Functions L l✝
_ts✝ : Fin l✝ → Term L β
_ts_ih✝ : ∀ (a_1 : Fin l✝), Term.realize (fun i => x i a) (_ts✝ a_1) = Term.realize x (_ts✝ a_1) a
⊢ Term.realize (fun i => x i a) (func _f✝ _ts✝) = Term.realize x (func _f✝ _ts✝) a

tactic: case func _ _ _ t_ih =>
  simp only [Term.realize, t_ih]
  rfl
state_before: case h.e'_3.h.e'_3.h.func
α : Type u_2
M : α → Type u_3
u : Ultrafilter α
L : Language
inst✝ : (a : α) → Structure L (M a)
β : Type u_1
x : β → (a : α) → M a
a : α
l✝ : ℕ
_f✝ : Functions L l✝
_ts✝ : Fin l✝ → Term L β
_ts_ih✝ : ∀ (a_1 : Fin l✝), Term.realize (fun i => x i a) (_ts✝ a_1) = Term.realize x (_ts✝ a_1) a
⊢ Term.realize (fun i => x i a) (func _f✝ _ts✝) = Term.realize x (func _f✝ _ts✝) a

tactic: rfl
state_before: α : Type u_2
M : α → Type u_3
u : Ultrafilter α
L : Language
inst✝ : (a : α) → Structure L (M a)
β : Type u_1
x : β → (a : α) → M a
a : α
_a✝ : β
⊢ Term.realize (fun i => x i a) (var _a✝) = Term.realize x (var _a✝) a

tactic: simp only [Term.realize, t_ih]
state_before: α : Type u_2
M : α → Type u_3
u : Ultrafilter α
L : Language
inst✝ : (a : α) → Structure L (M a)
β : Type u_1
x : β → (a : α) → M a
a : α
l✝ : ℕ
_f✝ : Functions L l✝
_ts✝ : Fin l✝ → Term L β
t_ih : ∀ (a_1 : Fin l✝), Term.realize (fun i => x i a) (_ts✝ a_1) = Term.realize x (_ts✝ a_1) a
⊢ Term.realize (fun i => x i a) (func _f✝ _ts✝) = Term.realize x (func _f✝ _ts✝) a

tactic: rfl
state_before: α : Type u_2
M : α → Type u_3
u : Ultrafilter α
L : Language
inst✝ : (a : α) → Structure L (M a)
β : Type u_1
x : β → (a : α) → M a
a : α
l✝ : ℕ
_f✝ : Functions L l✝
_ts✝ : Fin l✝ → Term L β
t_ih : ∀ (a_1 : Fin l✝), Term.realize (fun i => x i a) (_ts✝ a_1) = Term.realize x (_ts✝ a_1) a
⊢ (funMap _f✝ fun i => Term.realize x (_ts✝ i) a) = funMap _f✝ (fun i => Term.realize x (_ts✝ i)) a