@@ -79,21 +79,17 @@ fn read u#a (#a:Type u#a) (#p:pcm a) (r:pcm_ref p) (x:erased a)
7979 returns v :( v : a { compatible p x v /\ p . refine v })
8080 ensures pcm_pts_to r ( f v )
8181{
82- let inst = pts_to_small r _ ;
83- drop_ ( small_token u# a _ );
84- fold small_token u# a inst ;
85- U. downgrade_val ( C. read #( U. raise_t a ) #( raise p ) r ( hide ( U. raise_val ( reveal x ))) ( raise_refine p x f ));
82+ with inst . assert small_token inst ;
83+ U. downgrade_val ( C. read #( U. raise_t # inst a ) r ( U. raise_val ( reveal x )) ( raise_refine p x f ));
8684}
8785
8886fn write u# a (# a :Type u# a ) (# p : pcm a ) ( r : pcm_ref p ) ( x y : erased a )
8987 ( f : frame_preserving_upd p x y )
9088 requires pcm_pts_to r x
9189 ensures pcm_pts_to r y
9290{
93- let inst = pts_to_small r _ ;
94- drop_ ( small_token u# a _ );
95- fold small_token u# a inst ;
96- C. write #( U. raise_t a ) #( raise p ) r ( hide ( U. raise_val ( reveal x ))) ( hide ( U. raise_val ( reveal y )))
91+ with inst . assert small_token inst ;
92+ C. write #( U. raise_t # inst a ) r ( U. raise_val ( reveal x )) ( U. raise_val ( reveal y ))
9793 ( raise_upd f )
9894}
9995
@@ -103,11 +99,9 @@ ghost fn share u#a (#a:Type u#a) (#pcm:pcm a) (r:pcm_ref pcm)
10399 ensures pcm_pts_to r v0
104100 ensures pcm_pts_to r v1
105101{
106- let inst = pts_to_small r _ ;
107- drop_ ( small_token u# a _ );
108- fold small_token inst ;
102+ with inst . assert small_token inst ;
109103 fold small_token inst ;
110- C. share #( U. raise_t a ) #( raise pcm ) r ( U. raise_val v0 ) ( U. raise_val v1 );
104+ C. share #( U. raise_t # inst a ) r ( U. raise_val v0 ) ( U. raise_val v1 );
111105}
112106
113107[ @@allow_ambiguous ]
@@ -117,9 +111,9 @@ ghost fn gather u#a (#a:Type u#a) (#pcm:pcm a) (r:pcm_ref pcm) (v0:a) (v1:a)
117111 returns _ : squash ( composable pcm v0 v1 )
118112 ensures pcm_pts_to r ( op pcm v0 v1 )
119113{
120- let inst = pts_to_small r v0 ;
121- with inst' . assert C. pcm_pts_to # _ #( raise # a # inst' pcm ) r ( U. raise_val # a # inst' v1 );
122- rewrite each inst' as inst ;
123- drop_ ( small_token u# a inst' ) ;
124- C. gather #( U. raise_t # inst a ) #( raise # a # inst pcm ) r ( U. raise_val # a # inst v0 ) ( U. raise_val # a # inst v1 );
114+ with inst0 . assert C. pcm_pts_to r ( U. raise_val # a # inst0 v0 ) ;
115+ with inst1 . assert C. pcm_pts_to r ( U. raise_val # a # inst1 v1 );
116+ drop_ ( small_token inst1 ) ;
117+ rewrite each inst1 as inst0 ;
118+ C. gather #( U. raise_t # inst0 a ) r ( U. raise_val v0 ) ( U. raise_val v1 );
125119}
0 commit comments