Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 178456f

Browse files
committed
feat(set_theory/surreal/basic): definition of and < on numeric games (#14169)
1 parent fe2b5ab commit 178456f

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

src/set_theory/surreal/basic.lean

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,42 @@ theorem lt_of_lf {x y : pgame} (ox : numeric x) (oy : numeric y) (h : x ⧏ y) :
102102
theorem lf_iff_lt {x y : pgame} (ox : numeric x) (oy : numeric y) : x ⧏ y ↔ x < y :=
103103
⟨lt_of_lf ox oy, lf_of_lt⟩
104104

105+
/-- Definition of `x ≤ y` on numeric pre-games, in terms of `<` -/
106+
theorem le_iff_forall_lt {x y : pgame} (ox : x.numeric) (oy : y.numeric) :
107+
x ≤ y ↔ (∀ i, x.move_left i < y) ∧ ∀ j, x < y.move_right j :=
108+
begin
109+
rw le_iff_forall_lf,
110+
convert iff.rfl;
111+
refine propext (forall_congr $ λ i, (lf_iff_lt _ _).symm);
112+
apply_rules [numeric.move_left, numeric.move_right]
113+
end
114+
115+
theorem le_of_forall_lt {x y : pgame} (ox : x.numeric) (oy : y.numeric) :
116+
((∀ i, x.move_left i < y) ∧ ∀ j, x < y.move_right j) → x ≤ y :=
117+
(le_iff_forall_lt ox oy).2
118+
119+
/-- Definition of `x < y` on numeric pre-games, in terms of `≤` -/
120+
theorem lt_iff_forall_le {x y : pgame} (ox : x.numeric) (oy : y.numeric) :
121+
x < y ↔ (∃ i, x ≤ y.move_left i) ∨ ∃ j, x.move_right j ≤ y :=
122+
by rw [←lf_iff_lt ox oy, lf_iff_forall_le]
123+
124+
theorem lt_of_forall_le {x y : pgame} (ox : x.numeric) (oy : y.numeric) :
125+
((∃ i, x ≤ y.move_left i) ∨ ∃ j, x.move_right j ≤ y) → x < y :=
126+
(lt_iff_forall_le ox oy).2
127+
128+
/-- The definition of `x < y` on numeric pre-games, in terms of `<` two moves later. -/
129+
theorem lt_def {x y : pgame} (ox : x.numeric) (oy : y.numeric) : x < y ↔
130+
(∃ i, (∀ i', x.move_left i' < y.move_left i) ∧ ∀ j, x < (y.move_left i).move_right j) ∨
131+
∃ j, (∀ i, (x.move_right j).move_left i < y) ∧ ∀ j', x.move_right j < y.move_right j' :=
132+
begin
133+
rw [←lf_iff_lt ox oy, lf_def],
134+
convert iff.rfl;
135+
ext;
136+
convert iff.rfl;
137+
refine propext (forall_congr $ λ i, lf_iff_lt _ _);
138+
apply_rules [numeric.move_left, numeric.move_right]
139+
end
140+
105141
theorem not_fuzzy {x y : pgame} (ox : numeric x) (oy : numeric y) : ¬ fuzzy x y :=
106142
λ h, not_lf.2 (le_of_lf ox oy (lf_of_fuzzy h)) h.2
107143

0 commit comments

Comments
 (0)