File tree Expand file tree Collapse file tree 1 file changed +5
-3
lines changed Expand file tree Collapse file tree 1 file changed +5
-3
lines changed Original file line number Diff line number Diff line change @@ -8,6 +8,7 @@ HumanEval/34
88use vstd:: calc;
99use vstd:: prelude:: * ;
1010use vstd:: seq_lib:: lemma_multiset_commutative;
11+ use vstd:: seq_lib:: lemma_seq_contains_after_push;
1112
1213verus ! {
1314
@@ -142,15 +143,16 @@ fn unique_sorted(s: Vec<i32>) -> (result: Vec<i32>)
142143 if result. len( ) == 0 || result[ result. len( ) - 1 ] != s[ i] {
143144 assert( result. len( ) == 0 || result[ result. len( ) - 1 ] < s[ i as int] ) ;
144145 result. push( s[ i] ) ;
146+ assert forall|m: int| #![ trigger s[ m] ] 0 <= m < i implies result@. contains( s[ m] ) by {
147+ assert( pre@. contains( s@[ m] ) ) ;
148+ lemma_seq_contains_after_push( pre@, s@[ i as int] , s@[ m] ) ;
149+ } ;
145150 }
146151 assert( forall|m: int|
147152 #![ trigger result@[ m] , pre@[ m] ]
148153 0 <= m < pre. len( ) ==> pre@. contains( result@[ m] ) ==> result@. contains( pre@[ m] ) ) by {
149154 assert( forall|m: int| 0 <= m < pre. len( ) ==> result@[ m] == pre@[ m] ) ;
150155 }
151- assert( forall|m: int|
152- #![ trigger s@[ m] ]
153- 0 <= m < i ==> pre@. contains( s[ m] ) && result@. contains( s[ m] ) ) ;
154156 assert( result@. contains( s[ i as int] ) ) by {
155157 assert( result[ result. len( ) - 1 ] == s[ i as int] ) ;
156158 }
You can’t perform that action at this time.
0 commit comments