Theorem: FirstOrder.Language.Term.realize_varsToConstants
File: Mathlib/ModelTheory/Semantics.lean

tactic: induction' t with ab n f ts ih
state_before: L : Language
L' : Language
M : Type w
N : Type ?u.19079
P : Type ?u.19082
inst✝⁴ : Structure L M
inst✝³ : Structure L N
inst✝² : Structure L P
α : Type u'
β : Type v'
inst✝¹ : Structure (L[[α]]) M
inst✝ : LHom.IsExpansionOn (lhomWithConstants L α) M
t : Term L (α ⊕ β)
v : β → M
⊢ realize v (varsToConstants t) = realize (Sum.elim (fun a => ↑(Language.con L a)) v) t

tactic: cases' ab with a b
state_before: case var
L : Language
L' : Language
M : Type w
N : Type ?u.19079
P : Type ?u.19082
inst✝⁴ : Structure L M
inst✝³ : Structure L N
inst✝² : Structure L P
α : Type u'
β : Type v'
inst✝¹ : Structure (L[[α]]) M
inst✝ : LHom.IsExpansionOn (lhomWithConstants L α) M
v : β → M
ab : α ⊕ β
⊢ realize v (varsToConstants (var ab)) = realize (Sum.elim (fun a => ↑(Language.con L a)) v) (var ab)

tactic: . simp [Language.con, realize, constantMap, funMap_eq_coe_constants]
state_before: case var.inl
L : Language
L' : Language
M : Type w
N : Type ?u.19079
P : Type ?u.19082
inst✝⁴ : Structure L M
inst✝³ : Structure L N
inst✝² : Structure L P
α : Type u'
β : Type v'
inst✝¹ : Structure (L[[α]]) M
inst✝ : LHom.IsExpansionOn (lhomWithConstants L α) M
v : β → M
a : α
⊢ realize v (varsToConstants (var (Sum.inl a))) = realize (Sum.elim (fun a => ↑(Language.con L a)) v) (var (Sum.inl a))

case var.inr
L : Language
L' : Language
M : Type w
N : Type ?u.19079
P : Type ?u.19082
inst✝⁴ : Structure L M
inst✝³ : Structure L N
inst✝² : Structure L P
α : Type u'
β : Type v'
inst✝¹ : Structure (L[[α]]) M
inst✝ : LHom.IsExpansionOn (lhomWithConstants L α) M
v : β → M
b : β
⊢ realize v (varsToConstants (var (Sum.inr b))) = realize (Sum.elim (fun a => ↑(Language.con L a)) v) (var (Sum.inr b))

tactic: . simp [realize, constantMap]
state_before: case var.inr
L : Language
L' : Language
M : Type w
N : Type ?u.19079
P : Type ?u.19082
inst✝⁴ : Structure L M
inst✝³ : Structure L N
inst✝² : Structure L P
α : Type u'
β : Type v'
inst✝¹ : Structure (L[[α]]) M
inst✝ : LHom.IsExpansionOn (lhomWithConstants L α) M
v : β → M
b : β
⊢ realize v (varsToConstants (var (Sum.inr b))) = realize (Sum.elim (fun a => ↑(Language.con L a)) v) (var (Sum.inr b))

tactic: simp [Language.con, realize, constantMap, funMap_eq_coe_constants]
state_before: case var.inl
L : Language
L' : Language
M : Type w
N : Type ?u.19079
P : Type ?u.19082
inst✝⁴ : Structure L M
inst✝³ : Structure L N
inst✝² : Structure L P
α : Type u'
β : Type v'
inst✝¹ : Structure (L[[α]]) M
inst✝ : LHom.IsExpansionOn (lhomWithConstants L α) M
v : β → M
a : α
⊢ realize v (varsToConstants (var (Sum.inl a))) = realize (Sum.elim (fun a => ↑(Language.con L a)) v) (var (Sum.inl a))

tactic: simp [realize, constantMap]
state_before: case var.inr
L : Language
L' : Language
M : Type w
N : Type ?u.19079
P : Type ?u.19082
inst✝⁴ : Structure L M
inst✝³ : Structure L N
inst✝² : Structure L P
α : Type u'
β : Type v'
inst✝¹ : Structure (L[[α]]) M
inst✝ : LHom.IsExpansionOn (lhomWithConstants L α) M
v : β → M
b : β
⊢ realize v (varsToConstants (var (Sum.inr b))) = realize (Sum.elim (fun a => ↑(Language.con L a)) v) (var (Sum.inr b))

tactic: simp only [realize, constantsOn, mk₂_Functions, ih]
state_before: case func
L : Language
L' : Language
M : Type w
N : Type ?u.19079
P : Type ?u.19082
inst✝⁴ : Structure L M
inst✝³ : Structure L N
inst✝² : Structure L P
α : Type u'
β : Type v'
inst✝¹ : Structure (L[[α]]) M
inst✝ : LHom.IsExpansionOn (lhomWithConstants L α) M
v : β → M
n : ℕ
f : Functions L n
ts : Fin n → Term L (α ⊕ β)
ih : ∀ (a : Fin n), realize v (varsToConstants (ts a)) = realize (Sum.elim (fun a => ↑(Language.con L a)) v) (ts a)
⊢ realize v (varsToConstants (func f ts)) = realize (Sum.elim (fun a => ↑(Language.con L a)) v) (func f ts)

tactic: rw [withConstants_funMap_sum_inl]
state_before: case func
L : Language
L' : Language
M : Type w
N : Type ?u.19079
P : Type ?u.19082
inst✝⁴ : Structure L M
inst✝³ : Structure L N
inst✝² : Structure L P
α : Type u'
β : Type v'
inst✝¹ : Structure (L[[α]]) M
inst✝ : LHom.IsExpansionOn (lhomWithConstants L α) M
v : β → M
n : ℕ
f : Functions L n
ts : Fin n → Term L (α ⊕ β)
ih : ∀ (a : Fin n), realize v (varsToConstants (ts a)) = realize (Sum.elim (fun a => ↑(Language.con L a)) v) (ts a)
⊢ (funMap (Sum.inl f) fun i => realize (Sum.elim (fun a => ↑(Language.con L a)) v) (ts i)) =
    funMap f fun i => realize (Sum.elim (fun a => ↑(Language.con L a)) v) (ts i)