Theorem: LO.FirstOrder.Semiformula.eval_free (Logic/FirstOrder/Basic/Semantics/Semantics.lean)

State before:
n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
n : ℕ
e : Fin n → M
e₂ : Fin n₂ → M
ε✝ : μ → M
ε₂ : μ₂ → M
ε : ℕ → M
a : M
p : SyntacticSemiformula L (n + 1)
⊢ (Eval s e (a :>ₙ ε)) ((Rew.hom Rew.free) p) ↔ (Eval s (e <: a) ε) p
Tactic:
simp [eval_rew, Function.comp]
State after:
n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
n : ℕ
e : Fin n → M
e₂ : Fin n₂ → M
ε✝ : μ → M
ε₂ : μ₂ → M
ε : ℕ → M
a : M
p : SyntacticSemiformula L (n + 1)
⊢ (Eval s (fun x => Semiterm.val s e (a :>ₙ ε) (Rew.free #x)) fun x => ε x) p ↔ (Eval s (e <: a) ε) p

State before:
n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
n : ℕ
e : Fin n → M
e₂ : Fin n₂ → M
ε✝ : μ → M
ε₂ : μ₂ → M
ε : ℕ → M
a : M
p : SyntacticSemiformula L (n + 1)
⊢ (Eval s (fun x => Semiterm.val s e (a :>ₙ ε) (Rew.free #x)) fun x => ε x) p ↔ (Eval s (e <: a) ε) p
Tactic:
apply iff_of_eq
State after:
case a
n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
n : ℕ
e : Fin n → M
e₂ : Fin n₂ → M
ε✝ : μ → M
ε₂ : μ₂ → M
ε : ℕ → M
a : M
p : SyntacticSemiformula L (n + 1)
⊢ (Eval s (fun x => Semiterm.val s e (a :>ₙ ε) (Rew.free #x)) fun x => ε x) p = (Eval s (e <: a) ε) p

State before:
case a
n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
n : ℕ
e : Fin n → M
e₂ : Fin n₂ → M
ε✝ : μ → M
ε₂ : μ₂ → M
ε : ℕ → M
a : M
p : SyntacticSemiformula L (n + 1)
⊢ (Eval s (fun x => Semiterm.val s e (a :>ₙ ε) (Rew.free #x)) fun x => ε x) p = (Eval s (e <: a) ε) p
Tactic:
congr
State after:
case a.e_a.e_e
n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
n : ℕ
e : Fin n → M
e₂ : Fin n₂ → M
ε✝ : μ → M
ε₂ : μ₂ → M
ε : ℕ → M
a : M
p : SyntacticSemiformula L (n + 1)
⊢ (fun x => Semiterm.val s e (a :>ₙ ε) (Rew.free #x)) = e <: a

State before:
case a.e_a.e_e
n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
n : ℕ
e : Fin n → M
e₂ : Fin n₂ → M
ε✝ : μ → M
ε₂ : μ₂ → M
ε : ℕ → M
a : M
p : SyntacticSemiformula L (n + 1)
⊢ (fun x => Semiterm.val s e (a :>ₙ ε) (Rew.free #x)) = e <: a
Tactic:
funext x
State after:
case a.e_a.e_e.h
n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
n : ℕ
e : Fin n → M
e₂ : Fin n₂ → M
ε✝ : μ → M
ε₂ : μ₂ → M
ε : ℕ → M
a : M
p : SyntacticSemiformula L (n + 1)
x : Fin (n + 1)
⊢ Semiterm.val s e (a :>ₙ ε) (Rew.free #x) = (e <: a) x

State before:
case a.e_a.e_e.h
n₂ : ℕ
L : Language
μ : Type v
μ₁ : Type v₁
μ₂ : Type v₂
M : Type w
s : Structure L M
n : ℕ
e : Fin n → M
e₂ : Fin n₂ → M
ε✝ : μ → M
ε₂ : μ₂ → M
ε : ℕ → M
a : M
p : SyntacticSemiformula L (n + 1)
x : Fin (n + 1)
⊢ Semiterm.val s e (a :>ₙ ε) (Rew.free #x) = (e <: a) x
Tactic:
cases x using Fin.lastCases <;> simp
State after:
no goals