Theorem: LO.FirstOrder.Structure.Eq.eqv_relExt_aux (Logic/FirstOrder/Basic/Eq.lean)

State before:
L : Language
μ : Type u_1
inst✝² : Operator.Eq L
M : Type u
inst✝¹ : Nonempty M
inst✝ : Structure L M
H : M ⊧ₘ* 𝐄𝐐
k : ℕ
r : L.Rel k
v w : Fin k → M
h : ∀ (i : Fin k), eqv L (v i) (w i)
⊢ rel r v → rel r w
Tactic:
have : M ⊧ₘ ∀* (Semiformula.vecEq varSumInL varSumInR ⟶ Semiformula.rel r varSumInL ⟶ Semiformula.rel r varSumInR) :=
  H.realize (eqAxiom.relExt r (L := L))
State after:
L : Language
μ : Type u_1
inst✝² : Operator.Eq L
M : Type u
inst✝¹ : Nonempty M
inst✝ : Structure L M
H : M ⊧ₘ* 𝐄𝐐
k : ℕ
r : L.Rel k
v w : Fin k → M
h : ∀ (i : Fin k), eqv L (v i) (w i)
this : M ⊧ₘ ∀* (vecEq varSumInL varSumInR ⟶ Semiformula.rel r varSumInL ⟶ Semiformula.rel r varSumInR)
⊢ rel r v → rel r w

State before:
L : Language
μ : Type u_1
inst✝² : Operator.Eq L
M : Type u
inst✝¹ : Nonempty M
inst✝ : Structure L M
H : M ⊧ₘ* 𝐄𝐐
k : ℕ
r : L.Rel k
v w : Fin k → M
h : ∀ (i : Fin k), eqv L (v i) (w i)
this : M ⊧ₘ ∀* (vecEq varSumInL varSumInR ⟶ Semiformula.rel r varSumInL ⟶ Semiformula.rel r varSumInR)
⊢ rel r v → rel r w
Tactic:
simp [varSumInL, varSumInR, models_def, vecEq, Semiterm.val_func, eval_rel (r := r)] at this
State after:
L : Language
μ : Type u_1
inst✝² : Operator.Eq L
M : Type u
inst✝¹ : Nonempty M
inst✝ : Structure L M
H : M ⊧ₘ* 𝐄𝐐
k : ℕ
r : L.Rel k
v w : Fin k → M
h : ∀ (i : Fin k), eqv L (v i) (w i)
this :
  ∀ (e : Fin (k + k) → M),
    (∀ (i : Fin k), op(=).val ![e (Fin.castLE ⋯ i), e (Fin.natAdd k i)]) →
      (rel r fun i => e (Fin.castLE ⋯ i)) → rel r fun i => e (Fin.natAdd k i)
⊢ rel r v → rel r w

State before:
L : Language
μ : Type u_1
inst✝² : Operator.Eq L
M : Type u
inst✝¹ : Nonempty M
inst✝ : Structure L M
H : M ⊧ₘ* 𝐄𝐐
k : ℕ
r : L.Rel k
v w : Fin k → M
h : ∀ (i : Fin k), eqv L (v i) (w i)
this :
  ∀ (e : Fin (k + k) → M),
    (∀ (i : Fin k), op(=).val ![e (Fin.castLE ⋯ i), e (Fin.natAdd k i)]) →
      (rel r fun i => e (Fin.castLE ⋯ i)) → rel r fun i => e (Fin.natAdd k i)
⊢ rel r v → rel r w
Tactic:
simpa [eval_rel, Matrix.vecAppend_eq_ite] using this (Matrix.vecAppend rfl v w) (fun i => by simpa [Matrix.vecAppend_eq_ite] using h i)
State after:
no goals

State before:
L : Language
μ : Type u_1
inst✝² : Operator.Eq L
M : Type u
inst✝¹ : Nonempty M
inst✝ : Structure L M
H : M ⊧ₘ* 𝐄𝐐
k : ℕ
r : L.Rel k
v w : Fin k → M
h : ∀ (i : Fin k), eqv L (v i) (w i)
this :
  ∀ (e : Fin (k + k) → M),
    (∀ (i : Fin k), op(=).val ![e (Fin.castLE ⋯ i), e (Fin.natAdd k i)]) →
      (rel r fun i => e (Fin.castLE ⋯ i)) → rel r fun i => e (Fin.natAdd k i)
i : Fin k
⊢ op(=).val ![Matrix.vecAppend ⋯ v w (Fin.castLE ⋯ i), Matrix.vecAppend ⋯ v w (Fin.natAdd k i)]
Tactic:
simpa [Matrix.vecAppend_eq_ite] using h i
State after:
no goals