diff --git a/tests/gmap.v b/tests/gmap.v index 4de79e14abe28055daecfbcd1fdcc142c0f385d4..3f0415e72c7c9a1a2819066a0030c5bbda9736af 100644 --- a/tests/gmap.v +++ b/tests/gmap.v @@ -83,3 +83,28 @@ Arguments Plookup _ _ _ / : assert. Theorem gmap_lookup_concrete : lookup (M:=gmap nat bool) 2 (<[3:=false]> {[2:=true]}) = Some true. Proof. simpl. Show. reflexivity. Qed. + +Fixpoint insert_l (m:gmap Z unit) (l: list Z) : gmap Z unit := + match l with + | [] => m + | p::l => <[p:=tt]> (insert_l m l) + end. + +Fixpoint n_positives (n:nat) (p:Z) : list Z := + match n with + | 0 => [] + | S n => p :: n_positives n (1 + p)%Z + end. + +Fixpoint n_positives_rev (n:nat) (p:Z) : list Z := + match n with + | 0 => [] + | S n => p :: n_positives_rev n (p - 1)%Z + end. + +Theorem gmap_lookup_insert_fwd_rev : + insert_l ∅ (n_positives 500 1) = insert_l ∅ (n_positives_rev 500 500). +Proof. + cbn [n_positives n_positives_rev Z.add Z.pos_sub Pos.add Pos.succ]. + Time reflexivity. +Qed.