@@ -120,14 +120,16 @@ fn cases_of_is_tree #t (x:tree_t t) (ft:T.tree t)
120120 T. Leaf -> {
121121 unfold ( is_tree x T. Leaf );
122122 fold ( is_tree_cases None ft );
123+ rewrite is_tree_cases None ft as is_tree_cases x ft ;
123124 }
124125 T. Node data ltree rtree -> {
125126 unfold ( is_tree x ( T. Node data ltree rtree ));
126127 with p lct rct . _ ;
127128 with n . assert p |-> n ;
128129 with l' . rewrite is_tree lct l' as is_tree n . left l' ;
129130 with r' . rewrite is_tree rct r' as is_tree n . right r' ;
130- fold ( is_tree_cases ( Some p ) ( T. Node data ltree rtree ))
131+ fold ( is_tree_cases ( Some p ) ft );
132+ rewrite ( is_tree_cases ( Some p ) ft ) as is_tree_cases x ft ;
131133 }
132134 }
133135}
@@ -240,8 +242,6 @@ fn node_cons (#t:Type0) (v:t) (ltree:tree_t t) (rtree:tree_t t) (#l:(T.tree t))
240242 ensures is_tree y ( T. Node v l r ) ** ( pure ( Some ? y ))
241243{
242244 let y = Box. alloc { data = v ; left = ltree ; right = rtree };
243- rewrite each ltree as ({ data = v ; left = ltree ; right = rtree }). left in ( is_tree ltree l );
244- rewrite each rtree as ({ data = v ; left = ltree ; right = rtree }). right in ( is_tree rtree r );
245245 intro_is_tree_node ( Some y ) y ;
246246 Some y
247247}
@@ -293,18 +293,12 @@ fn rec append_left (#t:Type0) (x:tree_t t) (v:t) (#ft:G.erased (T.tree t))
293293
294294 is_tree_case_some ( Some vl ) vl ;
295295
296- with _node _ltree _rtree . _ ;
297-
298296 let node = !vl ;
299297
300298 let left_new = append_left node . left v ;
301299
302300 vl := { node with left = left_new };
303301
304- rewrite each left_new as ({ node with left = left_new }). left in ( is_tree left_new (( T. append_left ( reveal _ltree ) v )));
305-
306- rewrite each node . right as ({ node with left = left_new }). right in ( is_tree node . right _rtree );
307-
308302 intro_is_tree_node x vl ;
309303
310304 x
@@ -344,18 +338,12 @@ fn rec append_right (#t:Type0) (x:tree_t t) (v:t) (#ft:G.erased (T.tree t))
344338 Some np -> {
345339 is_tree_case_some ( Some np ) np ;
346340
347- with _node _ltree _rtree . _ ;
348-
349341 let node = !np ;
350342
351343 let right_new = append_right node . right v ;
352344
353345 np := { node with right = right_new };
354346
355- rewrite each right_new as ({ node with right = right_new }). right in ( is_tree right_new (( T. append_right ( reveal _rtree ) v )));
356-
357- rewrite each node . left as ({ node with right = right_new }). left in ( is_tree node . left _ltree );
358-
359347 intro_is_tree_node x np ;
360348
361349 x
0 commit comments