Theorem: LO.FirstOrder.Structure.Eq.eqv_trans (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 ⊧ₘ* 𝐄𝐐
a b c : M
⊢ eqv L a b → eqv L b c → eqv L a c
Tactic:
have : M ⊧ₘ “∀ x y z, x = y → y = z → x = z” := H.realize (Theory.eqAxiom.trans (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 ⊧ₘ* 𝐄𝐐
a b c : M
this : M ⊧ₘ (“∀' ∀' ∀' (#2 = #1 → (#1 = #0 → #2 = #0))”)
⊢ eqv L a b → eqv L b c → eqv L a c

State before:
L : Language
μ : Type u_1
inst✝² : Operator.Eq L
M : Type u
inst✝¹ : Nonempty M
inst✝ : Structure L M
H : M ⊧ₘ* 𝐄𝐐
a b c : M
this : M ⊧ₘ (“∀' ∀' ∀' (#2 = #1 → (#1 = #0 → #2 = #0))”)
⊢ eqv L a b → eqv L b c → eqv L a c
Tactic:
simp [models_def] 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 ⊧ₘ* 𝐄𝐐
a b c : M
this : ∀ (x x_1 x_2 : M), op(=).val ![x, x_1] → op(=).val ![x_1, x_2] → op(=).val ![x, x_2]
⊢ eqv L a b → eqv L b c → eqv L a c

State before:
L : Language
μ : Type u_1
inst✝² : Operator.Eq L
M : Type u
inst✝¹ : Nonempty M
inst✝ : Structure L M
H : M ⊧ₘ* 𝐄𝐐
a b c : M
this : ∀ (x x_1 x_2 : M), op(=).val ![x, x_1] → op(=).val ![x_1, x_2] → op(=).val ![x, x_2]
⊢ eqv L a b → eqv L b c → eqv L a c
Tactic:
exact this a b c
State after:
no goals