Skip to content

Commit 4ac92a5

Browse files
chore: cleanup ufrac-auth
1 parent 065da59 commit 4ac92a5

1 file changed

Lines changed: 38 additions & 46 deletions

File tree

Iris/Iris/Algebra/Lib/UFracAuth.lean

Lines changed: 38 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/-
22
Copyright (c) 2026 Zongyuan Liu. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
4-
Authors: Zongyuan Liu
4+
Authors: Zongyuan Liu, Markus de Medeiros
55
-/
66
module
77

@@ -62,30 +62,28 @@ nonrec instance frag_ne {q : Qp} : NonExpansive (frag q : A → UFracAuth) where
6262
/-! ## Discrete instances -/
6363

6464
@[rocq_alias ufrac_auth_auth_discrete]
65-
instance auth_discrete {q : Qp} {a : A} [DiscreteE a] : DiscreteE (●U{q} a : UFracAuth) :=
65+
instance auth_discrete {q : Qp} {a : A} [DiscreteE a] : DiscreteE (●U{q} a) :=
6666
letI _ : DiscreteE (unit : Option (UFrac × A)) := none_is_discrete
6767
by infer_instance
6868

6969
@[rocq_alias ufrac_auth_frag_discrete]
70-
instance frag_discrete {q : Qp} {a : A} [DiscreteE a] : DiscreteE (◯U{q} a : UFracAuth) :=
70+
instance frag_discrete {q : Qp} {a : A} [DiscreteE a] : DiscreteE (◯U{q} a) :=
7171
by infer_instance
7272

7373
/-! ## Validity -/
7474

7575
@[rocq_alias ufrac_auth_validN]
76-
theorem validN {n : Nat} {a : A} {p : Qp} (ha : ✓{n} a) :
77-
✓{n} ((●U{p} a : UFracAuth) • ◯U{p} a) := by
76+
theorem validN {n : Nat} {a : A} {p : Qp} (ha : ✓{n} a) : ✓{n} (●U{p} a) • ◯U{p} a := by
7877
simpa only [both_validN] using ⟨incN_refl _, ⟨trivial, ha⟩⟩
7978

8079
@[rocq_alias ufrac_auth_valid]
81-
theorem valid {p : Qp} {a : A} (ha : ✓ a) : ✓ ((●U{p} a : UFracAuth) • ◯U{p} a) :=
80+
theorem valid {p : Qp} {a : A} (ha : ✓ a) : ✓ (●U{p} a) • ◯U{p} a :=
8281
auth_both_valid_2 ⟨trivial, ha⟩ ⟨none, rfl⟩
8382

8483
/-! ## Agreement -/
8584

8685
@[rocq_alias ufrac_auth_agreeN]
87-
theorem agreeN {n : Nat} {p : Qp} {a b : A} (h : ✓{n} ((●U{p} a : UFracAuth) • ◯U{p} b)) :
88-
a ≡{n}≡ b := by
86+
theorem agreeN {n : Nat} {p : Qp} {a b : A} (h : ✓{n} (●U{p} a) • ◯U{p} b) : a ≡{n}≡ b := by
8987
obtain ⟨mc, hmc⟩ := (both_validN.mp h).1
9088
match mc with
9189
| none => exact hmc.2
@@ -94,125 +92,119 @@ theorem agreeN {n : Nat} {p : Qp} {a b : A} (h : ✓{n} ((●U{p} a : UFracAuth)
9492
grind
9593

9694
@[rocq_alias ufrac_auth_agree]
97-
theorem agree {p : Qp} {a b : A} (h : ✓ ((●U{p} a : UFracAuth) • ◯U{p} b)) : a = b :=
98-
OFE.eq_dist.mpr fun n => agreeN (valid_iff_validN.mp h n)
95+
theorem agree {p : Qp} {a b : A} (h : ✓ (●U{p} a) • ◯U{p} b) : a = b :=
96+
eq_dist.mpr (agreeN <| valid_iff_validN.mp h ·)
9997

10098
#rocq_ignore ufrac_auth_agree_L "Use agree"
10199

102100
/-! ## Inclusion -/
103101

104102
@[rocq_alias ufrac_auth_includedN]
105103
theorem includedN {n : Nat} {p q : Qp} {a b : A}
106-
(h : ✓{n} ((●U{p} a : UFracAuth) • ◯U{q} b)) : some b ≼{n} some a := by
104+
(h : ✓{n} (●U{p} a) • ◯U{q} b) : some b ≼{n} some a := by
107105
rw [both_validN] at h
108106
obtain ⟨⟨mc, hmc⟩, _⟩ := h
109107
match mc with
110108
| none => exact ⟨none, hmc.2
111109
| some (_, cr) => exact ⟨some cr, hmc.2
112110

113111
@[rocq_alias ufrac_auth_included]
114-
theorem included [CMRA.Discrete A] {q p : Qp} {a b : A}
115-
(h : ✓ ((●U{p} a : UFracAuth) • ◯U{q} b)) : some b ≼ some a := by
112+
theorem included [CMRA.Discrete A] {q p : Qp} {a b : A} (h : ✓ (●U{p} a) • ◯U{q} b) :
113+
some b ≼ some a := by
116114
rw [auth_both_valid_discrete] at h
117115
obtain ⟨⟨mc, hmc⟩, _⟩ := h
118116
match mc with
119-
| none => exact ⟨none, congrArg (fun p => some p.snd) (some_eqv_some.mp hmc)⟩
120-
| some (_, cr) => exact ⟨some cr, congrArg (fun p => some p.snd) (some_eqv_some.mp hmc)⟩
117+
| none => exact ⟨none, congrArg (some ·.snd) (some_eqv_some.mp hmc)⟩
118+
| some (_, cr) => exact ⟨some cr, congrArg (some ·.snd) (some_eqv_some.mp hmc)⟩
121119

122120
@[rocq_alias ufrac_auth_includedN_total]
123-
theorem includedN_total [IsTotal A] {n : Nat} {q p : Qp} {a b : A}
124-
(h : ✓{n} ((●U{p} a : UFracAuth) • ◯U{q} b)) : b ≼{n} a :=
125-
some_incN_some_iff_is_total.mp <| includedN h
121+
theorem includedN_total [IsTotal A] {n : Nat} {q p : Qp} {a b : A} (h : ✓{n} (●U{p} a) • ◯U{q} b) :
122+
b ≼{n} a := some_incN_some_iff_is_total.mp <| includedN h
126123

127124
@[rocq_alias ufrac_auth_included_total]
128125
theorem included_total [CMRA.Discrete A] [IsTotal A] {q p : Qp} {a b : A}
129-
(h : ✓ ((●U{p} a : UFracAuth) • ◯U{q} b)) : b ≼ a :=
126+
(h : ✓ (●U{p} a) • ◯U{q} b) : b ≼ a :=
130127
inc_of_some_inc_some <| included h
131128

132129
/-! ## Auth-only validity -/
133130

134131
@[rocq_alias ufrac_auth_auth_validN]
135-
theorem auth_validN {n : Nat} {q : Qp} {a : A} : (✓{n} (●U{q} a : UFracAuth)) ↔ ✓{n} a := by
132+
theorem auth_validN {n : Nat} {q : Qp} {a : A} : (✓{n} ●U{q} a) ↔ ✓{n} a := by
136133
rw [Auth.auth_validN]
137134
exact ⟨(·.2), (⟨trivial, ·⟩)⟩
138135

139136
@[rocq_alias ufrac_auth_auth_valid]
140-
theorem auth_valid {q : Qp} {a : A} : (✓ (●U{q} a : UFracAuth)) ↔ ✓ a := by
137+
theorem auth_valid {q : Qp} {a : A} : (✓ ●U{q} a) ↔ ✓ a := by
141138
rw [Auth.auth_valid]
142139
exact ⟨(·.2), (⟨trivial, ·⟩)⟩
143140

144141
/-! ## Fragment-only validity -/
145142

146143
@[rocq_alias ufrac_auth_frag_validN]
147-
theorem frag_validN {n : Nat} {q : Qp} {a : A} : (✓{n} (◯U{q} a : UFracAuth)) ↔ ✓{n} a := by
144+
theorem frag_validN {n : Nat} {q : Qp} {a : A} : (✓{n} ◯U{q} a) ↔ ✓{n} a := by
148145
rw [Auth.frag_validN]
149146
exact ⟨(·.2), (⟨trivial, ·⟩)⟩
150147

151148
@[rocq_alias ufrac_auth_frag_valid]
152-
theorem frag_valid {q : Qp} {a : A} : (✓ (◯U{q} a : UFracAuth)) ↔ ✓ a := by
149+
theorem frag_valid {q : Qp} {a : A} : (✓ ◯U{q} a) ↔ ✓ a := by
153150
rw [Auth.frag_valid]
154151
exact ⟨(·.2), (⟨trivial, ·⟩)⟩
155152

156153
/-! ## Operations -/
157154

158155
@[rocq_alias ufrac_auth_frag_op]
159-
theorem frag_op {q1 q2 : Qp} {a1 a2 : A} :
160-
(◯U{q1 + q2} (a1 • a2) : UFracAuth) = (◯U{q1} a1) • ◯U{q2} a2 := rfl
156+
theorem frag_op {q1 q2 : Qp} {a1 a2 : A} : (◯U{q1 + q2} (a1 • a2)) = (◯U{q1} a1) • ◯U{q2} a2 := rfl
161157

162158
@[rocq_alias ufrac_auth_frag_op_validN]
163159
theorem frag_op_validN {n : Nat} {q1 q2 : Qp} {a b : A} :
164-
(✓{n} ((◯U{q1} a : UFracAuth) • ◯U{q2} b)) ↔ ✓{n} (a • b) := frag_validN
160+
(✓{n} (◯U{q1} a) • ◯U{q2} b) ↔ ✓{n} (a • b) := frag_validN
165161

166162
@[rocq_alias ufrac_auth_frag_op_valid]
167-
theorem frag_op_valid {q1 q2 : Qp} {a b : A} :
168-
(✓ ((◯U{q1} a : UFracAuth) • ◯U{q2} b)) ↔ ✓ (a • b) := frag_valid
163+
theorem frag_op_valid {q1 q2 : Qp} {a b : A} : ✓ ((◯U{q1} a) • ◯U{q2} b) ↔ ✓ (a • b) := frag_valid
169164

170165
/-! ## IsOp type class instances -/
171166

172167
@[rocq_alias ufrac_auth_is_op]
173168
instance isOp_ufrac_auth {q q1 q2 : Qp} {a1 a2 : A} {a : outParam A}
174169
[h1 : IsOp io q q1 q2] [h2 : IsOp io a a1 a2] : IsOp io (◯U{q} a) (◯U{q1} a1) (◯U{q2} a2) where
175-
is_op :=
176-
(congrArg (frag · a) h1.is_op).trans <|
177-
(congrArg (frag (q1 • q2)) h2.is_op).trans frag_op
170+
is_op := calc
171+
◯U{q} a
172+
_ = ◯U{q1 • q2} a := congrArg (frag · a) h1.is_op
173+
_ = ◯U{q1 • q2} a1 • a2 := congrArg _ h2.is_op
178174

179175
set_option synthInstance.checkSynthOrder false in
180176
@[rocq_alias ufrac_auth_is_op_core_id]
181177
instance isOp_ufrac_auth_core_id {q q1 q2 : Qp} {a : A} [h1 : CoreId a] [h2 : IsOp io q q1 q2] :
182178
IsOp io (◯U{q} a) (◯U{q1} a) (◯U{q2} a) where
183-
is_op :=
184-
(congrArg (frag · a) h2.is_op).trans <|
185-
(congrArg (frag (q1 • q2)) (op_self a).symm).trans frag_op
179+
is_op := calc
180+
(◯U{q} a)
181+
_ = ◯U{q1 • q2} a := congrArg (frag · a) h2.is_op
182+
_ = ◯U{q1 • q2} a • a := congrArg _ (op_self a).symm
186183

187184
/-! ## Updates -/
188185

189186
@[rocq_alias ufrac_auth_update]
190187
theorem update {p q : Qp} {a b a' b' : A} (h : (a, b) ~l~> (a', b')) :
191-
((●U{p} a : UFracAuth) • ◯U{q} b) ~~> (●U{p} a') • ◯U{q} b' :=
188+
((●U{p} a) • ◯U{q} b) ~~> (●U{p} a') • ◯U{q} b' :=
192189
auth_update <| .option (.prod_2 _ _ h)
193190

194191
@[rocq_alias ufrac_auth_update_surplus]
195192
theorem update_surplus {p q : Qp} {a b : A} (h : ✓ (a • b)) :
196-
(●U{p} a : UFracAuth) ~~> (●U{p + q} (a • b)) • ◯U{q} b := by
193+
(●U{p} a) ~~> (●U{p + q} (a • b)) • ◯U{q} b := by
197194
refine auth_update_alloc (local_update_unital.mpr fun n mpa _ heq => ?_)
198195
refine ⟨⟨trivial, h.validN⟩, ?_⟩
199-
have hop : some ((⟨p + q⟩ : UFrac), a • b)
200-
≡{n}≡ some ((⟨q⟩ : UFrac), b) • some ((⟨p⟩ : UFrac), a) :=
201-
⟨comm.dist, op_commN⟩
202-
refine hop.trans ?_
203-
exact (heq.trans (unit_left_id_dist mpa)).op_r
196+
refine .trans ?_ (heq.trans (unit_left_id_dist mpa)).op_r
197+
exact ⟨comm.dist, op_commN⟩
204198

205199
@[rocq_alias ufrac_auth_update_surplus_cancel]
206200
theorem update_surplus_cancel {p q : Qp} {a b : A} [CMRA.Cancelable b] :
207-
((●U{p + q} (a • b) : UFracAuth) • ◯U{q} b) ~~> ●U{p} a := by
201+
((●U{p + q} (a • b)) • ◯U{q} b) ~~> ●U{p} a := by
208202
refine auth_update_dealloc (local_update_unital.mpr fun n mpa hv heq => ?_)
209203
match mpa with
210204
| none =>
211-
have hp : p + q = q := ext_iff.mp heq.1
212-
grind
205+
grind [show p + q = q from ext_iff.mp heq.1]
213206
| some (p', a') =>
214-
have hpq : p + q = q + p'.frac := ext_iff.mp heq.1
215-
have hp : p = p'.frac := by grind
207+
have hp : p = p'.frac := by grind [show p + q = q + p'.frac from ext_iff.mp heq.1]
216208
refine ⟨⟨trivial, validN_op_left hv.2⟩, ?_⟩
217209
refine ⟨.of_eq (ext_iff.mpr hp), ?_⟩
218210
refine cancelableN ?_ (op_commN.trans heq.2)

0 commit comments

Comments
 (0)