@@ -14,13 +14,13 @@ This file defines ordered first-order languages and structures, as well as their
1414* `first_order.language.order_Structure` is the structure on an ordered type, assigning the symbol
1515 representing `≤` to the actual relation `≤`.
1616* `first_order.language.is_ordered` points out a specific symbol in a language as representing `≤`.
17- * `first_order.language.is_ordered_structure` indicates that a structure over a
18- * `first_order.language.Theory.linear_order` and similar define the theories of preorders,
17+ * `first_order.language.ordered_structure` indicates that the `≤` symbol in an ordered language
18+ is interpreted as the actual relation `≤` in a particular structure.
19+ * `first_order.language.linear_order_theory` and similar define the theories of preorders,
1920 partial orders, and linear orders.
20- * `first_order.language.Theory. DLO` defines the theory of dense linear orders without endpoints, a
21+ * `first_order.language.DLO` defines the theory of dense linear orders without endpoints, a
2122 particularly useful example in model theory.
2223
23-
2424## Main Results
2525* `partial_order`s model the theory of partial orders, `linear_order`s model the theory of
2626 linear orders, and dense linear orders without endpoints model `Theory.DLO`.
@@ -40,11 +40,11 @@ variables {L : language.{u v}} {α : Type w} {M : Type w'} {n : ℕ}
4040protected def order : language :=
4141language.mk₂ empty empty empty empty unit
4242
43- namespace order
44-
45- instance Structure [has_le M] : language.order.Structure M :=
43+ instance order_Structure [has_le M] : language.order.Structure M :=
4644Structure.mk₂ empty.elim empty.elim empty.elim empty.elim (λ _, (≤))
4745
46+ namespace order
47+
4848instance : is_relational (language.order) := language.is_relational_mk₂
4949
5050instance : subsingleton (language.order.relations n) :=
@@ -89,137 +89,145 @@ Lhom.funext (subsingleton.elim _ _) (subsingleton.elim _ _)
8989
9090instance : is_ordered (L.sum language.order) := ⟨sum.inr is_ordered.le_symb⟩
9191
92+ section
93+ variables (L) [is_ordered L]
94+
9295/-- The theory of preorders. -/
93- protected def Theory.preorder : language.order .Theory :=
96+ def preorder_theory : L .Theory :=
9497{le_symb.reflexive, le_symb.transitive}
9598
9699/-- The theory of partial orders. -/
97- protected def Theory.partial_order : language.order .Theory :=
100+ def partial_order_theory : L .Theory :=
98101{le_symb.reflexive, le_symb.antisymmetric, le_symb.transitive}
99102
100103/-- The theory of linear orders. -/
101- protected def Theory.linear_order : language.order .Theory :=
104+ def linear_order_theory : L .Theory :=
102105{le_symb.reflexive, le_symb.antisymmetric, le_symb.transitive, le_symb.total}
103106
104107/-- A sentence indicating that an order has no top element:
105108$\forall x, \exists y, \neg y \le x$. -/
106- protected def sentence.no_top_order : language.order .sentence := ∀' ∃' ∼ ((&1 ).le &0 )
109+ def no_top_order_sentence : L .sentence := ∀' ∃' ∼ ((&1 ).le &0 )
107110
108111/-- A sentence indicating that an order has no bottom element:
109112$\forall x, \exists y, \neg x \le y$. -/
110- protected def sentence.no_bot_order : language.order .sentence := ∀' ∃' ∼ ((&0 ).le &1 )
113+ def no_bot_order_sentence : L .sentence := ∀' ∃' ∼ ((&0 ).le &1 )
111114
112115/-- A sentence indicating that an order is dense:
113116$\forall x, \forall y, x < y \to \exists z, x < z \wedge z < y$. -/
114- protected def sentence.densely_ordered : language.order .sentence :=
117+ def densely_ordered_sentence : L .sentence :=
115118∀' ∀' (((&0 ).lt &1 ) ⟹ (∃' (((&0 ).lt &2 ) ⊓ ((&2 ).lt &1 ))))
116119
117120/-- The theory of dense linear orders without endpoints. -/
118- protected def Theory.DLO : language.order.Theory :=
119- Theory.linear_order ∪ {sentence.no_top_order, sentence.no_bot_order, sentence.densely_ordered}
121+ def DLO : L.Theory :=
122+ L.linear_order_theory ∪
123+ {L.no_top_order_sentence, L.no_bot_order_sentence, L.densely_ordered_sentence}
124+
125+ end
120126
121127variables (L M)
122128
123129/-- A structure is ordered if its language has a `≤` symbol whose interpretation is -/
124- abbreviation is_ordered_structure [is_ordered L] [has_le M] [L.Structure M] : Prop :=
130+ abbreviation ordered_structure [is_ordered L] [has_le M] [L.Structure M] : Prop :=
125131Lhom.is_expansion_on (order_Lhom L) M
126132
127133variables {L M}
128134
129- @[simp] lemma is_ordered_structure_iff [is_ordered L] [has_le M] [L.Structure M] :
130- L.is_ordered_structure M ↔ Lhom.is_expansion_on (order_Lhom L) M := iff.rfl
135+ @[simp] lemma ordered_structure_iff [is_ordered L] [has_le M] [L.Structure M] :
136+ L.ordered_structure M ↔ Lhom.is_expansion_on (order_Lhom L) M := iff.rfl
131137
132- instance is_ordered_structure_has_le [has_le M] :
133- is_ordered_structure language.order M :=
138+ instance ordered_structure_has_le [has_le M] :
139+ ordered_structure language.order M :=
134140begin
135- rw [is_ordered_structure_iff , order_Lhom_order],
141+ rw [ordered_structure_iff , order_Lhom_order],
136142 exact Lhom.id_is_expansion_on M,
137143end
138144
139145instance model_preorder [preorder M] :
140- M ⊨ Theory.preorder :=
146+ M ⊨ language.order.preorder_theory :=
141147begin
142- simp only [Theory.preorder , Theory.model_iff, set.mem_insert_iff, set.mem_singleton_iff,
148+ simp only [preorder_theory , Theory.model_iff, set.mem_insert_iff, set.mem_singleton_iff,
143149 forall_eq_or_imp, relations.realize_reflexive, rel_map_apply₂, forall_eq,
144150 relations.realize_transitive],
145151 exact ⟨le_refl, λ _ _ _, le_trans⟩
146152end
147153
148154instance model_partial_order [partial_order M] :
149- M ⊨ Theory.partial_order :=
155+ M ⊨ language.order.partial_order_theory :=
150156begin
151- simp only [Theory.partial_order , Theory.model_iff, set.mem_insert_iff, set.mem_singleton_iff,
157+ simp only [partial_order_theory , Theory.model_iff, set.mem_insert_iff, set.mem_singleton_iff,
152158 forall_eq_or_imp, relations.realize_reflexive, rel_map_apply₂, relations.realize_antisymmetric,
153159 forall_eq, relations.realize_transitive],
154160 exact ⟨le_refl, λ _ _, le_antisymm, λ _ _ _, le_trans⟩,
155161end
156162
157163instance model_linear_order [linear_order M] :
158- M ⊨ Theory.linear_order :=
164+ M ⊨ language.order.linear_order_theory :=
159165begin
160- simp only [Theory.linear_order , Theory.model_iff, set.mem_insert_iff, set.mem_singleton_iff,
166+ simp only [linear_order_theory , Theory.model_iff, set.mem_insert_iff, set.mem_singleton_iff,
161167 forall_eq_or_imp, relations.realize_reflexive, rel_map_apply₂, relations.realize_antisymmetric,
162168 relations.realize_transitive, forall_eq, relations.realize_total],
163169 exact ⟨le_refl, λ _ _, le_antisymm, λ _ _ _, le_trans, le_total⟩,
164170end
165171
166- section is_ordered_structure
172+ section ordered_structure
167173variables [is_ordered L] [L.Structure M]
168174
169- @[simp] lemma rel_map_le_symb [has_le M] [L.is_ordered_structure M] {a b : M} :
175+ @[simp] lemma rel_map_le_symb [has_le M] [L.ordered_structure M] {a b : M} :
170176 rel_map (le_symb : L.relations 2 ) ![a, b] ↔ a ≤ b :=
171177begin
172178 rw [← order_Lhom_le_symb, Lhom.map_on_relation],
173179 refl,
174180end
175181
176- @[simp] lemma term.realize_le [has_le M] [L.is_ordered_structure M]
182+ @[simp] lemma term.realize_le [has_le M] [L.ordered_structure M]
177183 {t₁ t₂ : L.term (α ⊕ fin n)} {v : α → M} {xs : fin n → M} :
178184 (t₁.le t₂).realize v xs ↔ t₁.realize (sum.elim v xs) ≤ t₂.realize (sum.elim v xs) :=
179185by simp [term.le]
180186
181- @[simp] lemma term.realize_lt [preorder M] [L.is_ordered_structure M]
187+ @[simp] lemma term.realize_lt [preorder M] [L.ordered_structure M]
182188 {t₁ t₂ : L.term (α ⊕ fin n)} {v : α → M} {xs : fin n → M} :
183189 (t₁.lt t₂).realize v xs ↔ t₁.realize (sum.elim v xs) < t₂.realize (sum.elim v xs) :=
184190by simp [term.lt, lt_iff_le_not_le]
185191
186- end is_ordered_structure
192+ end ordered_structure
187193
188194section has_le
189195variables [has_le M]
190196
191- theorem realize_no_top_order_iff : M ⊨ sentence.no_top_order ↔ no_top_order M :=
197+ theorem realize_no_top_order_iff : M ⊨ language.order.no_top_order_sentence ↔ no_top_order M :=
192198begin
193- simp only [sentence.no_top_order , sentence.realize, formula.realize, bounded_formula.realize_all,
199+ simp only [no_top_order_sentence , sentence.realize, formula.realize, bounded_formula.realize_all,
194200 bounded_formula.realize_ex, bounded_formula.realize_not, realize, term.realize_le,
195201 sum.elim_inr],
196202 refine ⟨λ h, ⟨λ a, h a⟩, _⟩,
197203 introsI h a,
198204 exact exists_not_le a,
199205end
200206
201- @[simp] lemma realize_no_top_order [h : no_top_order M] : M ⊨ sentence.no_top_order :=
207+ @[simp] lemma realize_no_top_order [h : no_top_order M] :
208+ M ⊨ language.order.no_top_order_sentence :=
202209realize_no_top_order_iff.2 h
203210
204- theorem realize_no_bot_order_iff : M ⊨ sentence.no_bot_order ↔ no_bot_order M :=
211+ theorem realize_no_bot_order_iff : M ⊨ language.order.no_bot_order_sentence ↔ no_bot_order M :=
205212begin
206- simp only [sentence.no_bot_order , sentence.realize, formula.realize, bounded_formula.realize_all,
213+ simp only [no_bot_order_sentence , sentence.realize, formula.realize, bounded_formula.realize_all,
207214 bounded_formula.realize_ex, bounded_formula.realize_not, realize, term.realize_le,
208215 sum.elim_inr],
209216 refine ⟨λ h, ⟨λ a, h a⟩, _⟩,
210217 introsI h a,
211218 exact exists_not_ge a,
212219end
213220
214- @[simp] lemma realize_no_bot_order [h : no_bot_order M] : M ⊨ sentence.no_bot_order :=
221+ @[simp] lemma realize_no_bot_order [h : no_bot_order M] :
222+ M ⊨ language.order.no_bot_order_sentence :=
215223realize_no_bot_order_iff.2 h
216224
217225end has_le
218226
219227theorem realize_densely_ordered_iff [preorder M] :
220- M ⊨ sentence.densely_ordered ↔ densely_ordered M :=
228+ M ⊨ language.order.densely_ordered_sentence ↔ densely_ordered M :=
221229begin
222- simp only [sentence.densely_ordered , sentence.realize, formula.realize,
230+ simp only [densely_ordered_sentence , sentence.realize, formula.realize,
223231 bounded_formula.realize_imp, bounded_formula.realize_all, realize, term.realize_lt,
224232 sum.elim_inr, bounded_formula.realize_ex, bounded_formula.realize_inf],
225233 refine ⟨λ h, ⟨λ a b ab, h a b ab⟩, _⟩,
@@ -228,13 +236,13 @@ begin
228236end
229237
230238@[simp] lemma realize_densely_ordered [preorder M] [h : densely_ordered M] :
231- M ⊨ sentence.densely_ordered :=
239+ M ⊨ language.order.densely_ordered_sentence :=
232240realize_densely_ordered_iff.2 h
233241
234242instance model_DLO [linear_order M] [densely_ordered M] [no_top_order M] [no_bot_order M] :
235- M ⊨ Theory .DLO :=
243+ M ⊨ language.order .DLO :=
236244begin
237- simp only [Theory. DLO, set.union_insert, set.union_singleton, Theory.model_iff,
245+ simp only [DLO, set.union_insert, set.union_singleton, Theory.model_iff,
238246 set.mem_insert_iff, forall_eq_or_imp, realize_no_top_order, realize_no_bot_order,
239247 realize_densely_ordered, true_and],
240248 rw ← Theory.model_iff,
0 commit comments