model_theory.quotientsMathlib.ModelTheory.Quotients

This file has been ported!

Changes since the initial port

The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -3,8 +3,8 @@ Copyright (c) 2022 Aaron Anderson. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Aaron Anderson
 -/
-import Mathbin.Data.Fintype.Quotient
-import Mathbin.ModelTheory.Semantics
+import Data.Fintype.Quotient
+import ModelTheory.Semantics
 
 #align_import model_theory.quotients from "leanprover-community/mathlib"@"a87d22575d946e1e156fc1edd1e1269600a8a282"
 
Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2022 Aaron Anderson. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Aaron Anderson
-
-! This file was ported from Lean 3 source module model_theory.quotients
-! leanprover-community/mathlib commit a87d22575d946e1e156fc1edd1e1269600a8a282
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Data.Fintype.Quotient
 import Mathbin.ModelTheory.Semantics
 
+#align_import model_theory.quotients from "leanprover-community/mathlib"@"a87d22575d946e1e156fc1edd1e1269600a8a282"
+
 /-!
 # Quotients of First-Order Structures
 
Diff
@@ -61,8 +61,7 @@ instance quotientStructure : L.Structure (Quotient s)
 
 variable (s)
 
-include s
-
+#print FirstOrder.Language.funMap_quotient_mk' /-
 theorem funMap_quotient_mk' {n : ℕ} (f : L.Functions n) (x : Fin n → M) :
     (funMap f fun i => ⟦x i⟧) = ⟦@funMap _ _ ps.toStructure _ f x⟧ :=
   by
@@ -71,7 +70,9 @@ theorem funMap_quotient_mk' {n : ℕ} (f : L.Functions n) (x : Fin n → M) :
       _
   rw [Quotient.finChoice_eq, Quotient.map_mk]
 #align first_order.language.fun_map_quotient_mk FirstOrder.Language.funMap_quotient_mk'
+-/
 
+#print FirstOrder.Language.relMap_quotient_mk' /-
 theorem relMap_quotient_mk' {n : ℕ} (r : L.Relations n) (x : Fin n → M) :
     (RelMap r fun i => ⟦x i⟧) ↔ @RelMap _ _ ps.toStructure _ r x :=
   by
@@ -80,7 +81,9 @@ theorem relMap_quotient_mk' {n : ℕ} (r : L.Relations n) (x : Fin n → M) :
       _
   rw [Quotient.finChoice_eq, Quotient.lift_mk]
 #align first_order.language.rel_map_quotient_mk FirstOrder.Language.relMap_quotient_mk'
+-/
 
+#print FirstOrder.Language.Term.realize_quotient_mk' /-
 theorem Term.realize_quotient_mk' {β : Type _} (t : L.term β) (x : β → M) :
     (t.realize fun i => ⟦x i⟧) = ⟦@Term.realize _ _ ps.toStructure _ x t⟧ :=
   by
@@ -88,6 +91,7 @@ theorem Term.realize_quotient_mk' {β : Type _} (t : L.term β) (x : β → M) :
   · rfl
   · simp only [ih, fun_map_quotient_mk, term.realize]
 #align first_order.language.term.realize_quotient_mk FirstOrder.Language.Term.realize_quotient_mk'
+-/
 
 end Language
 
Diff
@@ -33,7 +33,7 @@ namespace Language
 
 variable (L : Language) {M : Type _}
 
-open FirstOrder
+open scoped FirstOrder
 
 open Structure
 
Diff
@@ -63,12 +63,6 @@ variable (s)
 
 include s
 
-/- warning: first_order.language.fun_map_quotient_mk -> FirstOrder.Language.funMap_quotient_mk' is a dubious translation:
-lean 3 declaration is
-  forall {L : FirstOrder.Language.{u1, u2}} {M : Type.{u3}} [s : Setoid.{succ u3} M] [ps : FirstOrder.Language.Prestructure.{u1, u2, u3} L M s] {n : Nat} (f : FirstOrder.Language.Functions.{u1, u2} L n) (x : (Fin n) -> M), Eq.{succ u3} (Quotient.{succ u3} M s) (FirstOrder.Language.Structure.funMap.{u1, u2, u3} L (Quotient.{succ u3} M s) (FirstOrder.Language.quotientStructure.{u1, u2, u3} L M s ps) n f (fun (i : Fin n) => Quotient.mk'.{succ u3} M s (x i))) (Quotient.mk'.{succ u3} M s (FirstOrder.Language.Structure.funMap.{u1, u2, u3} L M (FirstOrder.Language.Prestructure.toStructure.{u1, u2, u3} L M s ps) n f x))
-but is expected to have type
-  forall {L : FirstOrder.Language.{u3, u2}} {M : Type.{u1}} (s : Setoid.{succ u1} M) [ps : FirstOrder.Language.Prestructure.{u3, u2, u1} L M s] {n : Nat} (f : FirstOrder.Language.Functions.{u3, u2} L n) (x : (Fin n) -> M), Eq.{succ u1} (Quotient.{succ u1} M s) (FirstOrder.Language.Structure.funMap.{u3, u2, u1} L (Quotient.{succ u1} M s) (FirstOrder.Language.quotientStructure.{u3, u2, u1} L M s ps) n f (fun (i : Fin n) => Quotient.mk.{succ u1} M s (x i))) (Quotient.mk.{succ u1} M s (FirstOrder.Language.Structure.funMap.{u3, u2, u1} L M (FirstOrder.Language.Prestructure.toStructure.{u3, u2, u1} L M s ps) n f x))
-Case conversion may be inaccurate. Consider using '#align first_order.language.fun_map_quotient_mk FirstOrder.Language.funMap_quotient_mk'ₓ'. -/
 theorem funMap_quotient_mk' {n : ℕ} (f : L.Functions n) (x : Fin n → M) :
     (funMap f fun i => ⟦x i⟧) = ⟦@funMap _ _ ps.toStructure _ f x⟧ :=
   by
@@ -78,12 +72,6 @@ theorem funMap_quotient_mk' {n : ℕ} (f : L.Functions n) (x : Fin n → M) :
   rw [Quotient.finChoice_eq, Quotient.map_mk]
 #align first_order.language.fun_map_quotient_mk FirstOrder.Language.funMap_quotient_mk'
 
-/- warning: first_order.language.rel_map_quotient_mk -> FirstOrder.Language.relMap_quotient_mk' is a dubious translation:
-lean 3 declaration is
-  forall {L : FirstOrder.Language.{u1, u2}} {M : Type.{u3}} [s : Setoid.{succ u3} M] [ps : FirstOrder.Language.Prestructure.{u1, u2, u3} L M s] {n : Nat} (r : FirstOrder.Language.Relations.{u1, u2} L n) (x : (Fin n) -> M), Iff (FirstOrder.Language.Structure.RelMap.{u1, u2, u3} L (Quotient.{succ u3} M s) (FirstOrder.Language.quotientStructure.{u1, u2, u3} L M s ps) n r (fun (i : Fin n) => Quotient.mk'.{succ u3} M s (x i))) (FirstOrder.Language.Structure.RelMap.{u1, u2, u3} L M (FirstOrder.Language.Prestructure.toStructure.{u1, u2, u3} L M s ps) n r x)
-but is expected to have type
-  forall {L : FirstOrder.Language.{u3, u2}} {M : Type.{u1}} (s : Setoid.{succ u1} M) [ps : FirstOrder.Language.Prestructure.{u3, u2, u1} L M s] {n : Nat} (r : FirstOrder.Language.Relations.{u3, u2} L n) (x : (Fin n) -> M), Iff (FirstOrder.Language.Structure.RelMap.{u3, u2, u1} L (Quotient.{succ u1} M s) (FirstOrder.Language.quotientStructure.{u3, u2, u1} L M s ps) n r (fun (i : Fin n) => Quotient.mk.{succ u1} M s (x i))) (FirstOrder.Language.Structure.RelMap.{u3, u2, u1} L M (FirstOrder.Language.Prestructure.toStructure.{u3, u2, u1} L M s ps) n r x)
-Case conversion may be inaccurate. Consider using '#align first_order.language.rel_map_quotient_mk FirstOrder.Language.relMap_quotient_mk'ₓ'. -/
 theorem relMap_quotient_mk' {n : ℕ} (r : L.Relations n) (x : Fin n → M) :
     (RelMap r fun i => ⟦x i⟧) ↔ @RelMap _ _ ps.toStructure _ r x :=
   by
@@ -93,12 +81,6 @@ theorem relMap_quotient_mk' {n : ℕ} (r : L.Relations n) (x : Fin n → M) :
   rw [Quotient.finChoice_eq, Quotient.lift_mk]
 #align first_order.language.rel_map_quotient_mk FirstOrder.Language.relMap_quotient_mk'
 
-/- warning: first_order.language.term.realize_quotient_mk -> FirstOrder.Language.Term.realize_quotient_mk' is a dubious translation:
-lean 3 declaration is
-  forall {L : FirstOrder.Language.{u1, u2}} {M : Type.{u3}} [s : Setoid.{succ u3} M] [ps : FirstOrder.Language.Prestructure.{u1, u2, u3} L M s] {β : Type.{u4}} (t : FirstOrder.Language.Term.{u1, u2, u4} L β) (x : β -> M), Eq.{succ u3} (Quotient.{succ u3} M s) (FirstOrder.Language.Term.realize.{u1, u2, u3, u4} L (Quotient.{succ u3} M s) (FirstOrder.Language.quotientStructure.{u1, u2, u3} L M s ps) β (fun (i : β) => Quotient.mk'.{succ u3} M s (x i)) t) (Quotient.mk'.{succ u3} M s (FirstOrder.Language.Term.realize.{u1, u2, u3, u4} L M (FirstOrder.Language.Prestructure.toStructure.{u1, u2, u3} L M s ps) β x t))
-but is expected to have type
-  forall {L : FirstOrder.Language.{u3, u2}} {M : Type.{u1}} (s : Setoid.{succ u1} M) [ps : FirstOrder.Language.Prestructure.{u3, u2, u1} L M s] {β : Type.{u4}} (t : FirstOrder.Language.Term.{u3, u2, u4} L β) (x : β -> M), Eq.{succ u1} (Quotient.{succ u1} M s) (FirstOrder.Language.Term.realize.{u3, u2, u1, u4} L (Quotient.{succ u1} M s) (FirstOrder.Language.quotientStructure.{u3, u2, u1} L M s ps) β (fun (i : β) => Quotient.mk.{succ u1} M s (x i)) t) (Quotient.mk.{succ u1} M s (FirstOrder.Language.Term.realize.{u3, u2, u1, u4} L M (FirstOrder.Language.Prestructure.toStructure.{u3, u2, u1} L M s ps) β x t))
-Case conversion may be inaccurate. Consider using '#align first_order.language.term.realize_quotient_mk FirstOrder.Language.Term.realize_quotient_mk'ₓ'. -/
 theorem Term.realize_quotient_mk' {β : Type _} (t : L.term β) (x : β → M) :
     (t.realize fun i => ⟦x i⟧) = ⟦@Term.realize _ _ ps.toStructure _ x t⟧ :=
   by
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Aaron Anderson
 
 ! This file was ported from Lean 3 source module model_theory.quotients
-! leanprover-community/mathlib commit d78597269638367c3863d40d45108f52207e03cf
+! leanprover-community/mathlib commit a87d22575d946e1e156fc1edd1e1269600a8a282
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -13,6 +13,9 @@ import Mathbin.ModelTheory.Semantics
 
 /-!
 # Quotients of First-Order Structures
+
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
 This file defines prestructures and quotients of first-order structures.
 
 ## Main Definitions
Diff
@@ -34,6 +34,7 @@ open FirstOrder
 
 open Structure
 
+#print FirstOrder.Language.Prestructure /-
 /-- A prestructure is a first-order structure with a `setoid` equivalence relation on it,
   such that quotienting by that equivalence relation is still a structure. -/
 class Prestructure (s : Setoid M) where
@@ -41,9 +42,11 @@ class Prestructure (s : Setoid M) where
   fun_equiv : ∀ {n} {f : L.Functions n} (x y : Fin n → M), x ≈ y → funMap f x ≈ funMap f y
   rel_equiv : ∀ {n} {r : L.Relations n} (x y : Fin n → M) (h : x ≈ y), RelMap r x = RelMap r y
 #align first_order.language.prestructure FirstOrder.Language.Prestructure
+-/
 
 variable {L} {s : Setoid M} [ps : L.Prestructure s]
 
+#print FirstOrder.Language.quotientStructure /-
 instance quotientStructure : L.Structure (Quotient s)
     where
   funMap n f x :=
@@ -51,11 +54,18 @@ instance quotientStructure : L.Structure (Quotient s)
   rel_map n r x :=
     Quotient.lift (@RelMap L M ps.toStructure n r) Prestructure.rel_equiv (Quotient.finChoice x)
 #align first_order.language.quotient_structure FirstOrder.Language.quotientStructure
+-/
 
 variable (s)
 
 include s
 
+/- warning: first_order.language.fun_map_quotient_mk -> FirstOrder.Language.funMap_quotient_mk' is a dubious translation:
+lean 3 declaration is
+  forall {L : FirstOrder.Language.{u1, u2}} {M : Type.{u3}} [s : Setoid.{succ u3} M] [ps : FirstOrder.Language.Prestructure.{u1, u2, u3} L M s] {n : Nat} (f : FirstOrder.Language.Functions.{u1, u2} L n) (x : (Fin n) -> M), Eq.{succ u3} (Quotient.{succ u3} M s) (FirstOrder.Language.Structure.funMap.{u1, u2, u3} L (Quotient.{succ u3} M s) (FirstOrder.Language.quotientStructure.{u1, u2, u3} L M s ps) n f (fun (i : Fin n) => Quotient.mk'.{succ u3} M s (x i))) (Quotient.mk'.{succ u3} M s (FirstOrder.Language.Structure.funMap.{u1, u2, u3} L M (FirstOrder.Language.Prestructure.toStructure.{u1, u2, u3} L M s ps) n f x))
+but is expected to have type
+  forall {L : FirstOrder.Language.{u3, u2}} {M : Type.{u1}} (s : Setoid.{succ u1} M) [ps : FirstOrder.Language.Prestructure.{u3, u2, u1} L M s] {n : Nat} (f : FirstOrder.Language.Functions.{u3, u2} L n) (x : (Fin n) -> M), Eq.{succ u1} (Quotient.{succ u1} M s) (FirstOrder.Language.Structure.funMap.{u3, u2, u1} L (Quotient.{succ u1} M s) (FirstOrder.Language.quotientStructure.{u3, u2, u1} L M s ps) n f (fun (i : Fin n) => Quotient.mk.{succ u1} M s (x i))) (Quotient.mk.{succ u1} M s (FirstOrder.Language.Structure.funMap.{u3, u2, u1} L M (FirstOrder.Language.Prestructure.toStructure.{u3, u2, u1} L M s ps) n f x))
+Case conversion may be inaccurate. Consider using '#align first_order.language.fun_map_quotient_mk FirstOrder.Language.funMap_quotient_mk'ₓ'. -/
 theorem funMap_quotient_mk' {n : ℕ} (f : L.Functions n) (x : Fin n → M) :
     (funMap f fun i => ⟦x i⟧) = ⟦@funMap _ _ ps.toStructure _ f x⟧ :=
   by
@@ -65,6 +75,12 @@ theorem funMap_quotient_mk' {n : ℕ} (f : L.Functions n) (x : Fin n → M) :
   rw [Quotient.finChoice_eq, Quotient.map_mk]
 #align first_order.language.fun_map_quotient_mk FirstOrder.Language.funMap_quotient_mk'
 
+/- warning: first_order.language.rel_map_quotient_mk -> FirstOrder.Language.relMap_quotient_mk' is a dubious translation:
+lean 3 declaration is
+  forall {L : FirstOrder.Language.{u1, u2}} {M : Type.{u3}} [s : Setoid.{succ u3} M] [ps : FirstOrder.Language.Prestructure.{u1, u2, u3} L M s] {n : Nat} (r : FirstOrder.Language.Relations.{u1, u2} L n) (x : (Fin n) -> M), Iff (FirstOrder.Language.Structure.RelMap.{u1, u2, u3} L (Quotient.{succ u3} M s) (FirstOrder.Language.quotientStructure.{u1, u2, u3} L M s ps) n r (fun (i : Fin n) => Quotient.mk'.{succ u3} M s (x i))) (FirstOrder.Language.Structure.RelMap.{u1, u2, u3} L M (FirstOrder.Language.Prestructure.toStructure.{u1, u2, u3} L M s ps) n r x)
+but is expected to have type
+  forall {L : FirstOrder.Language.{u3, u2}} {M : Type.{u1}} (s : Setoid.{succ u1} M) [ps : FirstOrder.Language.Prestructure.{u3, u2, u1} L M s] {n : Nat} (r : FirstOrder.Language.Relations.{u3, u2} L n) (x : (Fin n) -> M), Iff (FirstOrder.Language.Structure.RelMap.{u3, u2, u1} L (Quotient.{succ u1} M s) (FirstOrder.Language.quotientStructure.{u3, u2, u1} L M s ps) n r (fun (i : Fin n) => Quotient.mk.{succ u1} M s (x i))) (FirstOrder.Language.Structure.RelMap.{u3, u2, u1} L M (FirstOrder.Language.Prestructure.toStructure.{u3, u2, u1} L M s ps) n r x)
+Case conversion may be inaccurate. Consider using '#align first_order.language.rel_map_quotient_mk FirstOrder.Language.relMap_quotient_mk'ₓ'. -/
 theorem relMap_quotient_mk' {n : ℕ} (r : L.Relations n) (x : Fin n → M) :
     (RelMap r fun i => ⟦x i⟧) ↔ @RelMap _ _ ps.toStructure _ r x :=
   by
@@ -74,6 +90,12 @@ theorem relMap_quotient_mk' {n : ℕ} (r : L.Relations n) (x : Fin n → M) :
   rw [Quotient.finChoice_eq, Quotient.lift_mk]
 #align first_order.language.rel_map_quotient_mk FirstOrder.Language.relMap_quotient_mk'
 
+/- warning: first_order.language.term.realize_quotient_mk -> FirstOrder.Language.Term.realize_quotient_mk' is a dubious translation:
+lean 3 declaration is
+  forall {L : FirstOrder.Language.{u1, u2}} {M : Type.{u3}} [s : Setoid.{succ u3} M] [ps : FirstOrder.Language.Prestructure.{u1, u2, u3} L M s] {β : Type.{u4}} (t : FirstOrder.Language.Term.{u1, u2, u4} L β) (x : β -> M), Eq.{succ u3} (Quotient.{succ u3} M s) (FirstOrder.Language.Term.realize.{u1, u2, u3, u4} L (Quotient.{succ u3} M s) (FirstOrder.Language.quotientStructure.{u1, u2, u3} L M s ps) β (fun (i : β) => Quotient.mk'.{succ u3} M s (x i)) t) (Quotient.mk'.{succ u3} M s (FirstOrder.Language.Term.realize.{u1, u2, u3, u4} L M (FirstOrder.Language.Prestructure.toStructure.{u1, u2, u3} L M s ps) β x t))
+but is expected to have type
+  forall {L : FirstOrder.Language.{u3, u2}} {M : Type.{u1}} (s : Setoid.{succ u1} M) [ps : FirstOrder.Language.Prestructure.{u3, u2, u1} L M s] {β : Type.{u4}} (t : FirstOrder.Language.Term.{u3, u2, u4} L β) (x : β -> M), Eq.{succ u1} (Quotient.{succ u1} M s) (FirstOrder.Language.Term.realize.{u3, u2, u1, u4} L (Quotient.{succ u1} M s) (FirstOrder.Language.quotientStructure.{u3, u2, u1} L M s ps) β (fun (i : β) => Quotient.mk.{succ u1} M s (x i)) t) (Quotient.mk.{succ u1} M s (FirstOrder.Language.Term.realize.{u3, u2, u1, u4} L M (FirstOrder.Language.Prestructure.toStructure.{u3, u2, u1} L M s ps) β x t))
+Case conversion may be inaccurate. Consider using '#align first_order.language.term.realize_quotient_mk FirstOrder.Language.Term.realize_quotient_mk'ₓ'. -/
 theorem Term.realize_quotient_mk' {β : Type _} (t : L.term β) (x : β → M) :
     (t.realize fun i => ⟦x i⟧) = ⟦@Term.realize _ _ ps.toStructure _ x t⟧ :=
   by

Changes in mathlib4

mathlib3
mathlib4
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -25,7 +25,7 @@ namespace FirstOrder
 
 namespace Language
 
-variable (L : Language) {M : Type _}
+variable (L : Language) {M : Type*}
 
 open FirstOrder
 
@@ -70,7 +70,7 @@ theorem relMap_quotient_mk' {n : ℕ} (r : L.Relations n) (x : Fin n → M) :
   rw [Quotient.finChoice_eq, Quotient.lift_mk]
 #align first_order.language.rel_map_quotient_mk FirstOrder.Language.relMap_quotient_mk'
 
-theorem Term.realize_quotient_mk' {β : Type _} (t : L.Term β) (x : β → M) :
+theorem Term.realize_quotient_mk' {β : Type*} (t : L.Term β) (x : β → M) :
     (t.realize fun i => (⟦x i⟧ : Quotient s)) = ⟦@Term.realize _ _ ps.toStructure _ x t⟧ := by
   induction' t with _ _ _ _ ih
   · rfl
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2022 Aaron Anderson. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Aaron Anderson
-
-! This file was ported from Lean 3 source module model_theory.quotients
-! leanprover-community/mathlib commit d78597269638367c3863d40d45108f52207e03cf
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Data.Fintype.Quotient
 import Mathlib.ModelTheory.Semantics
 
+#align_import model_theory.quotients from "leanprover-community/mathlib"@"d78597269638367c3863d40d45108f52207e03cf"
+
 /-!
 # Quotients of First-Order Structures
 This file defines prestructures and quotients of first-order structures.
feat: port ModelTheory.Quotients (#3972)

Co-authored-by: Chris Hughes <chrishughes24@gmail.com>

Dependencies 7 + 308

309 files ported (97.8%)
126783 lines ported (97.6%)
Show graph

The unported dependencies are