@@ -28,16 +28,16 @@ Import mbox.
28
28
29
29
(* QOL: nicer names for bitvector and mbox arguments *)
30
30
#[local] Hint Extern 901 (IntroArg Any (bitvector _) _) =>
31
- let e := fresh "x" in IntroArg_intro e : refines prepostcond.
31
+ let e := fresh "x" in IntroArg_intro e : refines prepostcond.
32
32
#[local] Hint Extern 901 (IntroArg Any Mbox _) =>
33
- let e := fresh "m" in IntroArg_intro e : refines prepostcond.
33
+ let e := fresh "m" in IntroArg_intro e : refines prepostcond.
34
34
#[local] Hint Extern 901 (IntroArg Any Mbox_def _) =>
35
35
let e := fresh "m" in IntroArg_intro e : refines prepostcond.
36
36
37
37
#[local] Hint Extern 901 (IntroArg RetAny (bitvector _) _) =>
38
- let e := fresh "r_x" in IntroArg_intro e : refines prepostcond.
38
+ let e := fresh "r_x" in IntroArg_intro e : refines prepostcond.
39
39
#[local] Hint Extern 901 (IntroArg RetAny Mbox _) =>
40
- let e := fresh "r_m" in IntroArg_intro e : refines prepostcond.
40
+ let e := fresh "r_m" in IntroArg_intro e : refines prepostcond.
41
41
#[local] Hint Extern 901 (IntroArg RetAny Mbox_def _) =>
42
42
let e := fresh "r_m" in IntroArg_intro e : refines prepostcond.
43
43
@@ -194,7 +194,7 @@ Polymorphic Lemma bvuleWithProof_not_IntroArg n w a b goal :
194
194
IntroArg n (~ (isBvule w a b)) (fun _ => goal) ->
195
195
IntroArg n (bvuleWithProof w a b = Nothing _) (fun _ => goal).
196
196
Proof . intros H eq; apply H; apply bvuleWithProof_not; eauto. Qed .
197
-
197
+
198
198
#[local] Hint Extern 101 (IntroArg _ (bvuleWithProof _ _ _ = Nothing _) _) =>
199
199
simple apply bvuleWithProof_not_IntroArg || shelve : refines.
200
200
@@ -288,9 +288,9 @@ Global Instance QuantType_bitvector {w} : QuantType (bitvector w) :=
288
288
{ quantEnc := QEnc_nat;
289
289
quantEnum := bvNat w;
290
290
quantEnumInv := bvToNat w;
291
- quantEnumSurjective := bvNat_bvToNat_id w }.
291
+ quantEnumSurjective := bvNat_bvToNat w }.
292
292
293
- Lemma gen_sawAt_eq n a v `{Inhabited a} :
293
+ Lemma gen_sawAt_eq n a v `{Inhabited a} :
294
294
gen n a (sawAt n a v) = v.
295
295
Proof . dependent induction v; simpl; f_equal. apply IHv. Qed .
296
296
@@ -441,7 +441,7 @@ Tactic Notation "rewrite_transMbox_Mbox_nil_r_dep" "in" ident(H1) ident(H2) :=
441
441
Tactic Notation "rewrite_transMbox_Mbox_nil_r_dep" "in " ident(H1) ident(H2) ident(H3) :=
442
442
revert H1 H2 H3; rewrite transMbox_Mbox_nil_r; intros H1 H2 H3.
443
443
444
- Definition mbox_chain_length :=
444
+ Definition mbox_chain_length :=
445
445
Mbox_rect (fun _ => nat) O (fun _ _ _ rec _ => S rec).
446
446
447
447
Lemma mbox_chain_length_transMbox m1 m2 :
@@ -500,7 +500,7 @@ Time Qed.
500
500
501
501
Lemma mbox_rect_identity m :
502
502
Mbox_rect _ Mbox_nil (fun strt len _ rec d => Mbox_cons strt len rec d) m = m.
503
- Proof . induction m; simpl; try f_equal; eauto. Qed .
503
+ Proof . induction m; simpl; try f_equal; eauto. Qed .
504
504
505
505
Definition mbox_concat_chains_spec (m1 m2 : Mbox) : Mbox :=
506
506
if mbox_chain_length m1 =? 0 then Mbox_nil else transMbox m1 m2.
@@ -1131,7 +1131,7 @@ Proof.
1131
1131
Ltac busywork a e_assert := simpl in *;
1132
1132
repeat rewrite_transMbox_Mbox_nil_r_dep in a e_assert.
1133
1133
+ unshelve instantiate (1 := _).
1134
- { busywork a e_assert. apply a. }
1134
+ { busywork a e_assert. apply a. }
1135
1135
busywork a e_assert.
1136
1136
rewrite -> e_assert.
1137
1137
reflexivity.
0 commit comments