@@ -1172,9 +1172,15 @@ Section LockServ.
1172
1172
}
1173
1173
+ unfold InputHandler in *. break_match.
1174
1174
* unfold ClientIOHandler in *.
1175
- { monad_unfold. repeat break_match; repeat find_inversion; intuition.
1175
+ { monad_unfold.
1176
+ repeat break_match; repeat find_inversion; intuition;
1177
+ repeat rewrite snoc_assoc in *;
1178
+ try apply trace_mutex'_no_out_extend;
1179
+ try find_apply_lem_hyp last_holder'_no_out_inv;
1180
+ try (apply last_holder'_no_out_extend; auto).
1176
1181
- apply trace_mutual_exclusion'_extend_input; auto. congruence.
1177
- - rewrite update_nop_ext. find_apply_lem_hyp last_holder'_input_inv; try congruence.
1182
+ - rewrite update_nop_ext.
1183
+ find_apply_lem_hyp last_holder'_input_inv; try congruence.
1178
1184
auto.
1179
1185
- match goal with
1180
1186
| [ H : _ |- _ ] => rewrite update_nop in H
@@ -1208,10 +1214,14 @@ Section LockServ.
1208
1214
}
1209
1215
* unfold ServerIOHandler in *.
1210
1216
monad_unfold. find_inversion.
1211
- { intuition.
1212
- - apply trace_mutual_exclusion'_extend_input_server. auto.
1213
- - rewrite update_nop. find_apply_lem_hyp last_holder'_input_inv_server. auto.
1214
- - rewrite_update. unfold last_holder. rewrite last_holder'_server_extend.
1217
+ { intuition;
1218
+ repeat rewrite snoc_assoc in *.
1219
+ - apply trace_mutex'_no_out_extend.
1220
+ apply trace_mutual_exclusion'_extend_input_server. auto.
1221
+ - find_apply_lem_hyp last_holder'_no_out_inv.
1222
+ rewrite update_nop. find_apply_lem_hyp last_holder'_input_inv_server. auto.
1223
+ - apply last_holder'_no_out_extend; auto.
1224
+ rewrite_update. unfold last_holder. rewrite last_holder'_server_extend.
1215
1225
auto.
1216
1226
}
1217
1227
Qed .
0 commit comments