Theorem: FirstOrder.Language.LHom.comp_onBoundedFormula
File: Mathlib/ModelTheory/Syntax.lean

tactic: ext f
state_before: L : Language
L' : Language
M : Type w
N : Type ?u.144560
P : Type ?u.144563
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.144591
n : ℕ
L'' : Language
φ : L' →ᴸ L''
ψ : L →ᴸ L'
⊢ onBoundedFormula (comp φ ψ) = onBoundedFormula φ ∘ onBoundedFormula ψ

tactic: induction' f with _ _ _ _ _ _ _ _ _ _ _ ih1 ih2 _ _ ih3
state_before: case h
L : Language
L' : Language
M : Type w
N : Type ?u.144560
P : Type ?u.144563
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.144591
n : ℕ
L'' : Language
φ : L' →ᴸ L''
ψ : L →ᴸ L'
f : BoundedFormula L α n
⊢ onBoundedFormula (comp φ ψ) f = (onBoundedFormula φ ∘ onBoundedFormula ψ) f

tactic: rfl
state_before: case h.falsum
L : Language
L' : Language
M : Type w
N : Type ?u.144560
P : Type ?u.144563
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.144591
n : ℕ
L'' : Language
φ : L' →ᴸ L''
ψ : L →ᴸ L'
n✝ : ℕ
⊢ onBoundedFormula (comp φ ψ) falsum = (onBoundedFormula φ ∘ onBoundedFormula ψ) falsum

tactic: simp only [onBoundedFormula, comp_onTerm, Function.comp_apply]
state_before: case h.equal
L : Language
L' : Language
M : Type w
N : Type ?u.144560
P : Type ?u.144563
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.144591
n : ℕ
L'' : Language
φ : L' →ᴸ L''
ψ : L →ᴸ L'
n✝ : ℕ
t₁✝ t₂✝ : Term L (α ⊕ Fin n✝)
⊢ onBoundedFormula (comp φ ψ) (equal t₁✝ t₂✝) = (onBoundedFormula φ ∘ onBoundedFormula ψ) (equal t₁✝ t₂✝)

tactic: simp only [onBoundedFormula, comp_onRelation, comp_onTerm, Function.comp_apply]
state_before: case h.rel
L : Language
L' : Language
M : Type w
N : Type ?u.144560
P : Type ?u.144563
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.144591
n : ℕ
L'' : Language
φ : L' →ᴸ L''
ψ : L →ᴸ L'
n✝ l✝ : ℕ
R✝ : Relations L l✝
ts✝ : Fin l✝ → Term L (α ⊕ Fin n✝)
⊢ onBoundedFormula (comp φ ψ) (rel R✝ ts✝) = (onBoundedFormula φ ∘ onBoundedFormula ψ) (rel R✝ ts✝)

tactic: rfl
state_before: case h.rel
L : Language
L' : Language
M : Type w
N : Type ?u.144560
P : Type ?u.144563
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.144591
n : ℕ
L'' : Language
φ : L' →ᴸ L''
ψ : L →ᴸ L'
n✝ l✝ : ℕ
R✝ : Relations L l✝
ts✝ : Fin l✝ → Term L (α ⊕ Fin n✝)
⊢ Relations.boundedFormula (onRelation φ (onRelation ψ R✝)) ((onTerm φ ∘ onTerm ψ) ∘ ts✝) =
    Relations.boundedFormula (onRelation φ (onRelation ψ R✝)) (onTerm φ ∘ onTerm ψ ∘ ts✝)

tactic: simp only [onBoundedFormula, Function.comp_apply, ih1, ih2, eq_self_iff_true, and_self_iff]
state_before: case h.imp
L : Language
L' : Language
M : Type w
N : Type ?u.144560
P : Type ?u.144563
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.144591
n : ℕ
L'' : Language
φ : L' →ᴸ L''
ψ : L →ᴸ L'
n✝ : ℕ
f₁✝ f₂✝ : BoundedFormula L α n✝
ih1 : onBoundedFormula (comp φ ψ) f₁✝ = (onBoundedFormula φ ∘ onBoundedFormula ψ) f₁✝
ih2 : onBoundedFormula (comp φ ψ) f₂✝ = (onBoundedFormula φ ∘ onBoundedFormula ψ) f₂✝
⊢ onBoundedFormula (comp φ ψ) (imp f₁✝ f₂✝) = (onBoundedFormula φ ∘ onBoundedFormula ψ) (imp f₁✝ f₂✝)

tactic: simp only [ih3, onBoundedFormula, Function.comp_apply]
state_before: case h.all
L : Language
L' : Language
M : Type w
N : Type ?u.144560
P : Type ?u.144563
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.144591
n : ℕ
L'' : Language
φ : L' →ᴸ L''
ψ : L →ᴸ L'
n✝ : ℕ
f✝ : BoundedFormula L α (n✝ + 1)
ih3 : onBoundedFormula (comp φ ψ) f✝ = (onBoundedFormula φ ∘ onBoundedFormula ψ) f✝
⊢ onBoundedFormula (comp φ ψ) (all f✝) = (onBoundedFormula φ ∘ onBoundedFormula ψ) (all f✝)