Documentation

Foundation.FirstOrder.Tarski.Eq

theorem FFL.FirstOrder.Tarski.Structure.Eq.eqv_trans {L : Language} [Semiformula.Operator.Eq L] {M : Type u_2} [Nonempty M] [Structure L M] [H : M↓[L] ⊧* π—˜π—€ L] {a b c : M} :
eqv L a b β†’ eqv L b c β†’ eqv L a c
theorem FFL.FirstOrder.Tarski.Structure.Eq.eqv_funcExt {L : Language} [Semiformula.Operator.Eq L] {M : Type u_2} [Nonempty M] [Structure L M] [H : M↓[L] ⊧* π—˜π—€ L] {k : β„•} (f : L.Func k) {v w : Fin k β†’ M} (h : βˆ€ (i : Fin k), eqv L (v i) (w i)) :
eqv L (func f v) (func f w)
theorem FFL.FirstOrder.Tarski.Structure.Eq.eqv_relExt_aux {L : Language} [Semiformula.Operator.Eq L] {M : Type u_2} [Nonempty M] [Structure L M] [H : M↓[L] ⊧* π—˜π—€ L] {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
theorem FFL.FirstOrder.Tarski.Structure.Eq.eqv_relExt {L : Language} [Semiformula.Operator.Eq L] {M : Type u_2} [Nonempty M] [Structure L M] [H : M↓[L] ⊧* π—˜π—€ L] {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
theorem FFL.FirstOrder.Tarski.Structure.Eq.QuotEq.rel_mk {L : Language} [Semiformula.Operator.Eq L] {M : Type u_2} [Nonempty M] [Structure L M] [H : M↓[L] ⊧* π—˜π—€ L] {k : β„•} (r : L.Rel k) (v : Fin k β†’ M) :
(rel r fun (x : Fin k) => ⟦v x⟧) ↔ rel r v
theorem FFL.FirstOrder.Tarski.Structure.Eq.QuotEq.funk_mk_of_eq {L : Language} [Semiformula.Operator.Eq L] {M : Type u_2} [Nonempty M] [Structure L M] [H : M↓[L] ⊧* π—˜π—€ L] {k : β„•} (f : L.Func k) {w : Fin k β†’ QuotEq L M} {v : Fin k β†’ M} (h : βˆ€ (i : Fin k), w i = ⟦v i⟧) :
theorem FFL.FirstOrder.Tarski.Structure.Eq.QuotEq.rel_mk_of_eq {L : Language} [Semiformula.Operator.Eq L] {M : Type u_2} [Nonempty M] [Structure L M] [H : M↓[L] ⊧* π—˜π—€ L] {k : β„•} (r : L.Rel k) {w : Fin k β†’ QuotEq L M} {v : Fin k β†’ M} (h : βˆ€ (i : Fin k), w i = ⟦v i⟧) :
rel r w ↔ rel r v
theorem FFL.FirstOrder.Tarski.Structure.Eq.QuotEq.val_mk {L : Language} {ΞΎ : Type u_1} [Semiformula.Operator.Eq L] {M : Type u_2} [Nonempty M] [Structure L M] [H : M↓[L] ⊧* π—˜π—€ L] {n : β„•} {bv : Fin n β†’ M} {fv : ΞΎ β†’ M} (t : Semiterm L ΞΎ n) :
Semiterm.val (fun (x : Fin n) => ⟦bv x⟧) (fun (x : ξ) => ⟦fv x⟧) t = ⟦Semiterm.val bv fv t⟧
theorem FFL.FirstOrder.Tarski.Structure.Eq.QuotEq.eval_mk {L : Language} {ΞΎ : Type u_1} [Semiformula.Operator.Eq L] {M : Type u_2} [Nonempty M] [Structure L M] [H : M↓[L] ⊧* π—˜π—€ L] {n : β„•} {bv : Fin n β†’ M} {fv : ΞΎ β†’ M} {Ο† : Semiformula L ΞΎ n} :
(Semiformula.Eval (fun (x : Fin n) => ⟦bv x⟧) fun (x : ΞΎ) => ⟦fv x⟧) Ο† ↔ (Semiformula.Eval bv fv) Ο†
theorem FFL.FirstOrder.Tarski.Structure.Eq.QuotEq.evalf_mk {L : Language} {ΞΎ : Type u_1} [Semiformula.Operator.Eq L] {M : Type u_2} [Nonempty M] [Structure L M] [H : M↓[L] ⊧* π—˜π—€ L] {fv : ΞΎ β†’ M} {Ο† : Formula L ΞΎ} :
(Semiformula.Evalf fun (x : ΞΎ) => ⟦fv x⟧) Ο† ↔ (Semiformula.Evalf fv) Ο†
theorem FFL.FirstOrder.consequence_iff_eq_of_models_eq {L : Language} [Semiformula.Operator.Eq L] {T : Theory L} (hEq : βˆ€ (M : Type v) [inst : Nonempty M] [inst_1 : Tarski.Structure L M], M↓[L] ⊧* T β†’ M↓[L] ⊧* π—˜π—€ L) {Οƒ : Sentence L} :
T ⊨[Tarski.Struc L] Οƒ ↔ βˆ€ (M : Type v) [inst : Nonempty M] [inst_1 : Tarski.Structure L M] [Tarski.Structure.Eq L M], M↓[L] ⊧* T β†’ M↓[L] ⊧ Οƒ

Consequence can be tested on equality structures when all models satisfy the equality axioms. This is a routine consequence of the quotient-model construction.

Satisfiability has an equality-structure witness when all models satisfy the equality axioms. This is a routine consequence of the quotient-model construction.

@[simp]
theorem FFL.FirstOrder.Semiformula.eval_existsUnique {L : Language} {ΞΎ : Type u_1} [Operator.Eq L] {M : Type u_2} [s : Tarski.Structure L M] [Tarski.Structure.Eq L M] {n : β„•} {e : Fin n β†’ M} {Ξ΅ : ΞΎ β†’ M} {Ο† : Semiformula L ΞΎ (n + 1)} :
(Eval e Ξ΅) (βˆƒΒΉ! Ο†) ↔ βˆƒ! x : M, (Eval (x :> e) Ξ΅) Ο†