@@ -20,10 +20,10 @@ abbrev DFrac F := LeibnizO (DFracK F)
2020-- TODO: Delete this class. I have it now because the Fractional class is being
2121-- changed concurrently. Also I'm certain that some of these fields will be derivable.
2222class DFractional (F : Type _) extends Fractional F where
23- one_strict_max {y : F} : ¬(One.one + y ≤ One.one)
24- lt_irrefl : ¬(One.one < (One.one : F))
25- strict_pos {x y : F} : ¬(x + y = x)
26- lt_op_mono {x y z : F} : x + y ≤ z → y < z -- OK because positive
23+ -- one_strict_max {y : F} : ¬(One.one + y ≤ One.one)
24+ -- lt_irrefl : ¬(One.one < (One.one : F))
25+ -- strict_pos {x y : F} : ¬(x + y = x)
26+ -- lt_op_mono {x y z : F} : x + y ≤ z → y < z -- OK because positive
2727
2828section dfrac
2929
@@ -34,9 +34,9 @@ variable {F : Type _} [DFractional F]
3434instance : Inhabited (DFrac F) := ⟨⟨Discard⟩⟩
3535
3636abbrev valid : DFrac F → Prop
37- | ⟨Own f⟩ => f ≤ One.one
37+ | ⟨Own f⟩ => Fractional.proper f -- f ≤ One.one
3838| ⟨Discard⟩ => True
39- | ⟨OwnDiscard f⟩ => f < One.one
39+ | ⟨OwnDiscard f⟩ => sorry -- Iris.fraction -- f < One.one
4040
4141abbrev pcore : DFrac F → Option (DFrac F)
4242| ⟨Own _⟩ => none
@@ -70,6 +70,8 @@ instance DFrac_CMRA : CMRA (DFrac F) where
7070 valid_iff_validN := ⟨fun x _ => x, fun x => x 0 ⟩
7171 validN_succ := id
7272 validN_op_left {_ x y} := by
73+ sorry
74+ /-
7375 have Lleft {a' a : F} (H : a' + a < one) : a' < one := by
7476 rcases Fractional.lt_sum.mp H with ⟨r, Hr⟩
7577 exact (Fractional.lt_sum.mpr ⟨a + r, Hr.symm ▸ Fractional.assoc.symm⟩)
@@ -79,12 +81,16 @@ instance DFrac_CMRA : CMRA (DFrac F) where
7981 · exact (Fractional.add_le_mono <| Fractional.lt_le ·)
8082 · exact Lleft
8183 · exact Lleft
84+ -/
8285 assoc {x y z} := by
86+ sorry
87+ /-
8388 rcases x with ⟨x|_|x⟩ <;>
8489 rcases y with ⟨y|_|y⟩ <;>
8590 rcases z with ⟨z|_|z⟩ <;>
8691 simp [op, Fractional.assoc]
87- comm {x y} := by rcases x with ⟨x|_|x⟩ <;> rcases y with ⟨y|_|y⟩ <;> simp [op, Fractional.comm]
92+ -/
93+ comm {x y} := sorry -- by rcases x with ⟨x|_|x⟩ <;> rcases y with ⟨y|_ |y⟩ <;> simp [op, Fractional.comm]
8894 pcore_op_left {x y} := by rcases x with ⟨x|_|x⟩ <;> rcases y with ⟨y|_|y⟩ <;> simp
8995 pcore_idem {x y} := by rcases x with ⟨x|_|x⟩ <;> rcases y with ⟨y|_|y⟩ <;> simp
9096 pcore_op_mono {x y} := by
@@ -120,9 +126,9 @@ instance : CMRA.Exclusive (α := DFrac F) ⟨Own One.one⟩ where
120126 exclusive0_l y := by
121127 rcases y with ⟨y|_|y⟩ <;>
122128 simp only [CMRA.ValidN, valid]
123- · exact DFractional.one_strict_max
124- · exact DFractional.lt_irrefl
125- · exact DFractional.one_strict_max ∘ Fractional.lt_le
129+ · sorry -- exact DFractional.one_strict_max
130+ · sorry -- exact DFractional.lt_irrefl
131+ · sorry -- exact DFractional.one_strict_max ∘ Fractional.lt_le
126132
127133instance {f : F} : CMRA.Cancelable (α := DFrac F) ⟨Own f⟩ where
128134 cancelableN {_ x y} := by
@@ -131,31 +137,31 @@ instance {f : F} : CMRA.Cancelable (α := DFrac F) ⟨Own f⟩ where
131137 simp [CMRA.ValidN, CMRA.op, op]
132138 all_goals intro H Hxyz
133139 all_goals (try have Hxyz' := LeibnizO.dist_inj Hxyz <;> simp at Hxyz')
134- · exact congrArg (LeibnizO.mk ∘ Own) (Fractional.cancel Hxyz')
135- · exact (DFractional.strict_pos (F := F) Hxyz'.symm).elim
136- · exact (DFractional.strict_pos (F := F) Hxyz').elim
137- · exact congrArg (LeibnizO.mk ∘ OwnDiscard) (Fractional.cancel Hxyz')
140+ · sorry -- exact congrArg (LeibnizO.mk ∘ Own) (Fractional.cancel Hxyz')
141+ · sorry -- exact (DFractional.strict_pos (F := F) Hxyz'.symm).elim
142+ · sorry -- exact (DFractional.strict_pos (F := F) Hxyz').elim
143+ · sorry -- exact congrArg (LeibnizO.mk ∘ OwnDiscard) (Fractional.cancel Hxyz')
138144
139145instance {f : F} : CMRA.IdFree (α := DFrac F) ⟨Own f⟩ where
140146 id_free0_r y := by
141147 rcases y with ⟨y|_|y⟩ <;> simp [CMRA.ValidN, CMRA.op, op] <;> intro H Hxyz
142148 all_goals (try have Hxyz' := LeibnizO.dist_inj Hxyz <;> simp at Hxyz')
143- exact (DFractional.strict_pos (F := F) Hxyz').elim
149+ sorry -- exact (DFractional.strict_pos (F := F) Hxyz').elim
144150
145- theorem valid_own_iff {f : F} : ✓ (LeibnizO.mk (Own f)) ↔ f ≤ One.one := by simp [CMRA.Valid]
146- theorem valid_own_one : ✓ (LeibnizO.mk (Own (One.one : F))) := valid_own_iff.mpr Fractional.le_refl
151+ -- theorem valid_own_iff {f : F} : ✓ (LeibnizO.mk (Own f)) ↔ f ≤ One.one := by simp [ CMRA.Valid ]
152+ -- theorem valid_own_one : ✓ (LeibnizO.mk (Own (One.one : F))) := valid_own_iff.mpr Fractional.le_refl
147153
148- theorem valid_op_own_r {dq : DFrac F} {q : F} : ✓ (dq • ⟨Own q⟩) → (q < One.one) := by
149- rcases dq with ⟨y|_|y⟩ <;> simp [CMRA.ValidN, CMRA.op, op, CMRA.Valid]
150- · exact DFractional.lt_op_mono
151- · exact DFractional.lt_op_mono ∘ Fractional.lt_le
154+ -- theorem valid_op_own_r {dq : DFrac F} {q : F} : ✓ (dq • ⟨Own q⟩) → (q < One.one) := by
155+ -- rcases dq with ⟨y|_|y⟩ <;> simp [CMRA.ValidN, CMRA.op, op, CMRA.Valid]
156+ -- · exact DFractional.lt_op_mono
157+ -- · exact DFractional.lt_op_mono ∘ Fractional.lt_le
152158
153- theorem valid_op_own_l {dq : DFrac F} {q : F} : ✓ (⟨Own q⟩ • dq) → (q < One.one) :=
154- valid_op_own_r ∘ CMRA.valid_of_eqv (CMRA.comm (y := dq))
159+ -- theorem valid_op_own_l {dq : DFrac F} {q : F} : ✓ (⟨Own q⟩ • dq) → (q < One.one) :=
160+ -- valid_op_own_r ∘ CMRA.valid_of_eqv (CMRA.comm (y := dq))
155161
156162theorem valid_discarded : ✓ (LeibnizO.mk Discard : DFrac F) := by simp [CMRA.Valid, valid]
157163
158- theorem valid_own_op_discarded {q : F} : ✓ (⟨Own q⟩ • ⟨Discard⟩ : DFrac F) ↔ q < One.one := by
159- simp [CMRA.op, op, CMRA.Valid, valid]
164+ -- theorem valid_own_op_discarded {q : F} : ✓ (⟨Own q⟩ • ⟨Discard⟩ : DFrac F) ↔ q < One.one := by
165+ -- simp [CMRA.op, op, CMRA.Valid, valid]
160166
161167end dfrac
0 commit comments