From 312ccd8769d806197aef489e1181d2134a54dbaa Mon Sep 17 00:00:00 2001 From: arnaudgolfouse Date: Sat, 20 Jan 2024 11:21:21 +0000 Subject: [PATCH] Update test proofs --- creusot/src/backend/program.rs | 6 +- creusot/src/backend/term.rs | 4 +- creusot/tests/should_fail/bug/222.mlcfg | 4 +- creusot/tests/should_fail/bug/492.mlcfg | 10 +- creusot/tests/should_fail/bug/692.mlcfg | 2 +- creusot/tests/should_fail/bug/695.mlcfg | 2 +- creusot/tests/should_succeed/100doors.mlcfg | 6 +- .../should_succeed/100doors/why3session.xml | 2 +- .../should_succeed/100doors/why3shapes.gz | Bin 573 -> 576 bytes creusot/tests/should_succeed/all_zero.mlcfg | 12 +- .../should_succeed/all_zero/why3session.xml | 2 +- .../should_succeed/all_zero/why3shapes.gz | Bin 401 -> 438 bytes creusot/tests/should_succeed/bdd.mlcfg | 64 +- .../tests/should_succeed/bdd/why3session.xml | 253 +- .../tests/should_succeed/bdd/why3shapes.gz | Bin 14022 -> 14176 bytes .../binary_search/why3session.xml | 22 +- .../binary_search/why3shapes.gz | Bin 2320 -> 2319 bytes .../should_succeed/bug/206/why3shapes.gz | Bin 201 -> 202 bytes .../should_succeed/bug/463/why3shapes.gz | Bin 240 -> 237 bytes creusot/tests/should_succeed/bug/486.mlcfg | 2 +- .../should_succeed/bug/552/why3shapes.gz | Bin 198 -> 196 bytes creusot/tests/should_succeed/bug/682.mlcfg | 6 +- .../should_succeed/bug/682/why3session.xml | 4 +- .../should_succeed/bug/682/why3shapes.gz | Bin 286 -> 297 bytes creusot/tests/should_succeed/bug/766.mlcfg | 4 +- .../should_succeed/bug/874/why3session.xml | 2 +- .../should_succeed/bug/874/why3shapes.gz | Bin 515 -> 515 bytes creusot/tests/should_succeed/bug/922.mlcfg | 52 +- .../should_succeed/bug/922/why3session.xml | 10 +- .../should_succeed/bug/922/why3shapes.gz | Bin 328 -> 367 bytes .../bug/box_borrow_resolve.mlcfg | 12 +- .../bug/box_borrow_resolve/why3session.xml | 2 +- .../bug/box_borrow_resolve/why3shapes.gz | Bin 189 -> 222 bytes .../should_succeed/bug/eq_panic/why3shapes.gz | Bin 170 -> 171 bytes .../tests/should_succeed/bug/two_phase.mlcfg | 4 +- .../bug/two_phase/why3session.xml | 2 +- .../bug/two_phase/why3shapes.gz | Bin 283 -> 295 bytes .../should_succeed/cell/01/why3session.xml | 2 +- .../should_succeed/cell/01/why3shapes.gz | Bin 190 -> 189 bytes .../should_succeed/cell/02/why3session.xml | 11 +- .../should_succeed/cell/02/why3shapes.gz | Bin 2036 -> 2041 bytes .../checked_ops/why3session.xml | 20 +- .../should_succeed/checked_ops/why3shapes.gz | Bin 3926 -> 3924 bytes .../should_succeed/clones/03/why3session.xml | 10 +- .../should_succeed/closures/01_basic.mlcfg | 8 +- .../should_succeed/closures/05_map.mlcfg | 4 +- .../closures/06_fn_specs/why3session.xml | 4 +- .../closures/06_fn_specs/why3shapes.gz | Bin 749 -> 749 bytes .../closures/07_mutable_capture.mlcfg | 2 +- .../07_mutable_capture/why3session.xml | 4 +- .../closures/07_mutable_capture/why3shapes.gz | Bin 420 -> 430 bytes .../constrained_types/why3shapes.gz | Bin 137 -> 139 bytes creusot/tests/should_succeed/drop_pair.mlcfg | 4 +- .../should_succeed/drop_pair/why3shapes.gz | Bin 140 -> 139 bytes .../should_succeed/filter_positive.mlcfg | 2 +- .../filter_positive/why3session.xml | 4 +- .../filter_positive/why3shapes.gz | Bin 876 -> 880 bytes creusot/tests/should_succeed/hashmap.mlcfg | 46 +- .../should_succeed/hashmap/why3session.xml | 198 +- .../should_succeed/hashmap/why3shapes.gz | Bin 9900 -> 10081 bytes .../should_succeed/heapsort_generic.mlcfg | 16 +- .../heapsort_generic/why3session.xml | 186 +- .../heapsort_generic/why3shapes.gz | Bin 8053 -> 8124 bytes creusot/tests/should_succeed/hillel.mlcfg | 28 +- .../should_succeed/hillel/why3session.xml | 124 +- .../tests/should_succeed/hillel/why3shapes.gz | Bin 7170 -> 7235 bytes .../tests/should_succeed/index_range.mlcfg | 40 +- .../index_range/why3session.xml | 104 +- .../should_succeed/index_range/why3shapes.gz | Bin 4508 -> 4531 bytes .../inplace_list_reversal.mlcfg | 6 +- .../inplace_list_reversal/why3session.xml | 2 +- .../inplace_list_reversal/why3shapes.gz | Bin 399 -> 417 bytes .../should_succeed/invariant_moves.mlcfg | 4 +- .../ite_normalize/why3session.xml | 2 +- .../ite_normalize/why3shapes.gz | Bin 1394 -> 1393 bytes .../should_succeed/iterators/01_range.mlcfg | 2 +- .../iterators/01_range/why3session.xml | 6 +- .../iterators/01_range/why3shapes.gz | Bin 930 -> 934 bytes .../iterators/02_iter_mut.mlcfg | 239 +- .../iterators/02_iter_mut/why3session.xml | 47 +- .../iterators/02_iter_mut/why3shapes.gz | Bin 3015 -> 3179 bytes .../iterators/03_std_iterators.mlcfg | 40 +- .../03_std_iterators/why3session.xml | 92 +- .../iterators/03_std_iterators/why3shapes.gz | Bin 6467 -> 6543 bytes .../should_succeed/iterators/04_skip.mlcfg | 10 +- .../iterators/04_skip/why3session.xml | 2 +- .../iterators/04_skip/why3shapes.gz | Bin 1049 -> 1067 bytes .../should_succeed/iterators/05_map.mlcfg | 12 +- .../iterators/05_map/why3session.xml | 42 +- .../iterators/05_map/why3shapes.gz | Bin 6065 -> 6125 bytes .../iterators/06_map_precond.mlcfg | 728 ++--- .../iterators/06_map_precond/why3session.xml | 115 +- .../iterators/06_map_precond/why3shapes.gz | Bin 9023 -> 9074 bytes .../should_succeed/iterators/07_fuse.mlcfg | 14 +- .../iterators/07_fuse/why3session.xml | 4 +- .../iterators/07_fuse/why3shapes.gz | Bin 1435 -> 1435 bytes .../iterators/08_collect_extend.mlcfg | 14 +- .../08_collect_extend/why3session.xml | 62 +- .../iterators/08_collect_extend/why3shapes.gz | Bin 3653 -> 3714 bytes .../iterators/09_empty/why3session.xml | 2 +- .../iterators/09_empty/why3shapes.gz | Bin 486 -> 485 bytes .../should_succeed/iterators/10_once.mlcfg | 4 +- .../iterators/10_once/why3session.xml | 4 +- .../iterators/10_once/why3shapes.gz | Bin 624 -> 646 bytes .../iterators/11_repeat/why3shapes.gz | Bin 519 -> 519 bytes .../should_succeed/iterators/12_zip.mlcfg | 12 +- .../iterators/12_zip/why3session.xml | 10 +- .../iterators/12_zip/why3shapes.gz | Bin 2159 -> 2176 bytes .../should_succeed/iterators/13_cloned.mlcfg | 8 +- .../iterators/13_cloned/why3session.xml | 2 +- .../iterators/13_cloned/why3shapes.gz | Bin 794 -> 817 bytes .../should_succeed/iterators/14_copied.mlcfg | 8 +- .../iterators/14_copied/why3session.xml | 2 +- .../iterators/14_copied/why3shapes.gz | Bin 797 -> 819 bytes .../iterators/15_enumerate.mlcfg | 10 +- .../iterators/15_enumerate/why3session.xml | 22 +- .../iterators/15_enumerate/why3shapes.gz | Bin 1821 -> 1859 bytes .../should_succeed/iterators/16_take.mlcfg | 10 +- .../iterators/16_take/why3session.xml | 2 +- .../iterators/16_take/why3shapes.gz | Bin 906 -> 941 bytes creusot/tests/should_succeed/knapsack.mlcfg | 6 +- .../should_succeed/knapsack/why3session.xml | 98 +- .../should_succeed/knapsack/why3shapes.gz | Bin 5089 -> 5098 bytes .../tests/should_succeed/knapsack_full.mlcfg | 14 +- .../knapsack_full/why3session.xml | 223 +- .../knapsack_full/why3shapes.gz | Bin 8295 -> 8596 bytes .../should_succeed/lang/branch_borrow_2.mlcfg | 32 +- .../tests/should_succeed/lang/move_path.mlcfg | 2 +- .../tests/should_succeed/lang/while_let.mlcfg | 2 +- .../lang/while_let/why3shapes.gz | Bin 143 -> 150 bytes .../tests/should_succeed/list_index_mut.mlcfg | 28 +- .../list_index_mut/why3session.xml | 6 +- .../list_index_mut/why3shapes.gz | Bin 718 -> 729 bytes .../should_succeed/list_reversal_lasso.mlcfg | 62 +- .../list_reversal_lasso/why3session.xml | 220 +- .../list_reversal_lasso/why3shapes.gz | Bin 12486 -> 12890 bytes creusot/tests/should_succeed/loop.mlcfg | 2 +- .../tests/should_succeed/mapping_test.mlcfg | 6 +- .../mapping_test/why3session.xml | 4 +- .../should_succeed/mapping_test/why3shapes.gz | Bin 411 -> 429 bytes .../should_succeed/mutex/why3session.xml | 4 +- .../tests/should_succeed/mutex/why3shapes.gz | Bin 570 -> 571 bytes .../should_succeed/one_side_update.mlcfg | 2 +- creusot/tests/should_succeed/option.mlcfg | 4 +- .../should_succeed/option/why3session.xml | 2 +- .../tests/should_succeed/option/why3shapes.gz | Bin 429 -> 428 bytes .../should_succeed/ord_trait/why3session.xml | 2 +- .../should_succeed/ord_trait/why3shapes.gz | Bin 652 -> 654 bytes .../should_succeed/projection_toggle.mlcfg | 30 +- .../projection_toggle/why3session.xml | 4 +- .../projection_toggle/why3shapes.gz | Bin 581 -> 650 bytes .../tests/should_succeed/projections.mlcfg | 6 +- creusot/tests/should_succeed/prophecy.mlcfg | 2 +- .../tests/should_succeed/red_black_tree.mlcfg | 354 +-- .../red_black_tree/why3session.xml | 2624 ++++++++--------- .../red_black_tree/why3shapes.gz | Bin 77630 -> 78217 bytes .../tests/should_succeed/resolve_uninit.mlcfg | 18 +- .../resolve_uninit/why3session.xml | 2 +- .../resolve_uninit/why3shapes.gz | Bin 408 -> 451 bytes creusot/tests/should_succeed/result/own.mlcfg | 16 +- .../tests/should_succeed/result/result.mlcfg | 8 +- .../should_succeed/rusthorn/inc_max.mlcfg | 30 +- .../rusthorn/inc_max/why3session.xml | 4 +- .../rusthorn/inc_max/why3shapes.gz | Bin 451 -> 516 bytes .../should_succeed/rusthorn/inc_max_3.mlcfg | 40 +- .../rusthorn/inc_max_3/why3session.xml | 4 +- .../rusthorn/inc_max_3/why3shapes.gz | Bin 771 -> 794 bytes .../rusthorn/inc_max_many.mlcfg | 30 +- .../rusthorn/inc_max_many/why3session.xml | 4 +- .../rusthorn/inc_max_many/why3shapes.gz | Bin 590 -> 640 bytes .../rusthorn/inc_max_repeat.mlcfg | 34 +- .../rusthorn/inc_max_repeat/why3session.xml | 4 +- .../rusthorn/inc_max_repeat/why3shapes.gz | Bin 717 -> 770 bytes .../rusthorn/inc_some_2_list.mlcfg | 24 +- .../rusthorn/inc_some_2_list/why3session.xml | 4 +- .../rusthorn/inc_some_2_list/why3shapes.gz | Bin 955 -> 1009 bytes .../rusthorn/inc_some_2_tree.mlcfg | 40 +- .../rusthorn/inc_some_2_tree/why3session.xml | 4 +- .../rusthorn/inc_some_2_tree/why3shapes.gz | Bin 1095 -> 1128 bytes .../rusthorn/inc_some_list.mlcfg | 40 +- .../rusthorn/inc_some_list/why3session.xml | 4 +- .../rusthorn/inc_some_list/why3shapes.gz | Bin 887 -> 901 bytes .../rusthorn/inc_some_tree.mlcfg | 54 +- .../rusthorn/inc_some_tree/why3session.xml | 4 +- .../rusthorn/inc_some_tree/why3shapes.gz | Bin 968 -> 986 bytes .../selection_sort_generic.mlcfg | 14 +- .../selection_sort_generic/why3session.xml | 80 +- .../selection_sort_generic/why3shapes.gz | Bin 3987 -> 4032 bytes creusot/tests/should_succeed/slices/01.mlcfg | 2 +- .../should_succeed/slices/01/why3session.xml | 4 +- .../should_succeed/slices/01/why3shapes.gz | Bin 641 -> 644 bytes .../slices/02_std/why3session.xml | 4 +- .../slices/02_std/why3shapes.gz | Bin 869 -> 869 bytes .../tests/should_succeed/sparse_array.mlcfg | 20 +- .../sparse_array/why3session.xml | 92 +- .../should_succeed/sparse_array/why3shapes.gz | Bin 3887 -> 3967 bytes .../tests/should_succeed/split_borrow.mlcfg | 10 +- creusot/tests/should_succeed/sum.mlcfg | 4 +- .../tests/should_succeed/sum/why3session.xml | 22 +- .../tests/should_succeed/sum/why3shapes.gz | Bin 1860 -> 1875 bytes .../tests/should_succeed/sum_of_odds.mlcfg | 4 +- .../sum_of_odds/why3session.xml | 23 +- .../should_succeed/sum_of_odds/why3shapes.gz | Bin 1692 -> 1707 bytes .../tests/should_succeed/swap_borrows.mlcfg | 6 +- .../swap_borrows/why3session.xml | 2 +- .../should_succeed/swap_borrows/why3shapes.gz | Bin 322 -> 340 bytes .../syntax/02_operators/why3session.xml | 12 +- .../why3session.xml | 5 +- .../syntax/09_maintains/why3session.xml | 2 +- .../syntax/09_maintains/why3shapes.gz | Bin 296 -> 296 bytes .../syntax/12_ghost_code/why3session.xml | 2 +- .../syntax/12_ghost_code/why3shapes.gz | Bin 347 -> 346 bytes .../syntax/derive_macros/why3session.xml | 20 +- .../syntax/derive_macros/why3shapes.gz | Bin 1154 -> 1156 bytes .../tests/should_succeed/take_first_mut.mlcfg | 20 +- .../take_first_mut/why3session.xml | 2 +- .../take_first_mut/why3shapes.gz | Bin 533 -> 543 bytes .../should_succeed/traits/02/why3shapes.gz | Bin 146 -> 146 bytes .../traits/12_default_method/why3shapes.gz | Bin 182 -> 182 bytes .../traits/13_assoc_types/why3shapes.gz | Bin 190 -> 188 bytes .../traits/16_impl_cloning/why3shapes.gz | Bin 150 -> 148 bytes .../traits/18_trait_laws/why3session.xml | 2 +- .../type_invariants/borrows.mlcfg | 84 +- .../type_invariants/generated/why3shapes.gz | Bin 213 -> 217 bytes .../type_invariants/vec_inv/why3shapes.gz | Bin 354 -> 355 bytes creusot/tests/should_succeed/unnest.mlcfg | 6 +- .../should_succeed/unnest/why3session.xml | 2 +- .../tests/should_succeed/unnest/why3shapes.gz | Bin 191 -> 213 bytes .../should_succeed/vecdeque/why3session.xml | 18 +- .../should_succeed/vecdeque/why3shapes.gz | Bin 2258 -> 2259 bytes creusot/tests/should_succeed/vector/01.mlcfg | 8 +- .../should_succeed/vector/01/why3session.xml | 2 +- .../should_succeed/vector/01/why3shapes.gz | Bin 643 -> 646 bytes .../should_succeed/vector/02_gnome.mlcfg | 6 +- .../vector/02_gnome/why3session.xml | 58 +- .../vector/02_gnome/why3shapes.gz | Bin 2306 -> 2354 bytes .../vector/03_knuth_shuffle.mlcfg | 10 +- .../vector/03_knuth_shuffle/why3session.xml | 2 +- .../vector/03_knuth_shuffle/why3shapes.gz | Bin 641 -> 651 bytes .../vector/04_binary_search/why3shapes.gz | Bin 459 -> 461 bytes .../05_binary_search_generic/why3session.xml | 14 +- .../05_binary_search_generic/why3shapes.gz | Bin 2489 -> 2492 bytes .../vector/06_knights_tour.mlcfg | 28 +- .../vector/06_knights_tour/why3session.xml | 110 +- .../vector/06_knights_tour/why3shapes.gz | Bin 11170 -> 11263 bytes .../should_succeed/vector/07_read_write.mlcfg | 6 +- .../vector/07_read_write/why3session.xml | 2 +- .../vector/07_read_write/why3shapes.gz | Bin 464 -> 477 bytes .../should_succeed/vector/08_haystack.mlcfg | 8 +- .../vector/08_haystack/why3session.xml | 56 +- .../vector/08_haystack/why3shapes.gz | Bin 2838 -> 2878 bytes .../should_succeed/vector/09_capacity.mlcfg | 14 +- .../vector/09_capacity/why3session.xml | 4 +- .../vector/09_capacity/why3shapes.gz | Bin 427 -> 455 bytes prelude/prelude.mlw | 3 +- 255 files changed, 3866 insertions(+), 3879 deletions(-) diff --git a/creusot/src/backend/program.rs b/creusot/src/backend/program.rs index 03bb7000f5..745d54e8b4 100644 --- a/creusot/src/backend/program.rs +++ b/creusot/src/backend/program.rs @@ -697,7 +697,7 @@ impl<'tcx> Statement<'tcx> { place::create_assign_inner(ctx, names, locals, &rhs, reassign, span), ] } - Statement::Assignment(lhs, RValue::FinalBorrow(rhs, deref_index)) => { + Statement::Assignment(lhs, RValue::FinalBorrow(rhs, deref_index), span) => { let original_borrow = Place { local: rhs.local.clone(), projection: rhs.projection[..deref_index].to_vec(), @@ -712,8 +712,8 @@ impl<'tcx> Statement<'tcx> { let reassign = Exp::Final(Box::new(lhs.as_rplace(ctx, names, locals))); vec![ - place::create_assign_inner(ctx, names, locals, &lhs, borrow), - place::create_assign_inner(ctx, names, locals, &rhs, reassign), + place::create_assign_inner(ctx, names, locals, &lhs, borrow, span), + place::create_assign_inner(ctx, names, locals, &rhs, reassign, span), ] } Statement::Assignment(lhs, RValue::Ghost(rhs), span) => { diff --git a/creusot/src/backend/term.rs b/creusot/src/backend/term.rs index 4df80aa594..db5eba5c1f 100644 --- a/creusot/src/backend/term.rs +++ b/creusot/src/backend/term.rs @@ -257,11 +257,11 @@ impl<'tcx, N: Namer<'tcx>> Lower<'_, 'tcx, N> { } TermKind::Absurd => Exp::Absurd, TermKind::Reborrow { cur, fin, term, projection } => { - let inner = self.lower_term(*term); + let inner = self.lower_term(&*term); let borrow_id = borrow_generated_id(inner, &projection); Exp::Call( Box::new(Exp::QVar("Borrow.borrow_logic".into(), Purity::Logic)), - vec![self.lower_term(*cur), self.lower_term(*fin), borrow_id], + vec![self.lower_term(&*cur), self.lower_term(&*fin), borrow_id], ) } TermKind::Assert { cond } => { diff --git a/creusot/tests/should_fail/bug/222.mlcfg b/creusot/tests/should_fail/bug/222.mlcfg index 2dc39996b4..43d59858c2 100644 --- a/creusot/tests/should_fail/bug/222.mlcfg +++ b/creusot/tests/should_fail/bug/222.mlcfg @@ -93,8 +93,8 @@ module C222_UsesInvariant goto BB0 } BB0 { - [#"../222.rs" 41 4 41 14] _5 <- Borrow.borrow_mut (C222_Once_Type.once_0 ( * x)); - [#"../222.rs" 41 4 41 14] x <- { x with current = (let C222_Once_Type.C_Once x0 = * x in C222_Once_Type.C_Once ( ^ _5)) }; + [#"../222.rs" 41 4 41 14] _5 <- Borrow.borrow_final (C222_Once_Type.once_0 ( * x)) (Borrow.inherit_id (Borrow.get_id x) 1); + [#"../222.rs" 41 4 41 14] x <- { x with current = (let C222_Once_Type.C_Once x0 = * x in C222_Once_Type.C_Once ( ^ _5)) ; }; assume { inv0 ( ^ _5) }; [#"../222.rs" 41 4 41 14] _4 <- ([#"../222.rs" 41 4 41 14] take0 _5); _5 <- any borrowed (Core_Option_Option_Type.t_option t); diff --git a/creusot/tests/should_fail/bug/492.mlcfg b/creusot/tests/should_fail/bug/492.mlcfg index 95c11eecc6..4a4831c7a3 100644 --- a/creusot/tests/should_fail/bug/492.mlcfg +++ b/creusot/tests/should_fail/bug/492.mlcfg @@ -49,8 +49,8 @@ module C492_ReborrowTuple goto BB0 } BB0 { - [#"../492.rs" 6 5 6 6] _3 <- Borrow.borrow_mut ( * x); - [#"../492.rs" 6 5 6 6] x <- { x with current = ^ _3 }; + [#"../492.rs" 6 5 6 6] _3 <- Borrow.borrow_final ( * x) (Borrow.get_id x); + [#"../492.rs" 6 5 6 6] x <- { x with current = ( ^ _3) ; }; assume { inv0 ( ^ _3) }; [#"../492.rs" 6 4 6 11] _0 <- ([#"../492.rs" 6 4 6 11] (_3, ([#"../492.rs" 6 8 6 10] [#"../492.rs" 6 8 6 10] (32 : uint32)))); _3 <- any borrowed t; @@ -122,8 +122,8 @@ module C492_Test [#"../492.rs" 11 16 11 17] x <- ([#"../492.rs" 11 16 11 17] [#"../492.rs" 11 16 11 17] (5 : int32)); [#"../492.rs" 12 34 12 40] _6 <- Borrow.borrow_mut x; [#"../492.rs" 12 34 12 40] x <- ^ _6; - [#"../492.rs" 12 34 12 40] _5 <- Borrow.borrow_mut ( * _6); - [#"../492.rs" 12 34 12 40] _6 <- { _6 with current = ^ _5 }; + [#"../492.rs" 12 34 12 40] _5 <- Borrow.borrow_final ( * _6) (Borrow.get_id _6); + [#"../492.rs" 12 34 12 40] _6 <- { _6 with current = ( ^ _5) ; }; [#"../492.rs" 12 19 12 41] _4 <- ([#"../492.rs" 12 19 12 41] reborrow_tuple0 _5); _5 <- any borrowed int32; goto BB1 @@ -134,7 +134,7 @@ module C492_Test assume { resolve0 _4 }; assume { resolve1 _6 }; assert { [@expl:assertion] [#"../492.rs" 13 18 13 30] ^ res = (5 : int32) }; - [#"../492.rs" 14 4 14 13] res <- { res with current = ([#"../492.rs" 14 4 14 13] [#"../492.rs" 14 11 14 13] (10 : int32)) }; + [#"../492.rs" 14 4 14 13] res <- { res with current = ([#"../492.rs" 14 4 14 13] [#"../492.rs" 14 11 14 13] (10 : int32)) ; }; assume { resolve1 res }; [#"../492.rs" 10 14 15 1] _0 <- ([#"../492.rs" 10 14 15 1] ()); return _0 diff --git a/creusot/tests/should_fail/bug/692.mlcfg b/creusot/tests/should_fail/bug/692.mlcfg index 4d8b6e6006..a00ef582b2 100644 --- a/creusot/tests/should_fail/bug/692.mlcfg +++ b/creusot/tests/should_fail/bug/692.mlcfg @@ -227,7 +227,7 @@ module C692_ValidNormal_Closure2 goto BB3 } BB3 { - [#"../692.rs" 16 14 16 39] _1 <- { _1 with current = (let C692_ValidNormal_Closure2.C692_ValidNormal_Closure2 x0 = * _1 in C692_ValidNormal_Closure2.C692_ValidNormal_Closure2 ({ (field_00 ( * _1)) with current = ([#"../692.rs" 16 14 16 39] _4) })) }; + [#"../692.rs" 16 14 16 39] _1 <- { _1 with current = (let C692_ValidNormal_Closure2.C692_ValidNormal_Closure2 x0 = * _1 in C692_ValidNormal_Closure2.C692_ValidNormal_Closure2 ({ (field_00 ( * _1)) with current = ([#"../692.rs" 16 14 16 39] _4) ; })) ; }; [#"../692.rs" 16 14 16 39] _4 <- any uint32; assume { resolve0 _1 }; [#"../692.rs" 16 14 16 39] res <- ([#"../692.rs" 16 14 16 39] ()); diff --git a/creusot/tests/should_fail/bug/695.mlcfg b/creusot/tests/should_fail/bug/695.mlcfg index 3b177cc717..39a41ef411 100644 --- a/creusot/tests/should_fail/bug/695.mlcfg +++ b/creusot/tests/should_fail/bug/695.mlcfg @@ -285,7 +285,7 @@ module C695_Valid_Closure2 goto BB3 } BB3 { - [#"../695.rs" 20 14 20 39] _1 <- { _1 with current = (let C695_Valid_Closure2.C695_Valid_Closure2 x0 = * _1 in C695_Valid_Closure2.C695_Valid_Closure2 ({ (field_00 ( * _1)) with current = ([#"../695.rs" 20 14 20 39] _4) })) }; + [#"../695.rs" 20 14 20 39] _1 <- { _1 with current = (let C695_Valid_Closure2.C695_Valid_Closure2 x0 = * _1 in C695_Valid_Closure2.C695_Valid_Closure2 ({ (field_00 ( * _1)) with current = ([#"../695.rs" 20 14 20 39] _4) ; })) ; }; [#"../695.rs" 20 14 20 39] _4 <- any uint32; assume { resolve0 _1 }; [#"../695.rs" 20 14 20 39] res <- ([#"../695.rs" 20 14 20 39] ()); diff --git a/creusot/tests/should_succeed/100doors.mlcfg b/creusot/tests/should_succeed/100doors.mlcfg index 57e2379cf2..67c3f800bb 100644 --- a/creusot/tests/should_succeed/100doors.mlcfg +++ b/creusot/tests/should_succeed/100doors.mlcfg @@ -405,8 +405,8 @@ module C100doors_F BB7 { [#"../100doors.rs" 20 4 20 41] _14 <- Borrow.borrow_mut iter; [#"../100doors.rs" 20 4 20 41] iter <- ^ _14; - [#"../100doors.rs" 20 4 20 41] _13 <- Borrow.borrow_mut ( * _14); - [#"../100doors.rs" 20 4 20 41] _14 <- { _14 with current = ^ _13 }; + [#"../100doors.rs" 20 4 20 41] _13 <- Borrow.borrow_final ( * _14) (Borrow.get_id _14); + [#"../100doors.rs" 20 4 20 41] _14 <- { _14 with current = ( ^ _13) ; }; [#"../100doors.rs" 20 4 20 41] _12 <- ([#"../100doors.rs" 20 4 20 41] next0 _13); _13 <- any borrowed (Core_Ops_Range_Range_Type.t_range usize); goto BB8 @@ -469,7 +469,7 @@ module C100doors_F goto BB19 } BB19 { - [#"../100doors.rs" 26 12 26 54] _30 <- { _30 with current = ([#"../100doors.rs" 26 12 26 54] not ([#"../100doors.rs" 26 35 26 54] _26)) }; + [#"../100doors.rs" 26 12 26 54] _30 <- { _30 with current = ([#"../100doors.rs" 26 12 26 54] not ([#"../100doors.rs" 26 35 26 54] _26)) ; }; assume { resolve1 _30 }; [#"../100doors.rs" 27 12 27 24] door <- ([#"../100doors.rs" 27 12 27 24] door + ([#"../100doors.rs" 27 20 27 24] pass)); [#"../100doors.rs" 25 26 28 9] _11 <- ([#"../100doors.rs" 25 26 28 9] ()); diff --git a/creusot/tests/should_succeed/100doors/why3session.xml b/creusot/tests/should_succeed/100doors/why3session.xml index 91f6bd0653..127e238e33 100644 --- a/creusot/tests/should_succeed/100doors/why3session.xml +++ b/creusot/tests/should_succeed/100doors/why3session.xml @@ -7,7 +7,7 @@ - + diff --git a/creusot/tests/should_succeed/100doors/why3shapes.gz b/creusot/tests/should_succeed/100doors/why3shapes.gz index bc806cf6eb11b52cf523dd1a0e936f5cb115ed53..a497540a3443cc1f172516fb9152c7fde97834fa 100644 GIT binary patch literal 576 zcmV-G0>AwqiwFP!00000|CLlrZ<|06zWY~jOB<^avoD}(4k!{@UwW$MSZfSRgNh*q z+iCxO2k<7wk5s*&Z|CvtH?uQ*xDWa#dUkzqa9v-u&F8=b_a7I#UsN>*01PvaLj;c# z6duMXJ&aI!Xi$5o(RipZ@=#)&E$GVw)vo!mdm35ip z2^S%&!7MQGlmg*RECP$A=dLaGx$9ZFpyd)lB4`9NriLDHm7u*zy_%#qiPb5Q@)W1! zBeR;{7?ImP@BT3GM6cB|=JFqR^tk@oHm;&ueNZNckQ?wy%h`?VQ0OC25~WBdPAP8k zXgTq4!>7igPG~vU{8_2No5P!bMGyQ%9cPSa&qkx}MpsPB)3b_ZCzTC))|+-1J9=sRk0)g{@HdOd4b_b*Sbb4;c#;-stB6VIPX(WiOybC^BNg?H?v9HmZO6{ul+eU=0~jFXkeGMRcEGn&<-;<+rr zNkjCp8WpG0-$9vKHP_P4s^O6TtY#SYGgBC@{<&&zE5g(I?uw`=yE$hlq6<2GPPf3v zplrLKTr46g^Ab$HA(zr0T>I~g0dhj2n%2#w26&vWR2BUS!vm7 O!^L0qx_*t)1poj?!yYOC literal 573 zcmV-D0>b?tiwFP!00000|CLn9j+;Obz56S;O=4>#dSi()2V@B~mz<(H4l0{=jDo=d zY$t!80^DO`V@J85*R{NURb9oWxzlWMZyM)l>L#zsFOKKTKhN4O_-fms{^ zw=e)dB3DPUfo>RLcmGG$Hj!z8SUC)Y&MQe2bw z%yN9Ak7l=T{}8Z5AJr44@|P_x({EL2a(vVW>8+Vd4fvp??9$Z0)fq?uf=2_V;179} z7dMYyva)}KzVVWL8GSPWoar>&_Ck;(hGDbfguFg;>%m`FO```$}?64#T@yIP`Qmz0c#Ra5+` zpVNuA45ZzHO1r6sLjJRwZp?2?uABUG$u7%5bNX~Sq#r+=GvNLmotmVZ!P41OwX>Pc zT&A*(mj%N2vtUCn5pvoDZe$pQE3pn8=4qxhlbQ+5xMoZ - + diff --git a/creusot/tests/should_succeed/all_zero/why3shapes.gz b/creusot/tests/should_succeed/all_zero/why3shapes.gz index 26de960140c4b2f3a043f12951ae236e0a3c436a..ab3f738a773103c9a1c00deae97de46391714d79 100644 GIT binary patch literal 438 zcmV;n0ZINJiwFP!00000|CN$WZ=5g?hVT3eZfW=Au`wT2a#$gu?zz$&gJ!|opc1HH z6{P<9j?H>wA|kaH%OCT;&&czBImGh|{Wf#_W~R9thi`EjAHGIqS<(~rW)SpD-7uI5 zVLcxF@pLah$Zv1FJM#5Ua}9I|1(o%W@zpfqM345kbvn}HQzQ7kI^D(Wgi>sDd<-Z~ zA_Yq(Gmrh7kq8;gozZ!mrg1Ut!|N{#Na@lI)FTM$T3#zxmLh1^2V=Bd z0tEM%xS}NVYQ)V*TOYmJs12>G%W;?yz;bU0gprhI4r97E+T)lLYd-16mq2&D`|s8Fh{EM%+#RaM9T zXwq|0?lqZgX~`!|CSj8jrQXVPz*q%qDka`RPJ>x^Uqx8PmvM@z@9RHi8lxyvZ2?Nq gIn9bJCvi?Cs3I361Zkn#7`}_>FF@k6k2VAV0QDKuYXATM literal 401 zcmV;C0dD>uiwFP!00000|CN$WPlPZKhVT3eZYrmK@?mxl8xkUClQ~KX6y3;zfz6Wm z>urHzYcSCZ=}hN+-eEfTfj_>94>|fbIgIDNd-Ov;c<|CR6-Uv^4v80W?m9UDUc$hH z`BnfpUhmZDq|&eQYUuzcA}yZ#i>y#C4mxy6CviAdNaeG96DtxBGnH{>^3Y7mB%Xx`lGQm8mAWjjzM7%&4pRX+L@Sa0AkKfw zfvrHc0QK0m%4srh7XUJkh`wJA)MT+cd%V?~(c>(?T2rRR`_EfL4U+Ec3?Z&R+20vL z?46-Ns4KHQ76Hw&(?6OtzCiYxWUd?grAcNtNq}%y#x0LUujKHNz7|jClx~_rb)<}lEy?L!o$YLPssZMz>05ovJV diff --git a/creusot/tests/should_succeed/bdd.mlcfg b/creusot/tests/should_succeed/bdd.mlcfg index 97164f123f..929c33c06f 100644 --- a/creusot/tests/should_succeed/bdd.mlcfg +++ b/creusot/tests/should_succeed/bdd.mlcfg @@ -2105,8 +2105,8 @@ module Bdd_Impl11_Hashcons BB5 { [#"../bdd.rs" 445 16 445 50] r1 <- ([#"../bdd.rs" 445 16 445 50] Bdd_Bdd_Type.C_Bdd ([#"../bdd.rs" 445 20 445 39] * _19) ([#"../bdd.rs" 445 41 445 49] Bdd_Context_Type.context_cnt ( * self))); assume { resolve1 _19 }; - [#"../bdd.rs" 446 8 446 31] _24 <- Borrow.borrow_mut (Bdd_Context_Type.context_hashcons ( * self)); - [#"../bdd.rs" 446 8 446 31] self <- { self with current = (let Bdd_Context_Type.C_Context x0 x1 x2 x3 x4 x5 = * self in Bdd_Context_Type.C_Context x0 ( ^ _24) x2 x3 x4 x5) }; + [#"../bdd.rs" 446 8 446 31] _24 <- Borrow.borrow_final (Bdd_Context_Type.context_hashcons ( * self)) (Borrow.inherit_id (Borrow.get_id self) 2); + [#"../bdd.rs" 446 8 446 31] self <- { self with current = (let Bdd_Context_Type.C_Context x0 x1 x2 x3 x4 x5 = * self in Bdd_Context_Type.C_Context x0 ( ^ _24) x2 x3 x4 x5) ; }; [#"../bdd.rs" 446 8 446 31] _23 <- ([#"../bdd.rs" 446 8 446 31] add0 _24 ([#"../bdd.rs" 446 26 446 27] n) ([#"../bdd.rs" 446 29 446 30] r1)); _24 <- any borrowed (Bdd_Hashmap_MyHashMap_Type.t_myhashmap (Bdd_Node_Type.t_node) (Bdd_Bdd_Type.t_bdd)); goto BB6 @@ -2116,7 +2116,7 @@ module Bdd_Impl11_Hashcons goto BB7 } BB7 { - [#"../bdd.rs" 447 8 447 71] self <- { self with current = (let Bdd_Context_Type.C_Context x0 x1 x2 x3 x4 x5 = * self in Bdd_Context_Type.C_Context x0 x1 ([#"../bdd.rs" 447 8 447 71] _27) x3 x4 x5) }; + [#"../bdd.rs" 447 8 447 71] self <- { self with current = (let Bdd_Context_Type.C_Context x0 x1 x2 x3 x4 x5 = * self in Bdd_Context_Type.C_Context x0 x1 ([#"../bdd.rs" 447 8 447 71] _27) x3 x4 x5) ; }; [#"../bdd.rs" 447 8 447 71] _27 <- any Ghost.ghost_ty (Map.map uint64 (Bdd_Node_Type.t_node)); switch ([#"../bdd.rs" 448 11 448 34] ([#"../bdd.rs" 448 11 448 19] Bdd_Context_Type.context_cnt ( * self)) > ([#"../bdd.rs" 448 22 448 34] ([#"../bdd.rs" 448 22 448 30] [#"../bdd.rs" 448 22 448 30] (18446744073709551615 : uint64)) - ([#"../bdd.rs" 448 33 448 34] [#"../bdd.rs" 448 33 448 34] (1 : uint64)))) | False -> goto BB11 @@ -2130,11 +2130,11 @@ module Bdd_Impl11_Hashcons goto BB10 } BB10 { - [#"../bdd.rs" 451 16 451 35] self <- { self with current = (let Bdd_Context_Type.C_Context x0 x1 x2 x3 x4 x5 = * self in Bdd_Context_Type.C_Context x0 x1 x2 x3 x4 ([#"../bdd.rs" 451 27 451 35] Bdd_Context_Type.context_cnt ( * self))) }; + [#"../bdd.rs" 451 16 451 35] self <- { self with current = (let Bdd_Context_Type.C_Context x0 x1 x2 x3 x4 x5 = * self in Bdd_Context_Type.C_Context x0 x1 x2 x3 x4 ([#"../bdd.rs" 451 27 451 35] Bdd_Context_Type.context_cnt ( * self))) ; }; goto BB9 } BB11 { - [#"../bdd.rs" 454 8 454 21] self <- { self with current = (let Bdd_Context_Type.C_Context x0 x1 x2 x3 x4 x5 = * self in Bdd_Context_Type.C_Context x0 x1 x2 x3 x4 ([#"../bdd.rs" 454 8 454 21] Bdd_Context_Type.context_cnt ( * self) + ([#"../bdd.rs" 454 20 454 21] [#"../bdd.rs" 454 20 454 21] (1 : uint64)))) }; + [#"../bdd.rs" 454 8 454 21] self <- { self with current = (let Bdd_Context_Type.C_Context x0 x1 x2 x3 x4 x5 = * self in Bdd_Context_Type.C_Context x0 x1 x2 x3 x4 ([#"../bdd.rs" 454 8 454 21] Bdd_Context_Type.context_cnt ( * self) + ([#"../bdd.rs" 454 20 454 21] [#"../bdd.rs" 454 20 454 21] (1 : uint64)))) ; }; assert { [@expl:type invariant] inv0 self }; assume { resolve0 self }; [#"../bdd.rs" 455 8 455 9] _0 <- ([#"../bdd.rs" 455 8 455 9] r1); @@ -2352,8 +2352,8 @@ module Bdd_Impl11_Node goto BB5 } BB3 { - [#"../bdd.rs" 469 8 469 50] _17 <- Borrow.borrow_mut ( * self); - [#"../bdd.rs" 469 8 469 50] self <- { self with current = ^ _17 }; + [#"../bdd.rs" 469 8 469 50] _17 <- Borrow.borrow_final ( * self) (Borrow.get_id self); + [#"../bdd.rs" 469 8 469 50] self <- { self with current = ( ^ _17) ; }; assume { inv0 ( ^ _17) }; [#"../bdd.rs" 469 8 469 50] _0 <- ([#"../bdd.rs" 469 8 469 50] hashcons0 _17 ([#"../bdd.rs" 469 22 469 49] Bdd_Node_Type.C_If ([#"../bdd.rs" 469 30 469 31] x) ([#"../bdd.rs" 469 33 469 39] childt) ([#"../bdd.rs" 469 41 469 47] childf))); _17 <- any borrowed (Bdd_Context_Type.t_context); @@ -2531,8 +2531,8 @@ module Bdd_Impl11_True goto BB0 } BB0 { - [#"../bdd.rs" 477 8 477 27] _6 <- Borrow.borrow_mut ( * self); - [#"../bdd.rs" 477 8 477 27] self <- { self with current = ^ _6 }; + [#"../bdd.rs" 477 8 477 27] _6 <- Borrow.borrow_final ( * self) (Borrow.get_id self); + [#"../bdd.rs" 477 8 477 27] self <- { self with current = ( ^ _6) ; }; assume { inv0 ( ^ _6) }; [#"../bdd.rs" 477 8 477 27] _0 <- ([#"../bdd.rs" 477 8 477 27] hashcons0 _6 ([#"../bdd.rs" 477 22 477 26] Bdd_Node_Type.C_True)); _6 <- any borrowed (Bdd_Context_Type.t_context); @@ -2707,8 +2707,8 @@ module Bdd_Impl11_False goto BB0 } BB0 { - [#"../bdd.rs" 485 8 485 28] _6 <- Borrow.borrow_mut ( * self); - [#"../bdd.rs" 485 8 485 28] self <- { self with current = ^ _6 }; + [#"../bdd.rs" 485 8 485 28] _6 <- Borrow.borrow_final ( * self) (Borrow.get_id self); + [#"../bdd.rs" 485 8 485 28] self <- { self with current = ( ^ _6) ; }; assume { inv0 ( ^ _6) }; [#"../bdd.rs" 485 8 485 28] _0 <- ([#"../bdd.rs" 485 8 485 28] hashcons0 _6 ([#"../bdd.rs" 485 22 485 27] Bdd_Node_Type.C_False)); _6 <- any borrowed (Bdd_Context_Type.t_context); @@ -2909,7 +2909,7 @@ module Bdd_Impl11_V } BB0 { [#"../bdd.rs" 492 16 492 28] _7 <- Borrow.borrow_mut ( * self); - [#"../bdd.rs" 492 16 492 28] self <- { self with current = ^ _7 }; + [#"../bdd.rs" 492 16 492 28] self <- { self with current = ( ^ _7) ; }; assume { inv0 ( ^ _7) }; [#"../bdd.rs" 492 16 492 28] t <- ([#"../bdd.rs" 492 16 492 28] true0 _7); _7 <- any borrowed (Bdd_Context_Type.t_context); @@ -2917,15 +2917,15 @@ module Bdd_Impl11_V } BB1 { [#"../bdd.rs" 493 16 493 29] _9 <- Borrow.borrow_mut ( * self); - [#"../bdd.rs" 493 16 493 29] self <- { self with current = ^ _9 }; + [#"../bdd.rs" 493 16 493 29] self <- { self with current = ( ^ _9) ; }; assume { inv0 ( ^ _9) }; [#"../bdd.rs" 493 16 493 29] f <- ([#"../bdd.rs" 493 16 493 29] false0 _9); _9 <- any borrowed (Bdd_Context_Type.t_context); goto BB2 } BB2 { - [#"../bdd.rs" 494 8 494 26] _10 <- Borrow.borrow_mut ( * self); - [#"../bdd.rs" 494 8 494 26] self <- { self with current = ^ _10 }; + [#"../bdd.rs" 494 8 494 26] _10 <- Borrow.borrow_final ( * self) (Borrow.get_id self); + [#"../bdd.rs" 494 8 494 26] self <- { self with current = ( ^ _10) ; }; assume { inv0 ( ^ _10) }; [#"../bdd.rs" 494 8 494 26] _0 <- ([#"../bdd.rs" 494 8 494 26] node0 _10 ([#"../bdd.rs" 494 18 494 19] x) ([#"../bdd.rs" 494 21 494 22] t) ([#"../bdd.rs" 494 24 494 25] f)); _10 <- any borrowed (Bdd_Context_Type.t_context); @@ -3274,7 +3274,7 @@ module Bdd_Impl11_Not [#"../bdd.rs" 510 20 510 26] childt <- ([#"../bdd.rs" 510 20 510 26] Bdd_Node_Type.if_childt (Bdd_Bdd_Type.bdd_0 x)); [#"../bdd.rs" 510 28 510 34] childf <- ([#"../bdd.rs" 510 28 510 34] Bdd_Node_Type.if_childf (Bdd_Bdd_Type.bdd_0 x)); [#"../bdd.rs" 511 29 511 45] _25 <- Borrow.borrow_mut ( * self); - [#"../bdd.rs" 511 29 511 45] self <- { self with current = ^ _25 }; + [#"../bdd.rs" 511 29 511 45] self <- { self with current = ( ^ _25) ; }; assume { inv1 ( ^ _25) }; [#"../bdd.rs" 511 29 511 45] childt1 <- ([#"../bdd.rs" 511 29 511 45] not' _25 ([#"../bdd.rs" 511 38 511 44] childt)); _25 <- any borrowed (Bdd_Context_Type.t_context); @@ -3282,7 +3282,7 @@ module Bdd_Impl11_Not } BB9 { [#"../bdd.rs" 508 20 508 33] _19 <- Borrow.borrow_mut ( * self); - [#"../bdd.rs" 508 20 508 33] self <- { self with current = ^ _19 }; + [#"../bdd.rs" 508 20 508 33] self <- { self with current = ( ^ _19) ; }; assume { inv1 ( ^ _19) }; [#"../bdd.rs" 508 20 508 33] r1 <- ([#"../bdd.rs" 508 20 508 33] false0 _19); _19 <- any borrowed (Bdd_Context_Type.t_context); @@ -3293,7 +3293,7 @@ module Bdd_Impl11_Not } BB11 { [#"../bdd.rs" 509 21 509 33] _20 <- Borrow.borrow_mut ( * self); - [#"../bdd.rs" 509 21 509 33] self <- { self with current = ^ _20 }; + [#"../bdd.rs" 509 21 509 33] self <- { self with current = ( ^ _20) ; }; assume { inv1 ( ^ _20) }; [#"../bdd.rs" 509 21 509 33] r1 <- ([#"../bdd.rs" 509 21 509 33] true0 _20); _20 <- any borrowed (Bdd_Context_Type.t_context); @@ -3304,7 +3304,7 @@ module Bdd_Impl11_Not } BB13 { [#"../bdd.rs" 512 29 512 45] _28 <- Borrow.borrow_mut ( * self); - [#"../bdd.rs" 512 29 512 45] self <- { self with current = ^ _28 }; + [#"../bdd.rs" 512 29 512 45] self <- { self with current = ( ^ _28) ; }; assume { inv1 ( ^ _28) }; [#"../bdd.rs" 512 29 512 45] childf1 <- ([#"../bdd.rs" 512 29 512 45] not' _28 ([#"../bdd.rs" 512 38 512 44] childf)); _28 <- any borrowed (Bdd_Context_Type.t_context); @@ -3312,7 +3312,7 @@ module Bdd_Impl11_Not } BB14 { [#"../bdd.rs" 513 16 513 44] _30 <- Borrow.borrow_mut ( * self); - [#"../bdd.rs" 513 16 513 44] self <- { self with current = ^ _30 }; + [#"../bdd.rs" 513 16 513 44] self <- { self with current = ( ^ _30) ; }; assume { inv1 ( ^ _30) }; [#"../bdd.rs" 513 16 513 44] r1 <- ([#"../bdd.rs" 513 16 513 44] node0 _30 ([#"../bdd.rs" 513 26 513 27] v) ([#"../bdd.rs" 513 29 513 35] childt1) ([#"../bdd.rs" 513 37 513 43] childf1)); _30 <- any borrowed (Bdd_Context_Type.t_context); @@ -3322,8 +3322,8 @@ module Bdd_Impl11_Not goto BB16 } BB16 { - [#"../bdd.rs" 516 8 516 31] _35 <- Borrow.borrow_mut (Bdd_Context_Type.context_not_memo ( * self)); - [#"../bdd.rs" 516 8 516 31] self <- { self with current = (let Bdd_Context_Type.C_Context x0 x1 x2 x3 x4 x5 = * self in Bdd_Context_Type.C_Context x0 x1 x2 ( ^ _35) x4 x5) }; + [#"../bdd.rs" 516 8 516 31] _35 <- Borrow.borrow_final (Bdd_Context_Type.context_not_memo ( * self)) (Borrow.inherit_id (Borrow.get_id self) 4); + [#"../bdd.rs" 516 8 516 31] self <- { self with current = (let Bdd_Context_Type.C_Context x0 x1 x2 x3 x4 x5 = * self in Bdd_Context_Type.C_Context x0 x1 x2 ( ^ _35) x4 x5) ; }; [#"../bdd.rs" 516 8 516 31] _34 <- ([#"../bdd.rs" 516 8 516 31] add0 _35 ([#"../bdd.rs" 516 26 516 27] x) ([#"../bdd.rs" 516 29 516 30] r1)); _35 <- any borrowed (Bdd_Hashmap_MyHashMap_Type.t_myhashmap (Bdd_Bdd_Type.t_bdd) (Bdd_Bdd_Type.t_bdd)); goto BB17 @@ -3835,7 +3835,7 @@ module Bdd_Impl11_And BB17 { assume { resolve2 _23 }; [#"../bdd.rs" 534 39 534 52] _31 <- Borrow.borrow_mut ( * self); - [#"../bdd.rs" 534 39 534 52] self <- { self with current = ^ _31 }; + [#"../bdd.rs" 534 39 534 52] self <- { self with current = ( ^ _31) ; }; assume { inv1 ( ^ _31) }; [#"../bdd.rs" 534 39 534 52] r1 <- ([#"../bdd.rs" 534 39 534 52] false0 _31); _31 <- any borrowed (Bdd_Context_Type.t_context); @@ -3857,7 +3857,7 @@ module Bdd_Impl11_And BB21 { [#"../bdd.rs" 552 24 552 30] v <- ([#"../bdd.rs" 552 28 552 30] va); [#"../bdd.rs" 553 33 553 59] _67 <- Borrow.borrow_mut ( * self); - [#"../bdd.rs" 553 33 553 59] self <- { self with current = ^ _67 }; + [#"../bdd.rs" 553 33 553 59] self <- { self with current = ( ^ _67) ; }; assume { inv1 ( ^ _67) }; [#"../bdd.rs" 553 33 553 59] _66 <- ([#"../bdd.rs" 553 33 553 59] and _67 ([#"../bdd.rs" 553 42 553 49] childta) ([#"../bdd.rs" 553 51 553 58] childtb)); _67 <- any borrowed (Bdd_Context_Type.t_context); @@ -3869,7 +3869,7 @@ module Bdd_Impl11_And BB23 { [#"../bdd.rs" 542 24 542 30] v <- ([#"../bdd.rs" 542 28 542 30] vb); [#"../bdd.rs" 543 33 543 53] _49 <- Borrow.borrow_mut ( * self); - [#"../bdd.rs" 543 33 543 53] self <- { self with current = ^ _49 }; + [#"../bdd.rs" 543 33 543 53] self <- { self with current = ( ^ _49) ; }; assume { inv1 ( ^ _49) }; [#"../bdd.rs" 543 33 543 53] _48 <- ([#"../bdd.rs" 543 33 543 53] and _49 ([#"../bdd.rs" 543 42 543 43] a) ([#"../bdd.rs" 543 45 543 52] childtb)); _49 <- any borrowed (Bdd_Context_Type.t_context); @@ -3879,7 +3879,7 @@ module Bdd_Impl11_And [#"../bdd.rs" 543 24 543 53] childt <- ([#"../bdd.rs" 543 24 543 53] _48); [#"../bdd.rs" 543 24 543 53] _48 <- any Bdd_Bdd_Type.t_bdd; [#"../bdd.rs" 544 33 544 53] _53 <- Borrow.borrow_mut ( * self); - [#"../bdd.rs" 544 33 544 53] self <- { self with current = ^ _53 }; + [#"../bdd.rs" 544 33 544 53] self <- { self with current = ( ^ _53) ; }; assume { inv1 ( ^ _53) }; [#"../bdd.rs" 544 33 544 53] _52 <- ([#"../bdd.rs" 544 33 544 53] and _53 ([#"../bdd.rs" 544 42 544 43] a) ([#"../bdd.rs" 544 45 544 52] childfb)); _53 <- any borrowed (Bdd_Context_Type.t_context); @@ -3894,7 +3894,7 @@ module Bdd_Impl11_And BB26 { [#"../bdd.rs" 547 24 547 30] v <- ([#"../bdd.rs" 547 28 547 30] va); [#"../bdd.rs" 548 33 548 53] _58 <- Borrow.borrow_mut ( * self); - [#"../bdd.rs" 548 33 548 53] self <- { self with current = ^ _58 }; + [#"../bdd.rs" 548 33 548 53] self <- { self with current = ( ^ _58) ; }; assume { inv1 ( ^ _58) }; [#"../bdd.rs" 548 33 548 53] _57 <- ([#"../bdd.rs" 548 33 548 53] and _58 ([#"../bdd.rs" 548 42 548 49] childta) ([#"../bdd.rs" 548 51 548 52] b)); _58 <- any borrowed (Bdd_Context_Type.t_context); @@ -3904,7 +3904,7 @@ module Bdd_Impl11_And [#"../bdd.rs" 548 24 548 53] childt <- ([#"../bdd.rs" 548 24 548 53] _57); [#"../bdd.rs" 548 24 548 53] _57 <- any Bdd_Bdd_Type.t_bdd; [#"../bdd.rs" 549 33 549 53] _62 <- Borrow.borrow_mut ( * self); - [#"../bdd.rs" 549 33 549 53] self <- { self with current = ^ _62 }; + [#"../bdd.rs" 549 33 549 53] self <- { self with current = ( ^ _62) ; }; assume { inv1 ( ^ _62) }; [#"../bdd.rs" 549 33 549 53] _61 <- ([#"../bdd.rs" 549 33 549 53] and _62 ([#"../bdd.rs" 549 42 549 49] childfa) ([#"../bdd.rs" 549 51 549 52] b)); _62 <- any borrowed (Bdd_Context_Type.t_context); @@ -3920,7 +3920,7 @@ module Bdd_Impl11_And [#"../bdd.rs" 553 24 553 59] childt <- ([#"../bdd.rs" 553 24 553 59] _66); [#"../bdd.rs" 553 24 553 59] _66 <- any Bdd_Bdd_Type.t_bdd; [#"../bdd.rs" 554 33 554 59] _71 <- Borrow.borrow_mut ( * self); - [#"../bdd.rs" 554 33 554 59] self <- { self with current = ^ _71 }; + [#"../bdd.rs" 554 33 554 59] self <- { self with current = ( ^ _71) ; }; assume { inv1 ( ^ _71) }; [#"../bdd.rs" 554 33 554 59] _70 <- ([#"../bdd.rs" 554 33 554 59] and _71 ([#"../bdd.rs" 554 42 554 49] childfa) ([#"../bdd.rs" 554 51 554 58] childfb)); _71 <- any borrowed (Bdd_Context_Type.t_context); @@ -3934,7 +3934,7 @@ module Bdd_Impl11_And } BB31 { [#"../bdd.rs" 557 16 557 44] _74 <- Borrow.borrow_mut ( * self); - [#"../bdd.rs" 557 16 557 44] self <- { self with current = ^ _74 }; + [#"../bdd.rs" 557 16 557 44] self <- { self with current = ( ^ _74) ; }; assume { inv1 ( ^ _74) }; [#"../bdd.rs" 557 16 557 44] r1 <- ([#"../bdd.rs" 557 16 557 44] node0 _74 ([#"../bdd.rs" 557 26 557 27] v) ([#"../bdd.rs" 557 29 557 35] childt) ([#"../bdd.rs" 557 37 557 43] childf)); _74 <- any borrowed (Bdd_Context_Type.t_context); @@ -3944,8 +3944,8 @@ module Bdd_Impl11_And goto BB33 } BB33 { - [#"../bdd.rs" 560 8 560 36] _79 <- Borrow.borrow_mut (Bdd_Context_Type.context_and_memo ( * self)); - [#"../bdd.rs" 560 8 560 36] self <- { self with current = (let Bdd_Context_Type.C_Context x0 x1 x2 x3 x4 x5 = * self in Bdd_Context_Type.C_Context x0 x1 x2 x3 ( ^ _79) x5) }; + [#"../bdd.rs" 560 8 560 36] _79 <- Borrow.borrow_final (Bdd_Context_Type.context_and_memo ( * self)) (Borrow.inherit_id (Borrow.get_id self) 5); + [#"../bdd.rs" 560 8 560 36] self <- { self with current = (let Bdd_Context_Type.C_Context x0 x1 x2 x3 x4 x5 = * self in Bdd_Context_Type.C_Context x0 x1 x2 x3 ( ^ _79) x5) ; }; [#"../bdd.rs" 560 8 560 36] _78 <- ([#"../bdd.rs" 560 8 560 36] add0 _79 ([#"../bdd.rs" 560 26 560 32] (([#"../bdd.rs" 560 27 560 28] a), ([#"../bdd.rs" 560 30 560 31] b))) ([#"../bdd.rs" 560 34 560 35] r1)); _79 <- any borrowed (Bdd_Hashmap_MyHashMap_Type.t_myhashmap (Bdd_Bdd_Type.t_bdd, Bdd_Bdd_Type.t_bdd) (Bdd_Bdd_Type.t_bdd)); goto BB34 diff --git a/creusot/tests/should_succeed/bdd/why3session.xml b/creusot/tests/should_succeed/bdd/why3session.xml index d90136f6ee..9a85a6b051 100644 --- a/creusot/tests/should_succeed/bdd/why3session.xml +++ b/creusot/tests/should_succeed/bdd/why3session.xml @@ -3,7 +3,6 @@ "http://why3.lri.fr/why3session.dtd"> - @@ -20,7 +19,7 @@ - + @@ -35,7 +34,7 @@ - + @@ -55,7 +54,7 @@ - + @@ -70,7 +69,7 @@ - + @@ -85,13 +84,13 @@ - + - + @@ -103,7 +102,7 @@ - + @@ -118,7 +117,7 @@ - + @@ -145,10 +144,10 @@ - + - + @@ -159,34 +158,34 @@ - + - + - + - + - + - + - + - + - + @@ -195,7 +194,7 @@ - + @@ -220,7 +219,7 @@ - + @@ -233,22 +232,22 @@ - + - + - + - + - + @@ -263,52 +262,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -319,7 +318,7 @@ - + @@ -328,18 +327,18 @@ - + - + - + - + @@ -348,45 +347,45 @@ - + - + - + - + - + - + - + - + - + - + @@ -398,36 +397,36 @@ - + - + - + - + - + - + - + - + - + @@ -436,38 +435,38 @@ - + - + - + - + - + - + - + - + - + - + @@ -482,76 +481,76 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -565,7 +564,7 @@ - + @@ -576,16 +575,16 @@ - + - + - + @@ -596,13 +595,13 @@ - + - + - + @@ -617,13 +616,13 @@ - + - + - + @@ -634,16 +633,16 @@ - + - + - + - + @@ -654,14 +653,14 @@ - + - + @@ -676,13 +675,13 @@ - + - + - + @@ -695,12 +694,12 @@ - + - + @@ -711,26 +710,26 @@ - + - + - + - + - + - + @@ -739,10 +738,10 @@ - + - + @@ -771,7 +770,7 @@ - + diff --git a/creusot/tests/should_succeed/bdd/why3shapes.gz b/creusot/tests/should_succeed/bdd/why3shapes.gz index 7a1d3eb2bf4f6dff0f9d661f52d99fd565b0fc1b..15d901792a873fb6db0aa2b7111f56aa1ed90c4e 100644 GIT binary patch literal 14176 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 literal 14022 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 diff --git a/creusot/tests/should_succeed/binary_search/why3session.xml b/creusot/tests/should_succeed/binary_search/why3session.xml index 13f3beb600..7084417892 100644 --- a/creusot/tests/should_succeed/binary_search/why3session.xml +++ b/creusot/tests/should_succeed/binary_search/why3session.xml @@ -12,7 +12,7 @@ - + @@ -39,7 +39,7 @@ - + @@ -51,10 +51,10 @@ - + - + @@ -72,25 +72,25 @@ - + - + - + - + - + - + - + diff --git a/creusot/tests/should_succeed/binary_search/why3shapes.gz b/creusot/tests/should_succeed/binary_search/why3shapes.gz index f42c7a6580b92ad032a3774389b4847c1c70270d..211dfdf7b9e0c82e77127cd5ab05083c902e4ff4 100644 GIT binary patch literal 2319 zcmV+q3GntGiwFP!00000|Fu|IZyPxhe%G(i+wM*<0IPT}oB)Dhq5a}{*g?MFC$J^H7UTekVM;a+kN4`}^a!+7%jlyxHB=u-#m?>~bJ@==ZMM z9oVkw%XQix)_3v#_HO@i=R2i5D{YsU$=W5NY)@` z28-Tc(HksYI8TuyXt904L+-=e0yfaoxmX`)w&@o|Fgj0wxFtnwTV6o>A`@(TxO_|3 zX_HBmD6M{=9=f=G34>b?*kW!R*L5OPV$ywVeXSc7U)Q9&8(=E?hHw zGEy^n)(d6SYt1pL0z74wvs_?5~KzTj)p}PgifmXW*k~lSIH+{%5i^lwp zV|hm<;5NkMzTQ0)CB6Ktb3zvH;^$Yg<_5K7y`EWBi=|aL!lNI`+0Xc7w;E~+9c<~- zi>1<69&@#HE1X6Jrl!HE>YwEo*uL#tIsLB30xVCFH1{@~J8Ul1v%c5vdh*YEk0mkk zPe~M%JGXUr6t~|GUt_m%)9#d4tFU|A<*94k{IUKs9`<>+Wgp8Z(VVKo6|LjPcv$ag za7%alZ>xDmesXu|Db^=yba&{5kcHgOyYMQe0h5_w0gam{9C-0Op!!kH-3lmOdWzY? zQc4@<{Y>pYf0-^@Xw5*GUoZ3dWW!A30E_4<@sh|>*l7+Gwpg@&M|zB zue-S5)ux^A0IoLU@IKy%PO^yXy4u_<$9mYjt=z)A-okSQcRH_+4BO2sBMmQy8q_=h zt?YNFT9-4=6uh-9J~edp-L#{9{yjI+x194CRr%uHG6!zjpT$VsZ`5KcSG*uM-^73G z@%P(*Ys~lF8r6V?Zn;1Xs&mLeRiiAYLs_Hfk%MA_926(WL4JZ9#5Y3+^$a?wpMwta zVTB{dtFeRTMeLxNJ@F!YHG15AUv(GBX>tGFSN>9?zwD0>lNtPkyryzLp}(HS({5Lj z@{+Y(ydMkdd;;v1zqUwnIDh$2k)gi$W^X(D@4iedhYw3~2( znLHpa`UL@b-Y?8azd)E7U+M}%{>0G!E|Yyh-cn&($B@-vhaO?4J;E+eXHN1Q^fJ$1 z6J+G`6klHNr@dkL8UuQye`T0aoC)*P)ne}GMPC>-!U+&3u+VL8O`qA9sanb>(Ie}TCE!GoD?dAXp>SYC@*|uDjFudg&5aZLB&?m zyI_gR8-q;(hsHP~g?0=$h~U?@GL^1WB`ZFuXB}d1JHrJ|>}qN*dNeRDxFmD*=^Y z6(>ce;=1DMwJOM)$UHXDatFybjZ20#N+#rqDw--PK;2%(V zE3~46=t`&`ph$$Egf?WpR90ID4Z~=J5rT9(;ff+#3G;UqIRVbZ*;*G*o9IrF6p}CCzCKiE}CqT`K)3bt-YoHRY*hjfsw1BN|H= z1}Xuba;4N9$t#I(5sp5oBtmMqiQaL7wj)PUVUq?!Xmo#;x60?nqv2GjsHl4HW1|_1 z6cJDP!jcUc0E*<(5lkg@C8?gvN{TnCOHmr&iW-@fiRvVIi3g-8C8oWg&}4P8Qle74 zQdp@U6eDEL2vo808FU;QCZkbO0hMhQv|cMyDN?O|ylQTkL!^esgtc5!B7`Q9dzEvV zi=eV)B-Z49LdWNg^1d;}fKqQYRGR%fGZ>iC9z#;bOX_s8 zL9Pq}M9*-oWu?gmUTHj+)Gh`|gM}gZH(F7KDJqFbZ>h8E#4*r6+}&dYI0 pxW@V9NN>;$*}|36)Z!fwKAbOdiZ={oIfgwc>i=}HS|p?&003IOfMfsw literal 2320 zcmV+r3GenFiwFP!00000|Fu|4ZyPxhzUx=$w!0Gyz$(5MP5{BM(7t#MJLs#yW|N7q zj+K=hCo{i(i|iM>B|pZK_+ar-FIIh3MfN{`Ssy>SFX6a;42R=xfB)~bTL1E|)x-bX z?*5V0Y`bzF-q+~a^`)a<_s&BtHfc?GcI7T_FZcJyZ?(%bG`-o~)v(=McIdST9AJ%u_{`PMFap!xbJSpvln8>;z)VLk3;@K)UaHW|CbD)X)7#@;I5BuBQ{X?y;-60(JcaMQ6JG0VYGYqcjOu%Wd9SNZZyzZ<4+zbQK zF_)~nIgAUSH|}DZl!k-MdUOqn^t^XpiA0HiWJ2YBE$7ygV@c_4v;TVE9#1y2AX$T$ z87u~a#bB^_;XGN6puzS954jI>3)o0c=VC*k*=87I!RR~z;+7P#ZC-$GArWi`xO|J( zaT8w<_pKB8g!9?3U<=>dnd{kh^Ax)oQBrWLlG_y4$=*2G+m>T$YMBqH>lE2x|GY3c zX2b5j4c|xjvkCq%!5>fH&wKb|N)1X>_ijWR%#Mt+r0D`u+Y&Ig2ZZhMV7nmo;hN!- zk(y$z7x-Lm77jDLLrm{5la$y28D_!(X&es1XQrnTG&3fw8k;7 zQ3<$hLv&y79TpHl@G%_Ld%C#A zyZyJ-JR?83yZ99A6E(U&^g_r&?&n?mDy9*WiD3banan4?LU7hhaI$LpiIlle7-5j7dSgd{;V%EDn_e0o>)!J8Eobh(hLooUDk~{M|>!? zCNU>Qbfps$PifJwCvJWrx`_r~#kMR4SOx-LD$=;D($t`i;qd6X2K9Wk#@E&s^?^z_|ySNrsP?n>Wr&hMzoXZPlN;HLXoT&ahRT9k6d3v$y-{I>yr zzx}ty^zN-ujcDkH3*?|Wha6Nj%6vMMHHrZ_C<^4DI6)5b6XYPi89JzE&_VqibdZlD zoH$;M9W*au2hD88v+UL6arb@IKP1cI{(Y$Yxki84A0LW4_z8JU<-VZ5F5_vptD?Ll zZ5QvSf;zte4$5C!BsrWv{ouYWDS@ICTHfV$fx$F9?%d7}7)zq!h#S8EIE=f+;45 zi+({sp7#rL(k~EZ#^<_%kUlYVzsqD_katwr)iGo>*s(|0vPanE>C8!7gFZ#ly5l(8KJmQ$hi_)HqwAy+sahBQkASk#aC@a(Kx1zVvUL*xYMl%l4~35(C9VD3Pc6G z0+J6Eu$7EPwyu>rG(K1nSc4cnv))+OM$xPduM82ZiA4k(P@|CzL}^6Ju{9=Qiw&2t z^`ymCper!>f5GUD_sm#nG{`8dYP{0CF+xZYLd)93i0nMC1{awOt!5$$BYYD<@zz@^ z(LticUMY$Sd4*UZoDpKBr^7nrF=`u(vXO*oW5^QlE!xR|=jBM@8Y3ktx!$_s*qB93XllUv?h9pR#K!HKthXToeKGPwXjw=NhQ+?LDv8sg|xxi*0;84 zf>N*+x)SOKC~`tY9j$Z9m>{*IWTqr_yyceS3_2^al`wx-5jUU-iP30O4X3J#EvGEC zMzxv>i%Ia7P)YU!bSWm4vMjWo^JuBw@K$ibuaKN9;IU7oAEi!GPOun*qteq*u>u29 z8qd9IC}=vXlf07n7U7yZ5eNW|2GKZ;LOE<=(+GMcNDjkU-YVZCh|ol1Ku`%2rZKMd zs-=|llrSCA6v?L}m`dtOQazWI6mL`~6?fif+cu0;apjl|o?=5SheFojP031$O7Tiz zrG8M18f=|skuc|x#h@fm38QohhPsb1uvVs0q+0!W)zm>O$DkYAMo-<(TS0x5dY}rF zYUq<{Dxu2$ECV>TO51YQG9ciznlR~u@r{?(QCHO2fLw1iRGR%XGkg>YvW}`W!8k-C zphYIAZnhG&T5DNpvVm6`&#=eXBqwInXas2*DI|zCP^FSAy2MUy)V9)e?a-B0=jDI| qy3G*gc;llKP4Hk+gQT*`xOYCw$=)!KOt9{>RF@{FMJXi8RFo;Y17jxoxyciz6?2f?<({}%xO E0OCGeZ~y=R literal 201 zcmV;)05<<0iwFP!00000|80!94#F@HM0Dj=A@V{dLgF5iVPIw@C{w*)Ss#b}X0CEzJKb|l9hy?etC%46iw7XbhO Dzeig{ diff --git a/creusot/tests/should_succeed/bug/463/why3shapes.gz b/creusot/tests/should_succeed/bug/463/why3shapes.gz index f9f00510148c261eb904845e9fc4b1e2d89c2106..f574dcfb8bd4270839b78c7df0f3c5126840b7e1 100644 GIT binary patch literal 237 zcmVKF>ulYRDc*m!U^yTI_hUteYdio-G!4$f2N=D-MK7wT}UW_!NSy33iAvbJA zTrx+=kCn-?=&)vCbH#D$`mjtxd^@&yK4btuLrhJ5n5mUYbiXd9u6~5L%nlCKm=!I~ zE{4a;0oHHSwH!0BmD}zAzp;EPbv~>)xJ`R<%1(rooW=ZVBSK7AxFKgTglKSYt!SAiEyp&O@U1b*)&wXDU95r#Lbas!)! zVXNYjJxYA6PL`JrZC-4yI8I$3mdVApVT7A%&n9aM?0R6DnA>MugtJ z*shw@!26%~nM20ogJvK3=9kz{{e$sVb*H3C*zqrm3*Az%n08(Vp0;H8t2Z5g_Q0OUB);QS(md{B zdUN?#ERJFZyy~wy&Z|zFENXikxjAq)0bLG!E{9wWmp>bLCBMt|{C - + - + diff --git a/creusot/tests/should_succeed/bug/682/why3shapes.gz b/creusot/tests/should_succeed/bug/682/why3shapes.gz index cd3df716c2b9d5f3ec1d1a16d6209e08993afcf7..292c1a9c4386fe74906ebacabaa50d96ed19bdd5 100644 GIT binary patch literal 297 zcmV+^0oMK>iwFP!00000|BX<|PQx%1yyq)?D};-;Gzp@WBBZF1IQvNS5a$63)*qWKQ&D^DAdWTP($N|U6diO|{B)v~y4SVZ$OSuRyyeb;QRMBSFz=)II z9*`>0z)A_|{5bj}>c#M(I2h|-8~UtPv@nzl!PpgX~ zK-)u14e&*KUMK3A7(Wuwx}E%hH0hd11{C#4ER8gTkk#K7V47oGlI{6%KGPm+wG=(WrQ&uLz=p5|!4 vWWZ&?3zm0;ZD=AGEv4yXZ={yGgxmnKjzVVy%a#QavEj)#giq(zUIG9B1+9;I literal 286 zcmV+(0pb21iwFP!00000|BaBrZo?oDMDP9zZfV^M7>whpiDXr>VyS12jn=RzR%57e z;`H>M9>h zH^!qLzNpUXM7`Tzg` diff --git a/creusot/tests/should_succeed/bug/766.mlcfg b/creusot/tests/should_succeed/bug/766.mlcfg index 4b38cb6a8a..66c3c32bf6 100644 --- a/creusot/tests/should_succeed/bug/766.mlcfg +++ b/creusot/tests/should_succeed/bug/766.mlcfg @@ -59,8 +59,8 @@ module C766_Trait_Goo goto BB0 } BB0 { - [#"../766.rs" 11 8 11 16] _2 <- Borrow.borrow_mut ( * self); - [#"../766.rs" 11 8 11 16] self <- { self with current = ^ _2 }; + [#"../766.rs" 11 8 11 16] _2 <- Borrow.borrow_final ( * self) (Borrow.get_id self); + [#"../766.rs" 11 8 11 16] self <- { self with current = ( ^ _2) ; }; assume { inv0 ( ^ _2) }; [#"../766.rs" 11 8 11 16] _0 <- ([#"../766.rs" 11 8 11 16] f0 _2); _2 <- any borrowed self; diff --git a/creusot/tests/should_succeed/bug/874/why3session.xml b/creusot/tests/should_succeed/bug/874/why3session.xml index f205703b71..1ce4f18d2e 100644 --- a/creusot/tests/should_succeed/bug/874/why3session.xml +++ b/creusot/tests/should_succeed/bug/874/why3session.xml @@ -7,7 +7,7 @@ - + diff --git a/creusot/tests/should_succeed/bug/874/why3shapes.gz b/creusot/tests/should_succeed/bug/874/why3shapes.gz index e8d97f2127a0f688e19a20b194d493dc8abb9882..0856ad9c87c4dd798aa0cd497b6a13c3fa7be660 100644 GIT binary patch delta 499 zcmV8l;$o9%~l*M5&hy!#fpKlgi5MNU;D0pH+D!A=$98o6jS`*ulf9^ip^&_pUHfN z!(BC<3h&xsFS;5aw7p#2KPBdRQO!)aN|%tSYze8#myjs%Tz`KQy0Pu6d($YZX}Z71 zOIOsRZvZQS4izJG-f3?XV*2oXa=2n-3K#6Wc~Z>(8s(Z3WSXvsB95L6^B?`%bK1oTdk ztkkBvTpR0bos36Ri92()KVG}RA?CBo$#QeR=0xx7bid!1^XpD7^5a%*de1f)mqAB{ z)fi)*7gTr}=&E!=(Np=dF32CO3-WMXkS*(i?8&+y3v8Yk0TQeWAqdumP-56f3{nN+ zlbCo!Ol*kpPh$KTF&+}*8#^Er+5sVNhe-X5PhB4y-5%|SvuzzkCz_og6FHnx#<*eH p7-Ox@Gm+BYxzI5X2_PYnxy)oLh2)Y+DiM`Q^dHD*rValD003kY@Cg6_ delta 499 zcmVb zb!Ud~X8PgMHm{)wcRvFAM_-zoP*D-+u5YW4(hQLT{qmxSVu~N!HJ|@fvH48rGnvnD zxT~g9;axlIMOOoaHrLMnQ(~?c#mt1OcnO(GmXNA+35f#7^?zrkYty{hca5^@y8U~+ zww0-I7HHcZFOAh#{TbzB^)_c53m7bIF(yll3H130rhu(SWDgQ96@DL0cejV>&4J;R zEc4kBu|e>;do#54&A97>&hV=UFJ>8pZ%AMsUn7{tihR;XkV2+EP=a9JoRCSVODSD@ z{bsB-wH+M5w|@|VK156AL!_iW1SRpIsD$EP-dMBNqJJww(2{GIAgD;3-`R?!2zVkXLbsKNB{|uOl2ZtDI}LnQi-UHg8%+a2;=_*007}7_8b5J diff --git a/creusot/tests/should_succeed/bug/922.mlcfg b/creusot/tests/should_succeed/bug/922.mlcfg index 916bff1a1e..827e4a150f 100644 --- a/creusot/tests/should_succeed/bug/922.mlcfg +++ b/creusot/tests/should_succeed/bug/922.mlcfg @@ -35,12 +35,12 @@ module C922_G goto BB0 } BB0 { - [#"../922.rs" 6 4 6 17] _4 <- Borrow.borrow_mut ( * (let (_, a) = let (a, _) = x in a in a)); - [#"../922.rs" 6 4 6 17] x <- (let (x0, x1) = x in ((let (x0, x1) = let (a, _) = x in a in (x0, { (let (_, a) = let (a, _) = x in a in a) with current = ^ _4 })), x1)); - [#"../922.rs" 6 4 6 17] _2 <- Borrow.borrow_mut ( * _4); - [#"../922.rs" 6 4 6 17] _4 <- { _4 with current = ^ _2 }; - [#"../922.rs" 6 4 6 17] _0 <- Borrow.borrow_mut ( * _2); - [#"../922.rs" 6 4 6 17] _2 <- { _2 with current = ^ _0 }; + [#"../922.rs" 6 4 6 17] _4 <- Borrow.borrow_final ( * (let (_, a) = let (a, _) = x in a in a)) (Borrow.get_id (let (_, a) = let (a, _) = x in a in a)); + [#"../922.rs" 6 4 6 17] x <- (let (x0, x1) = x in ((let (x0, x1) = let (a, _) = x in a in (x0, { (let (_, a) = let (a, _) = x in a in a) with current = ( ^ _4) ; })), x1)); + [#"../922.rs" 6 4 6 17] _2 <- Borrow.borrow_final ( * _4) (Borrow.get_id _4); + [#"../922.rs" 6 4 6 17] _4 <- { _4 with current = ( ^ _2) ; }; + [#"../922.rs" 6 4 6 17] _0 <- Borrow.borrow_final ( * _2) (Borrow.get_id _2); + [#"../922.rs" 6 4 6 17] _2 <- { _2 with current = ( ^ _0) ; }; assume { resolve0 _4 }; assume { resolve0 _2 }; assume { resolve1 x }; @@ -77,11 +77,11 @@ module C922_F1 } BB0 { [#"../922.rs" 13 4 13 13] _6 <- Borrow.borrow_mut ( * (let (_, a) = * b in a)); - [#"../922.rs" 13 4 13 13] b <- { b with current = (let (x0, x1) = * b in (x0, { (let (_, a) = * b in a) with current = ^ _6 })) }; - [#"../922.rs" 13 4 13 13] _2 <- Borrow.borrow_mut ( * _6); - [#"../922.rs" 13 4 13 13] _6 <- { _6 with current = ^ _2 }; - [#"../922.rs" 13 4 13 13] _0 <- Borrow.borrow_mut ( * _2); - [#"../922.rs" 13 4 13 13] _2 <- { _2 with current = ^ _0 }; + [#"../922.rs" 13 4 13 13] b <- { b with current = (let (x0, x1) = * b in (x0, { (let (_, a) = * b in a) with current = ( ^ _6) ; })) ; }; + [#"../922.rs" 13 4 13 13] _2 <- Borrow.borrow_final ( * _6) (Borrow.get_id _6); + [#"../922.rs" 13 4 13 13] _6 <- { _6 with current = ( ^ _2) ; }; + [#"../922.rs" 13 4 13 13] _0 <- Borrow.borrow_final ( * _2) (Borrow.get_id _2); + [#"../922.rs" 13 4 13 13] _2 <- { _2 with current = ( ^ _0) ; }; assume { resolve0 _6 }; assume { resolve0 _2 }; assume { resolve1 b }; @@ -118,11 +118,11 @@ module C922_F2 } BB0 { [#"../922.rs" 20 4 20 14] _6 <- Borrow.borrow_mut ( * (let (_, a) = * x0 in a)); - [#"../922.rs" 20 4 20 14] x0 <- { x0 with current = (let (x1, x2) = * x0 in (x1, { (let (_, a) = * x0 in a) with current = ^ _6 })) }; - [#"../922.rs" 20 4 20 14] _2 <- Borrow.borrow_mut ( * _6); - [#"../922.rs" 20 4 20 14] _6 <- { _6 with current = ^ _2 }; - [#"../922.rs" 20 4 20 14] _0 <- Borrow.borrow_mut ( * _2); - [#"../922.rs" 20 4 20 14] _2 <- { _2 with current = ^ _0 }; + [#"../922.rs" 20 4 20 14] x0 <- { x0 with current = (let (x1, x2) = * x0 in (x1, { (let (_, a) = * x0 in a) with current = ( ^ _6) ; })) ; }; + [#"../922.rs" 20 4 20 14] _2 <- Borrow.borrow_final ( * _6) (Borrow.get_id _6); + [#"../922.rs" 20 4 20 14] _6 <- { _6 with current = ( ^ _2) ; }; + [#"../922.rs" 20 4 20 14] _0 <- Borrow.borrow_final ( * _2) (Borrow.get_id _2); + [#"../922.rs" 20 4 20 14] _2 <- { _2 with current = ( ^ _0) ; }; assume { resolve0 _6 }; assume { resolve0 _2 }; assume { resolve1 x0 }; @@ -159,11 +159,11 @@ module C922_F3 } BB0 { [#"../922.rs" 27 4 27 14] _6 <- Borrow.borrow_mut ( * (let (_, a) = * x1 in a)); - [#"../922.rs" 27 4 27 14] x1 <- { x1 with current = (let (x0, x2) = * x1 in (x0, { (let (_, a) = * x1 in a) with current = ^ _6 })) }; - [#"../922.rs" 27 4 27 14] _2 <- Borrow.borrow_mut ( * _6); - [#"../922.rs" 27 4 27 14] _6 <- { _6 with current = ^ _2 }; - [#"../922.rs" 27 4 27 14] _0 <- Borrow.borrow_mut ( * _2); - [#"../922.rs" 27 4 27 14] _2 <- { _2 with current = ^ _0 }; + [#"../922.rs" 27 4 27 14] x1 <- { x1 with current = (let (x0, x2) = * x1 in (x0, { (let (_, a) = * x1 in a) with current = ( ^ _6) ; })) ; }; + [#"../922.rs" 27 4 27 14] _2 <- Borrow.borrow_final ( * _6) (Borrow.get_id _6); + [#"../922.rs" 27 4 27 14] _6 <- { _6 with current = ( ^ _2) ; }; + [#"../922.rs" 27 4 27 14] _0 <- Borrow.borrow_final ( * _2) (Borrow.get_id _2); + [#"../922.rs" 27 4 27 14] _2 <- { _2 with current = ( ^ _0) ; }; assume { resolve0 _6 }; assume { resolve0 _2 }; assume { resolve1 x1 }; @@ -200,11 +200,11 @@ module C922_F4 } BB0 { [#"../922.rs" 34 4 34 14] _6 <- Borrow.borrow_mut ( * (let (_, a) = * x2 in a)); - [#"../922.rs" 34 4 34 14] x2 <- { x2 with current = (let (x0, x1) = * x2 in (x0, { (let (_, a) = * x2 in a) with current = ^ _6 })) }; - [#"../922.rs" 34 4 34 14] _2 <- Borrow.borrow_mut ( * _6); - [#"../922.rs" 34 4 34 14] _6 <- { _6 with current = ^ _2 }; - [#"../922.rs" 34 4 34 14] _0 <- Borrow.borrow_mut ( * _2); - [#"../922.rs" 34 4 34 14] _2 <- { _2 with current = ^ _0 }; + [#"../922.rs" 34 4 34 14] x2 <- { x2 with current = (let (x0, x1) = * x2 in (x0, { (let (_, a) = * x2 in a) with current = ( ^ _6) ; })) ; }; + [#"../922.rs" 34 4 34 14] _2 <- Borrow.borrow_final ( * _6) (Borrow.get_id _6); + [#"../922.rs" 34 4 34 14] _6 <- { _6 with current = ( ^ _2) ; }; + [#"../922.rs" 34 4 34 14] _0 <- Borrow.borrow_final ( * _2) (Borrow.get_id _2); + [#"../922.rs" 34 4 34 14] _2 <- { _2 with current = ( ^ _0) ; }; assume { resolve0 _6 }; assume { resolve0 _2 }; assume { resolve1 x2 }; diff --git a/creusot/tests/should_succeed/bug/922/why3session.xml b/creusot/tests/should_succeed/bug/922/why3session.xml index 2dc85f90be..11e61edc7f 100644 --- a/creusot/tests/should_succeed/bug/922/why3session.xml +++ b/creusot/tests/should_succeed/bug/922/why3session.xml @@ -8,27 +8,27 @@ - + - + - + - + - + diff --git a/creusot/tests/should_succeed/bug/922/why3shapes.gz b/creusot/tests/should_succeed/bug/922/why3shapes.gz index 512aa00b631191052ade776116ec4fdd08722a2a..d7f914812918ea8ffad9e0c06ec57210fa7bb143 100644 GIT binary patch literal 367 zcmV-#0g(P5iwFP!00000|ILyyZ-X!pg?E01x3)~S&)B$9h6)KKdv#+f6Pq+@8X{H{mC)&{CV6v z9$%QDL^X9OGWdR=t8gDo)wFGMcJ}W5&8$7p)VqV(qc%H>x?IJNuuuhwF|&0aFQNJ5 zl{5(HXrxy(9bqEe6un1dKBDrGBnDFMpTVS%dkN(gPDC8*2MLZ0X@5Z=j8qt@Y@kAz zu`ClTNZqt#n-oRi8|wm@h)JE%duT6Z7io<&5c*6~-;zIC>DW>;&}AY2B!1{~`89sH z#6OtSj1&JRaRrA6mw_eYfrbMu=eb5e%w~aryq_UO-tT7So)%TJsp3-wQzeq52ANqS zH`*%8HM0h+-na_9s1;O_uq910R#!4-Sx#*YxiHpQu9U59Zp;S25LoiRP2v_)c8f`R N(-$A)X@JoK0020+s9gX6 literal 328 zcmV-O0k{4iiwFP!00000|GiPmZi6royz>>lwdLf;+CZfoA|#aDt35{AVADoTLj-E_ z`!!@sN?NHs^|*a~*RNEev1 zCy(dS%TO<4aW_U_qZ&wya?}DE_M73}s!FgFP1}j*q%6xwY)VwXYo0M`@K}*=HS>5#91A@t0fdxd%vw+p~!~JH43z - + diff --git a/creusot/tests/should_succeed/bug/box_borrow_resolve/why3shapes.gz b/creusot/tests/should_succeed/bug/box_borrow_resolve/why3shapes.gz index bf694d0c2a7fefd789b38ccfb89121744af326b2..1efb81fa4bcfc99293878127a35ea51c47724050 100644 GIT binary patch literal 222 zcmV<403rV$iwFP!00000|6R<@Zo)7O2k?8IBDXWPGVmp8THVGfk_)8kh!$v_ z_wG*Z$Ik_ikYm>mcm<7p3%aZ(Z5Q9T*x`x(>iBaAizLj+5;AX&UK|zA)D+Q>txmQ& zYId?vb0~dt)Z&PECZ>o2xjJ%n#O%mWqAVGF@y>ZZQ*}So);$<&3DI=Av2B-U(%6Pl YMQDt&h0dE)aQQ9R6Q2_$R#yQ40C!Vo4FCWD literal 189 zcmV;u07CyCiwFP!00000|6PpD3c@fDgztHZ+|-`(-$w8x6#D{uv?Q8fu{M%I_3@2u z5b0sqVP?PC7I?gwryKF);@E{@j}cy4R3@l6;)nWo>@nADZNzEa?ORHLQ!owrYC|vF42n#6#)PM_&!(E diff --git a/creusot/tests/should_succeed/bug/eq_panic/why3shapes.gz b/creusot/tests/should_succeed/bug/eq_panic/why3shapes.gz index 1320ca5444c141b46be91083bd859c207162fa2a..9f6b47c79a4fa3ff5bbaa24a1f6410829e5fc0d5 100644 GIT binary patch delta 156 zcmV;N0Av5E0jmL!7k||D0YwuAV$#5Fx|&CMC<#z(mEW%kEIQqHm)zYU;qieBMZQvq zgP+el=gE=1o;b{_w8HEttTb!`)nK6L$CZSIX3L=3wZYP+0~#D7;WfMoOYDf2+vGbM zzvUkXrrLgBSM|5246_&B`@sElXROzhwc0_a1-6vSLV` KVN=Z50000#Y)_^D delta 155 zcmV;M0A&BG0jdFz7k~8H2SiL5h)Dyx>1v+zAtXStRerxFu;_H(U2=DaM8=*Lj&kJ? z2S1->E|a5pJ!zO%Wx?zSRvEE@ZYXf{ - + diff --git a/creusot/tests/should_succeed/bug/two_phase/why3shapes.gz b/creusot/tests/should_succeed/bug/two_phase/why3shapes.gz index a66f93e58f62a6d161bb908522e862886dabecbb..ea59355ec9a9a7bc0a82c6758001f3d8a6ce427f 100644 GIT binary patch literal 295 zcmV+?0oeW@iwFP!00000|8-BxPQx$|yyq)?19GzSY%6+*kRnIoyhoyK?6ek+4T+WZ z^VvRv1eB9!$FnoDk1?AL_@O5@>v1yPZCJtLrzm`)adQT|j_`SlR=a&TAW5zD$9C{a z+Y|%_-x?Qiz!R@73x6cdnWneCS*DOIFoAS|0wR#xdFX_E;Xz2o@pg8+dbb0Y7qQt!p?fIu7BBnVeQ60ex>;1@rovGi*+w}^2p0ZLFGMAZ5Wg>;-(H9NBiYoR2000w}l~(`& literal 283 zcmV+$0p$K4iwFP!00000|8-A0Z-X!p-uV^Y+A`TZ3`EU z|9$Oh9Mxp?tSA(@e`ulEx$R@L7X{d70n(`Z$$Co%ep z;VLiiV8_v(m3$c9m-MbTsDWQCeQLH?hmiTlt15sO(%F$XHMt-t@;plrWyA}aw{6-< hen@zX1yz|;n2=0xk%~mbA`(o{;0vP>%8=jz003Y*is%3U diff --git a/creusot/tests/should_succeed/cell/01/why3session.xml b/creusot/tests/should_succeed/cell/01/why3session.xml index 61f1620090..ae42d1aaa4 100644 --- a/creusot/tests/should_succeed/cell/01/why3session.xml +++ b/creusot/tests/should_succeed/cell/01/why3session.xml @@ -7,7 +7,7 @@ - + diff --git a/creusot/tests/should_succeed/cell/01/why3shapes.gz b/creusot/tests/should_succeed/cell/01/why3shapes.gz index 910592b25dc73167a3f99a4de63f460b0a5ceecb..eb2505f72b5a91f7a3ef11dafd234507fb30018f 100644 GIT binary patch literal 189 zcmV;u07CyCiwFP!00000|7DHK4uUWcMfd%R?o`~gofgpO!k9Gh1KpA-kI1Gd1^j(^ znMj<)%$+kgbN2!D4}6xM4rS}>#+_+Mg9GVaSi3FeVLLpj$I7C3XW!0k1EA zCK6{c^X8kEdHV>52RvQCgKL9t>Jt_?I-u?az8^gzt@5(Jzlk;wxzAnSx5zbo>lc~m^nro(tC6ldLOnt)@(l=Z+ErzlT s_wL;w#4{;{kRYTpsmypvoe`E9U^c02$}r1m9_Ivo0D!|T6Al3Y02`H0bN~PV diff --git a/creusot/tests/should_succeed/cell/02/why3session.xml b/creusot/tests/should_succeed/cell/02/why3session.xml index 2e8740b933..0d8b3d7fc0 100644 --- a/creusot/tests/should_succeed/cell/02/why3session.xml +++ b/creusot/tests/should_succeed/cell/02/why3session.xml @@ -4,13 +4,12 @@ - - + @@ -33,7 +32,7 @@ - + @@ -60,7 +59,7 @@ - + @@ -81,10 +80,10 @@ - + - + diff --git a/creusot/tests/should_succeed/cell/02/why3shapes.gz b/creusot/tests/should_succeed/cell/02/why3shapes.gz index ccbf1b36c7a68ca706a05ffce4bb04e5cb035dca..f37d7c7d575dca19537339d9b9a6f7479ca4973c 100644 GIT binary patch literal 2041 zcmV4?b4V~(qCaf{ zlITdXou8lTo*9xuN-N6N<`6*O^z_ucs($sVy2t+OFUyC|{!4yXe#`d{+uhyYmwNfj z-xmIz|E(7hda?HJR#CKTo05mA>yLg_jrjVm4#bB=|9)9^_sg;k3%~MwVYBVl|JsHF z!Z3ajy3`w8x>*re1qGeML3`pb^jks?vnB(l2Lw3xV9W!OewCvQFXG;>jWrWj72C$J?dU9U+e|`OOlLe!*(eceJ z|KcEkJ+aMTnvWVsrXpA(ZHRHZkAa2!ESz>zgC7+b5Za(Q36fV-E{v zYzY2A@Ow|Z@Z~S?>DABqBdCZuYbS!xVy{sW?OZ)@?SY(O@A5U7K@L=lfeMa3}7^XqxJdUPHp&_ zKjr)7j+;Z_uorWf-T4~_j(3-FylWiqZ#NPL1x}CuAU=5-4m@FThzBkV2u>q1^N41Y z{d(-M20yzsi$fNw7RTX;)MjSbtd@s|eBYGx{_xIvKv_SR>`@Gbum9ZL=6+O3%f|!) zCu9xIUkZOaz3+GH)7-!CZndx6?O^SX$enX3Pf_Jr3I`nYJ3PiYQ3;*m(3vz3OpMgL z|36;b`nj@SfBXS09hmCn$)b2-##Ik?_7twzo-e%=SBE9?-SHB8a91a=;Lf;eNML&~ z$4Fr2Ncs#(pRslI=h4-JYGLx$Ojqk+I|f=m)z^E#!D!V+axmxJjwya&b__=yJ5 zHwE)=FZC3q)K5n#)nK%0BbuU=^m3GJeZlsJYTEzC(fJ05YK(kX@VFPwr?`+rYmu@e6_l)fAV6is;y8%v8nbURd3hh_4=eraj3UC5TlJaw>j1GcWwyBZDG)} zc&6ms*gNV7>^^7qf}Gj0YYjpxvPxE>u| zKm%K^hwuHm@wKo0x+xw$VxN5N`k-^PP3K4dlC$CVv0E%+@j+9OG5928q@-jZ?VW&Z zqRnOromiBTtPK)_5vY>$fpQF)e@zGlV^~s$om`|CC8BjDq$mh{G%1isj<_C^7HX-n z)3O8A0d;^K@EAG}o$G98I^C&-E2a<_upu)FIvWI7CsPW(pjUP&MF*|}+kxpo{~;Dq z(Ak<8ViqoHB?ybCbBW1E=0-^Y9^t=$=4u8UTHGi zf?N(oil~DG#AK6BA{XTvBDFuf3^7FI(1E3-i}0>k&Zabi+r35sB`y&=lpR8c4DC8; zJ83$pJE>md#%A{6WhR-(@%o)GUKEN_*l0mg%aZPpe%g~vAcY30vmv2WbR|0_!Ai;N z(Lq#CsNTq#4T?9QoRURtc`Zds4a)iGw9ly9vQWRBKX8gXfQw{IN~B5WsG>&lN?S;( zWy^MG-ojZVflvb4V5O%NJt}fR#9HhefSPjV-pF4zRx9nKSH3!w;K*5PxS#_+D6;ya zw{xCz1^YkjS~3MdCmC zb}n7vwkk+Q147!!C9fSP)^Sr-B?-4A(-9leWpF0O2wEm-9VXr>EHRVJC2`A@bq^Te z$o>F1DWmgzeqdO~oDjzsq!pRlgacV7Xw?z@a031ZK8nM@+o1@N6amR1xW9V#Rg{j* z*2Flz9-8}%<5q1#_F5Zm*alMqwA>odB2M8e`E!~<3lKw)SxRfjWGzv%gD7~n#pv_o zhD*f#oTrevi;~q=CnvHjL#qmp3A;JF7GJ_qG!d2fo^wH-;>A4N9=8n_P>nJjnV!WtxChlny` X@_ZPDPP2mx&uae#Hm|{NQyl;RlLq^K literal 2036 zcmVOa>pC6as^TXqIclYUwOW;*>>xHt-~Jj zFhsto08#7#c+kHF{(ko(Kd?WzW`uE?_S5t`gFuA!{u%C{VgC%D7@tl0%NV!fYpYrq zZehT=-s8wUjvQ>dYb)okU`+tj1XKst!{dD(Zu0G|-!SMV?7rQl#nZq2_U^lGhlSqc zyDv{)Jy+o7X7^)ryG!|o*Xy5lo9*3`zxDs&n7bEFOs>0W)p_b6Rg2?LwlofT0pk!_ zH4a6qKkchyj;mu1)iFbL%vc>$tJB3iS(0ciBg`imz(&r}v-9Zx_3i#93r1(7?(Wj|iPf{H`R#GKr2Fl{vzN_xfAcLr|GwY2YK!B5d>8WO%h%oG z6NmAg=l#aiN3sr9{Odn%KJV^wceCwyxANaOVlDsD$1N70`zO5toEX4h07vWdzs+s< zn!n_S<&K*};jkA|nBD0chaB(D%ki$}cz?S=>KQmb{)6~%9u7QXafk=b3<%~CnQ26m zl>K__unT^2YZiwpbX**U15%xtU^81DAM-mFtOQn3dz6u$m*cbnURCAA(S z2+WezJAW?9W<=xJ{%iRvv{wTTAT;d!RPfFP1kl)cU&Wt5;jw4T~dC0_& znveg-i(9`W`}OCa;L;&eEzTCj6O&xEU?)%EitYK*qPRLNk?)R|*n+#7!Gb%pdAH*fzp`g^*8g}z zgJ>&*`L{(qMv40QC{guBt2&Znlqg@1lC96!{z#4c-!MAe07(sz_X{5O!s!$XNz~kN zIyvXGPbZy`PMS~(r%id?@tc z{tV{ZV}bU}H!m<>4=S!BwJ()Aqg1LgzgxoPw5QINe_M2W+PfEMZ+oLv9hp7t%^9>e zR~%y*y!XVUDmXI!kpt=O)zu-Y+A>JBv~L;oLdziPjaGHEZy9t(%V6u{Q;nD%Jnq@W z(J}TQ205h|T@M25`<&@JZeKoq90i-s!ssM4^yd*x&A#Uf zLsYsx)14H@sMHHl$=+yHNBf>efG8M1JB7;o*(@uXT$Adw^+pDgO&wj@JV2lNnw!MI|125 zo6Qm$u_z^38<2t#q>}SN<`^>nnh*-bu#^oo{8A7Ul1 zGBa0eNg{Ysk|B+vq?GefyVzkNoDHY5&rX`)qajZmny@aTPQqxbVz3nsFF}-?DdCJv z!Pvb!dZ37CkYi%);~HoMjZo%WI@D~EJtRXNv4E|9;`J>qK2>`Xo#U*gSJ7_ zpl(oI;zmSJR0M)f$R#h`KWS7BuH;0qxLm8G82)Cjwd)f)dPifTBIg>P)|%zk*gw{qgyjAr9g))knJ!MSw7bT_{^a|* zRMKY@<{{y|z2+oQbE8tI4ER7Lst`y9A#~I#U{^)SfB1eb zbu3cr!itMP#%3F-5GocS%fq5xO4CR-lxMDhS)ZhgQ5WvC3?)HHL%aqlvkGp2llJmR zp=;sXepD)8j1i(_$E`OP?RcX>9HCVs<2heJLYBnYx5X=zf)B6O5HPZ)Ak>(Bg>U0b2rjwkwHHyNCd>j-h|z^uOyt?o4NJtm zv1dn+F?%5*1wJ?$jm{$})}Z$MeJ4jx@UEIbZx9O-Wyza^Glg4@5Lucc6gP!DoE$EY z1y@2OE4WuNutMi@Al`~38uY;`aX3F*qBZ9eNh31&9IB2oz9RL6V>jeh@ diff --git a/creusot/tests/should_succeed/checked_ops/why3session.xml b/creusot/tests/should_succeed/checked_ops/why3session.xml index 300c172854..60c211c606 100644 --- a/creusot/tests/should_succeed/checked_ops/why3session.xml +++ b/creusot/tests/should_succeed/checked_ops/why3session.xml @@ -14,7 +14,7 @@ - + @@ -29,12 +29,12 @@ - + - + @@ -49,7 +49,7 @@ - + @@ -79,12 +79,12 @@ - + - + @@ -104,17 +104,17 @@ - + - + - + @@ -129,7 +129,7 @@ - + diff --git a/creusot/tests/should_succeed/checked_ops/why3shapes.gz b/creusot/tests/should_succeed/checked_ops/why3shapes.gz index dc7c6ad16a66333f5b60aecf09706a4a0ed4d29d..1f5e2380fa851790c340a815becc5bedb98fb6b0 100644 GIT binary patch literal 3924 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 kG*HSS - - + + - + - + - + diff --git a/creusot/tests/should_succeed/closures/01_basic.mlcfg b/creusot/tests/should_succeed/closures/01_basic.mlcfg index ac4d1f246a..203254292a 100644 --- a/creusot/tests/should_succeed/closures/01_basic.mlcfg +++ b/creusot/tests/should_succeed/closures/01_basic.mlcfg @@ -166,7 +166,7 @@ module C01Basic_MoveClosure_Closure0 goto BB0 } BB0 { - [#"../01_basic.rs" 20 8 20 15] _1 <- { _1 with current = (let C01Basic_MoveClosure_Closure0.C01Basic_MoveClosure_Closure0 x0 = * _1 in C01Basic_MoveClosure_Closure0.C01Basic_MoveClosure_Closure0 ({ (field_00 ( * _1)) with current = ([#"../01_basic.rs" 20 8 20 15] * field_00 ( * _1) + ([#"../01_basic.rs" 20 14 20 15] [#"../01_basic.rs" 20 14 20 15] (1 : int32))) })) }; + [#"../01_basic.rs" 20 8 20 15] _1 <- { _1 with current = (let C01Basic_MoveClosure_Closure0.C01Basic_MoveClosure_Closure0 x0 = * _1 in C01Basic_MoveClosure_Closure0.C01Basic_MoveClosure_Closure0 ({ (field_00 ( * _1)) with current = ([#"../01_basic.rs" 20 8 20 15] * field_00 ( * _1) + ([#"../01_basic.rs" 20 14 20 15] [#"../01_basic.rs" 20 14 20 15] (1 : int32))) ; })) ; }; assume { resolve0 _1 }; [#"../01_basic.rs" 19 24 21 5] _0 <- ([#"../01_basic.rs" 19 24 21 5] ()); return _0 @@ -310,9 +310,9 @@ module C01Basic_MoveMut_Closure0 goto BB1 } BB1 { - [#"../01_basic.rs" 36 12 36 21] _2 <- Borrow.borrow_mut ( * _3); - [#"../01_basic.rs" 36 12 36 21] _3 <- { _3 with current = ^ _2 }; - [#"../01_basic.rs" 36 8 36 21] _1 <- { _1 with current = (let C01Basic_MoveMut_Closure0.C01Basic_MoveMut_Closure0 x0 = * _1 in C01Basic_MoveMut_Closure0.C01Basic_MoveMut_Closure0 ([#"../01_basic.rs" 36 8 36 21] _2)) }; + [#"../01_basic.rs" 36 12 36 21] _2 <- Borrow.borrow_final ( * _3) (Borrow.get_id _3); + [#"../01_basic.rs" 36 12 36 21] _3 <- { _3 with current = ( ^ _2) ; }; + [#"../01_basic.rs" 36 8 36 21] _1 <- { _1 with current = (let C01Basic_MoveMut_Closure0.C01Basic_MoveMut_Closure0 x0 = * _1 in C01Basic_MoveMut_Closure0.C01Basic_MoveMut_Closure0 ([#"../01_basic.rs" 36 8 36 21] _2)) ; }; [#"../01_basic.rs" 36 8 36 21] _2 <- any borrowed uint32; assume { resolve0 (field_00 ( * _1)) }; assume { resolve1 _1 }; diff --git a/creusot/tests/should_succeed/closures/05_map.mlcfg b/creusot/tests/should_succeed/closures/05_map.mlcfg index 075795ce88..48db64c207 100644 --- a/creusot/tests/should_succeed/closures/05_map.mlcfg +++ b/creusot/tests/should_succeed/closures/05_map.mlcfg @@ -234,8 +234,8 @@ module C05Map_Impl0_Next goto BB0 } BB0 { - [#"../05_map.rs" 18 14 18 30] _3 <- Borrow.borrow_mut (C05Map_Map_Type.map_iter ( * self)); - [#"../05_map.rs" 18 14 18 30] self <- { self with current = (let C05Map_Map_Type.C_Map x0 x1 = * self in C05Map_Map_Type.C_Map ( ^ _3) x1) }; + [#"../05_map.rs" 18 14 18 30] _3 <- Borrow.borrow_final (C05Map_Map_Type.map_iter ( * self)) (Borrow.inherit_id (Borrow.get_id self) 1); + [#"../05_map.rs" 18 14 18 30] self <- { self with current = (let C05Map_Map_Type.C_Map x0 x1 = * self in C05Map_Map_Type.C_Map ( ^ _3) x1) ; }; assume { inv0 ( ^ _3) }; [#"../05_map.rs" 18 14 18 30] _2 <- ([#"../05_map.rs" 18 14 18 30] next0 _3); _3 <- any borrowed i; diff --git a/creusot/tests/should_succeed/closures/06_fn_specs/why3session.xml b/creusot/tests/should_succeed/closures/06_fn_specs/why3session.xml index e2e4eada85..8e467750a6 100644 --- a/creusot/tests/should_succeed/closures/06_fn_specs/why3session.xml +++ b/creusot/tests/should_succeed/closures/06_fn_specs/why3session.xml @@ -18,7 +18,7 @@ - + @@ -33,7 +33,7 @@ - + diff --git a/creusot/tests/should_succeed/closures/06_fn_specs/why3shapes.gz b/creusot/tests/should_succeed/closures/06_fn_specs/why3shapes.gz index 4b1bcbfd9220d735ea418efe5dbf679973908e54..ca479f2d34f2390987ec4d66435738d2b24ce177 100644 GIT binary patch literal 749 zcmV{F# z$B;ZJw`qGgrhlFN?YbRB!W7D|N7o_Qv zLxfHw#MA{oy$E_2KNuyby|h>m^E$(5u!x)zs3}1~i;!}T~a!XHGZpm>^0j2PV+4%hA+(ifkDU77fL(CzwDb8Yh* zdtqnDSF^igv}VQqqnSoKO20ez?l?C)_L`ONYVZla+bxrM_v6LY{cdabdw1Mz_lN#` zbZm-R58FvX8ij61S}8@<2wSy;s;XIy1hxp0lbHcL?$pPyKv+?eods-W~eJk&0HV5~Y2tM8%78g7W)NUTmfmY%|5D9(!~%bVQXO zLyD~0=H20#|8@4a>vuE~rlAabbi-l)=7{|nf~>jxIiH9pf+6gqeeg@zOtjh4>rLJe zz~vO3Ms8S6+j>8ncM&(Y8|4j#U7#M=U~^az?Bu~&4OsqcdEvlXA@<PTt`Hj7> zGv;f^-7(sb^8V3Gqno7PodG588k- zAPoou{9~plK2H_pe^XT-Q>|^o1nYza$&qSDTq_6@v}XzwFs#+7Oe0r&DPN|`2C}jTtOG05fLI?l=Rit>n diff --git a/creusot/tests/should_succeed/closures/07_mutable_capture.mlcfg b/creusot/tests/should_succeed/closures/07_mutable_capture.mlcfg index b96fc0e523..471b5e1219 100644 --- a/creusot/tests/should_succeed/closures/07_mutable_capture.mlcfg +++ b/creusot/tests/should_succeed/closures/07_mutable_capture.mlcfg @@ -47,7 +47,7 @@ module C07MutableCapture_TestFnmut_Closure1 goto BB0 } BB0 { - [#"../07_mutable_capture.rs" 10 12 10 18] _1 <- { _1 with current = (let C07MutableCapture_TestFnmut_Closure1.C07MutableCapture_TestFnmut_Closure1 x0 = * _1 in C07MutableCapture_TestFnmut_Closure1.C07MutableCapture_TestFnmut_Closure1 ({ (field_00 ( * _1)) with current = ([#"../07_mutable_capture.rs" 10 12 10 18] * field_00 ( * _1) + ([#"../07_mutable_capture.rs" 10 17 10 18] [#"../07_mutable_capture.rs" 10 17 10 18] (1 : uint32))) })) }; + [#"../07_mutable_capture.rs" 10 12 10 18] _1 <- { _1 with current = (let C07MutableCapture_TestFnmut_Closure1.C07MutableCapture_TestFnmut_Closure1 x0 = * _1 in C07MutableCapture_TestFnmut_Closure1.C07MutableCapture_TestFnmut_Closure1 ({ (field_00 ( * _1)) with current = ([#"../07_mutable_capture.rs" 10 12 10 18] * field_00 ( * _1) + ([#"../07_mutable_capture.rs" 10 17 10 18] [#"../07_mutable_capture.rs" 10 17 10 18] (1 : uint32))) ; })) ; }; assume { resolve0 _1 }; [#"../07_mutable_capture.rs" 11 12 11 13] res1 <- ([#"../07_mutable_capture.rs" 11 12 11 13] [#"../07_mutable_capture.rs" 11 12 11 13] (5 : int32)); [#"../07_mutable_capture.rs" 7 8 7 35] res <- ([#"../07_mutable_capture.rs" 7 8 7 35] res1); diff --git a/creusot/tests/should_succeed/closures/07_mutable_capture/why3session.xml b/creusot/tests/should_succeed/closures/07_mutable_capture/why3session.xml index 766856ad76..403701b872 100644 --- a/creusot/tests/should_succeed/closures/07_mutable_capture/why3session.xml +++ b/creusot/tests/should_succeed/closures/07_mutable_capture/why3session.xml @@ -7,12 +7,12 @@ - + - + diff --git a/creusot/tests/should_succeed/closures/07_mutable_capture/why3shapes.gz b/creusot/tests/should_succeed/closures/07_mutable_capture/why3shapes.gz index 7db3bdbbcf86f39eac2410a2db89a743bcb0aa1a..463db918c54fe97bb2dab1c017eabd51750837a2 100644 GIT binary patch literal 430 zcmV;f0a5-RiwFP!00000|D9AlZ-X!p-T4)4ZOLLAY{ykIL`W!+(yj7Xbbzg*5{URn z|9)*k64ESA8GP8>yN~C0JO_UF1qapnN7Z&^Q@{Gm4_>?&hPqZ=k06i;J|$Yi3i>83 z>mGtw3WyPZA9~0t6~mz)T9tkn_oUtreHvFyXHKxRKv>Lh7&!t>)*NqPC6|&X)^f>4 z%W`ULtGcE-DkP~rqmVUi+x)2FY5(n%U=ENG=(2`N5-1C^oHodAkWC4LDLy1mW;L#h z`8LdPvWBuwvu3D^?(XAm>>0cFyff~^-QC@D3vcsl2p_oyG(L$ZV_!F|pF1GEi&`uV z7EZ30=9U|qny(rZMoQvVgU-Af*y zxzfcG3H7q_LJehQLKY&q5%jj%|P(S|0_>5WJ{1;W$t zPbxl-!DR}16ExK}s^`&+XjG_(QY-|{a-z8=p~$t4w4w#~@dkOcU;rW_3WuR6RK|&p Yc)=*qT2qk;Kim-S7uie0WRC>^0GF1>0RR91 literal 420 zcmV;V0bBkbiwFP!00000|CLnBZi6royz>>@(vpi`7^s>$4A(SK=8ywF8ne2 zxrwdnn(CsEU}lX$*0gQ&qvYoFZIxgS5EP2ChAI{q*;hAV1Tsazpu3}Fqwkt*JAWlP zPWDjNY1Rz2>>fV88Bs7^k=J_X5ngA)W3onhG+v1#Vz+2oH@84KH-88^5s>?TvdfKi z&3D&D+C0(Hb=E>@E z!mv6{#tJ}^63IwL!XQH2X91FhA4RzgBz5rtIV#5zFbxqm-hJ; zHp!>GISbO8U>)&X-9>Cx5kqd6ZGR2%? t;mXsJq*96uz=5=j!MScW?xak#-|9X@>iKNljCyQG1s^md6A_F6004=7MMVGr literal 137 zcmV;40CxW$iwFP!00000|5eDn3c@fD0N_1OaiexhEs!rG0+E z&F$km4InStSm59$Yb{p@Fq~EY&{_^1^{9TJ$G*K8qmAzN7bfDU;vJUSU>BA-)sh-_ rp4TFsN@Ar9dhID$haoU>dZvuoc+LyE3)uiTnMtcJTA?T0i~s-tj3hhC diff --git a/creusot/tests/should_succeed/drop_pair.mlcfg b/creusot/tests/should_succeed/drop_pair.mlcfg index ff80c6ccbf..d2e9a5a3b1 100644 --- a/creusot/tests/should_succeed/drop_pair.mlcfg +++ b/creusot/tests/should_succeed/drop_pair.mlcfg @@ -81,8 +81,8 @@ module DropPair_Drop } BB0 { assume { resolve0 _x }; - [#"../drop_pair.rs" 16 9 16 10] _3 <- Borrow.borrow_mut ( * y); - [#"../drop_pair.rs" 16 9 16 10] y <- { y with current = ^ _3 }; + [#"../drop_pair.rs" 16 9 16 10] _3 <- Borrow.borrow_final ( * y) (Borrow.get_id y); + [#"../drop_pair.rs" 16 9 16 10] y <- { y with current = ( ^ _3) ; }; [#"../drop_pair.rs" 16 4 16 10] _x <- ([#"../drop_pair.rs" 16 4 16 10] _3); [#"../drop_pair.rs" 16 4 16 10] _3 <- any borrowed uint32; assume { resolve0 _x }; diff --git a/creusot/tests/should_succeed/drop_pair/why3shapes.gz b/creusot/tests/should_succeed/drop_pair/why3shapes.gz index 1e6348c91e6f1ff1733cd8b61760e34152b797b5..c4d03d63e0b185b016e8379c5d0df709e92952cb 100644 GIT binary patch delta 123 zcmV->0EGXH0gC~U7j$;IizE$#LlMM+qui*R&6O6435oXm6(_g%HVxECvQ}8N)Hyx( z;Gx+XImnGk8m8_?{1Q7UTGO&Bvh82}-!5`}=S3|e)5-7=##A7dlNnCR zpaH#AeB?VB)@0fraV55#rNns=B-_2azg_wENwZi&GG|367-NQzV|pZ>vQn<9#2Htk e8yX+5xAm^~!y4R=-UR`3LG=YBv@;fr0000r?=}kn diff --git a/creusot/tests/should_succeed/filter_positive.mlcfg b/creusot/tests/should_succeed/filter_positive.mlcfg index b22ab0df12..4134232ebc 100644 --- a/creusot/tests/should_succeed/filter_positive.mlcfg +++ b/creusot/tests/should_succeed/filter_positive.mlcfg @@ -441,7 +441,7 @@ module FilterPositive_M goto BB24 } BB24 { - [#"../filter_positive.rs" 113 12 113 27] _46 <- { _46 with current = ([#"../filter_positive.rs" 113 23 113 27] _43) }; + [#"../filter_positive.rs" 113 12 113 27] _46 <- { _46 with current = ([#"../filter_positive.rs" 113 23 113 27] _43) ; }; assume { resolve1 _46 }; [#"../filter_positive.rs" 114 12 114 22] count <- ([#"../filter_positive.rs" 114 12 114 22] count + ([#"../filter_positive.rs" 114 21 114 22] [#"../filter_positive.rs" 114 21 114 22] (1 : usize))); [#"../filter_positive.rs" 103 20 115 9] _32 <- ([#"../filter_positive.rs" 103 20 115 9] ()); diff --git a/creusot/tests/should_succeed/filter_positive/why3session.xml b/creusot/tests/should_succeed/filter_positive/why3session.xml index 62d0a90b6d..4d9744aea9 100644 --- a/creusot/tests/should_succeed/filter_positive/why3session.xml +++ b/creusot/tests/should_succeed/filter_positive/why3session.xml @@ -18,12 +18,12 @@ - + - + diff --git a/creusot/tests/should_succeed/filter_positive/why3shapes.gz b/creusot/tests/should_succeed/filter_positive/why3shapes.gz index cd74a1a9864a7fc8fccc551856582755a8f8d2fd..09763bb4bf95fc49ced56cfd48ecaffa269af253 100644 GIT binary patch delta 813 zcmV+|1JeBL2Ji-uA_+*VJVpH&RJPlZD>8o+;8-{vTj1loILW`Ue#Jw(sdoo_@(0JG zW5L$n@ax<$2dkO;JE_`zvO8`!ZMAu6yBW^${fPxH$Lo5mJ5}WP`L@1*JC&)ip)$2O z3KmW}J<%wq*Y)Ab6F)miWo~%mBV|zm0%!V@3M*&&e|biR4D7T>gdsYA$ec%gOyQr z?m#$@4pfcbk1vg9zYCxxLfB#-L`&=AuW1W}y>XCTDN|DRyb9(3%9J*oesDz`9tP*I zp3Kc5SXkgIX9ImWocO~d1TnyIGs!yWv+4Rc4+$>f&YmNEc84IGuW?Rh$J2imNq8i0 zEkE@!DJ}K#Sr@Ph9NOgVaaVTN)^#0n8OK#T1znC&N+Bmfs(>ZIM6%$~qrYEsI-TIl zMZ6AzW~9zHuh<+tL8Zr22$~{#KaM*Zm4-eoIKh^Scc2Bk2~0@2TrFz6cd?|JEa)D* zxAt|eE~jsuL2qvFNg5~hbWeX$k3p6Eqdf&{zb8qrP!TYZ(n*M?$|eg_*(92-Gr_m_ zUE92Ra4HQMREl}K-?wkR{IvboDS=hJ!^SCtbxHrr-ihAkI&L&bi+j-G52w^k6ZNOg zwKu-$-k$xQ_#olh?^eQS`YQDjKr@v~#VhY~EQLl^ zDVdi=o=7V!pRqjkpp>bYP#F_BS75*+6EbIzdXs3Y$gRjSZUh&mq?_-dDh)5W&P9dD ri$dfH2g{j-%tC6xSkM_3lm%%)Sl|}G0<)P-t(pA~AozkI3JCxJ8OVnR delta 809 zcmV+^1J?ZT2J8lqA_8qS;8-{vTj1loJjuVYe#Jw(u6GA~@(0JG zW6APw_;v1>gVoIaomA~U*&Vm*wpzcm-3;gW{=|Zp<8?jOohowtd|O|_oyyeMP?_2s z1q&ygo@kWQd40I@#LrGrnH%2tNLf^Xz?uG}!pfQcU!IX6`Jb30j{$iIp!1AJXdcL6jkH6sg5Qvc+!WR1=T3R1}OSRWJuornKSogDc|jFgS;N zGB<}{VS%rl4fNq~;t!7y!~n<5Bdye$k9fEM4`^E%`*j;nYIx*VgFLQaBI2}^>BWWl3Hf4}B*I>DEV zcpU`INS&`=u{nBzN{^=yG)44&9CtJ-4Sia0f-M*CKnr#gn2>V0TGV*&Vo5bw&^>r> z?dx1!PTx9%-rU}kG*0U2o}_;sgDUw)dkWTmPm*4tB48q=lMqjpO%|rINih^&H`9Au$6W?#aSv4d;gq^*qR!O0>e@Hm z+q2&j6C_;w-AX#5&ot;%_ebB_2Y!9>hd4@r@06M5Q%=dARAePEMVx<{zGi0zt1*Km zzrkR|hcC!>HUlkCL5f+akb5I4S%5CEK#ks%o+n`0EcI3DC4gqCkcwB{7q}4`S*2vL zDT_o}Vfl;|sRyM@#e~Y3D7XRx9+{8@gVdWuTSaa@W12~_70PT_S$SOnFkkr%rB=ui n4wf?unT6DXv7jv|3(^&Wu)r;V1!gmwS~L3}aNb&j3JCxJP126D diff --git a/creusot/tests/should_succeed/hashmap.mlcfg b/creusot/tests/should_succeed/hashmap.mlcfg index 9976957249..2b6b181b0c 100644 --- a/creusot/tests/should_succeed/hashmap.mlcfg +++ b/creusot/tests/should_succeed/hashmap.mlcfg @@ -765,19 +765,19 @@ module Hashmap_Impl5_Add [#"../hashmap.rs" 110 27 110 55] index <- ([#"../hashmap.rs" 110 27 110 55] ([#"../hashmap.rs" 110 27 110 46] UIntSize.of_int (UInt64.to_int _13)) % _15); _13 <- any uint64; _15 <- any usize; - [#"../hashmap.rs" 111 39 111 51] _20 <- Borrow.borrow_mut (Hashmap_MyHashMap_Type.myhashmap_buckets ( * self)); - [#"../hashmap.rs" 111 39 111 51] self <- { self with current = (let Hashmap_MyHashMap_Type.C_MyHashMap x0 = * self in Hashmap_MyHashMap_Type.C_MyHashMap ( ^ _20)) }; + [#"../hashmap.rs" 111 39 111 51] _20 <- Borrow.borrow_final (Hashmap_MyHashMap_Type.myhashmap_buckets ( * self)) (Borrow.inherit_id (Borrow.get_id self) 1); + [#"../hashmap.rs" 111 39 111 51] self <- { self with current = (let Hashmap_MyHashMap_Type.C_MyHashMap x0 = * self in Hashmap_MyHashMap_Type.C_MyHashMap ( ^ _20)) ; }; assume { inv1 ( ^ _20) }; [#"../hashmap.rs" 111 39 111 58] _19 <- ([#"../hashmap.rs" 111 39 111 58] index_mut0 _20 ([#"../hashmap.rs" 111 52 111 57] index)); _20 <- any borrowed (Alloc_Vec_Vec_Type.t_vec (Hashmap_List_Type.t_list (k, v)) (Alloc_Alloc_Global_Type.t_global)); goto BB5 } BB5 { - [#"../hashmap.rs" 111 34 111 58] _18 <- Borrow.borrow_mut ( * _19); - [#"../hashmap.rs" 111 34 111 58] _19 <- { _19 with current = ^ _18 }; + [#"../hashmap.rs" 111 34 111 58] _18 <- Borrow.borrow_final ( * _19) (Borrow.get_id _19); + [#"../hashmap.rs" 111 34 111 58] _19 <- { _19 with current = ( ^ _18) ; }; assume { inv2 ( ^ _18) }; - [#"../hashmap.rs" 111 34 111 58] l <- Borrow.borrow_mut ( * _18); - [#"../hashmap.rs" 111 34 111 58] _18 <- { _18 with current = ^ l }; + [#"../hashmap.rs" 111 34 111 58] l <- Borrow.borrow_final ( * _18) (Borrow.get_id _18); + [#"../hashmap.rs" 111 34 111 58] _18 <- { _18 with current = ( ^ l) ; }; assume { inv2 ( ^ l) }; assert { [@expl:type invariant] inv3 _18 }; assume { resolve1 _18 }; @@ -808,14 +808,14 @@ module Hashmap_Impl5_Add goto BB10 } BB10 { - [#"../hashmap.rs" 121 24 121 25] k <- Borrow.borrow_mut (let (a, _) = Hashmap_List_Type.cons_0 ( * l) in a); - [#"../hashmap.rs" 121 24 121 25] l <- { l with current = (let Hashmap_List_Type.C_Cons x0 x1 = * l in Hashmap_List_Type.C_Cons (let (x0, x1) = Hashmap_List_Type.cons_0 ( * l) in ( ^ k, x1)) x1) }; + [#"../hashmap.rs" 121 24 121 25] k <- Borrow.borrow_final (let (a, _) = Hashmap_List_Type.cons_0 ( * l) in a) (Borrow.inherit_id (Borrow.inherit_id (Borrow.get_id l) 1) 1); + [#"../hashmap.rs" 121 24 121 25] l <- { l with current = (let Hashmap_List_Type.C_Cons x0 x1 = * l in Hashmap_List_Type.C_Cons (let (x0, x1) = Hashmap_List_Type.cons_0 ( * l) in ( ^ k, x1)) x1) ; }; assume { inv6 ( ^ k) }; - [#"../hashmap.rs" 121 27 121 28] v <- Borrow.borrow_mut (let (_, a) = Hashmap_List_Type.cons_0 ( * l) in a); - [#"../hashmap.rs" 121 27 121 28] l <- { l with current = (let Hashmap_List_Type.C_Cons x0 x1 = * l in Hashmap_List_Type.C_Cons (let (x0, x1) = Hashmap_List_Type.cons_0 ( * l) in (x0, ^ v)) x1) }; + [#"../hashmap.rs" 121 27 121 28] v <- Borrow.borrow_final (let (_, a) = Hashmap_List_Type.cons_0 ( * l) in a) (Borrow.inherit_id (Borrow.inherit_id (Borrow.get_id l) 1) 2); + [#"../hashmap.rs" 121 27 121 28] l <- { l with current = (let Hashmap_List_Type.C_Cons x0 x1 = * l in Hashmap_List_Type.C_Cons (let (x0, x1) = Hashmap_List_Type.cons_0 ( * l) in (x0, ^ v)) x1) ; }; assume { inv7 ( ^ v) }; - [#"../hashmap.rs" 121 31 121 33] tl <- Borrow.borrow_mut (Hashmap_List_Type.cons_1 ( * l)); - [#"../hashmap.rs" 121 31 121 33] l <- { l with current = (let Hashmap_List_Type.C_Cons x0 x1 = * l in Hashmap_List_Type.C_Cons x0 ( ^ tl)) }; + [#"../hashmap.rs" 121 31 121 33] tl <- Borrow.borrow_final (Hashmap_List_Type.cons_1 ( * l)) (Borrow.inherit_id (Borrow.get_id l) 2); + [#"../hashmap.rs" 121 31 121 33] l <- { l with current = (let Hashmap_List_Type.C_Cons x0 x1 = * l in Hashmap_List_Type.C_Cons x0 ( ^ tl)) ; }; assume { inv8 ( ^ tl) }; [#"../hashmap.rs" 122 21 122 23] tl1 <- ([#"../hashmap.rs" 122 21 122 23] tl); [#"../hashmap.rs" 122 21 122 23] tl <- any borrowed (Hashmap_List_Type.t_list (k, v)); @@ -837,7 +837,7 @@ module Hashmap_Impl5_Add assume { resolve6 key }; assert { [@expl:type invariant] inv7 val' }; assume { resolve7 val' }; - [#"../hashmap.rs" 124 16 124 24] v <- { v with current = ([#"../hashmap.rs" 124 21 124 24] val') }; + [#"../hashmap.rs" 124 16 124 24] v <- { v with current = ([#"../hashmap.rs" 124 21 124 24] val') ; }; assert { [@expl:type invariant] inv7 ( * v) }; assume { resolve7 ( * v) }; assert { [@expl:type invariant] inv10 v }; @@ -856,10 +856,10 @@ module Hashmap_Impl5_Add assert { [@expl:type invariant] inv10 v }; assume { resolve4 v }; [#"../hashmap.rs" 128 16 128 25] _46 <- Borrow.borrow_mut ( * tl1); - [#"../hashmap.rs" 128 16 128 25] tl1 <- { tl1 with current = ^ _46 }; + [#"../hashmap.rs" 128 16 128 25] tl1 <- { tl1 with current = ( ^ _46) ; }; assume { inv2 ( ^ _46) }; - [#"../hashmap.rs" 128 16 128 25] _45 <- Borrow.borrow_mut ( * _46); - [#"../hashmap.rs" 128 16 128 25] _46 <- { _46 with current = ^ _45 }; + [#"../hashmap.rs" 128 16 128 25] _45 <- Borrow.borrow_final ( * _46) (Borrow.get_id _46); + [#"../hashmap.rs" 128 16 128 25] _46 <- { _46 with current = ( ^ _45) ; }; assume { inv2 ( ^ _45) }; assert { [@expl:type invariant] inv3 l }; assume { resolve1 l }; @@ -885,7 +885,7 @@ module Hashmap_Impl5_Add goto BB17 } BB17 { - [#"../hashmap.rs" 131 8 131 10] l <- { l with current = ([#"../hashmap.rs" 131 13 131 44] Hashmap_List_Type.C_Cons ([#"../hashmap.rs" 131 18 131 28] (([#"../hashmap.rs" 131 19 131 22] key), ([#"../hashmap.rs" 131 24 131 27] val'))) ([#"../hashmap.rs" 131 39 131 42] Hashmap_List_Type.C_Nil)) }; + [#"../hashmap.rs" 131 8 131 10] l <- { l with current = ([#"../hashmap.rs" 131 13 131 44] Hashmap_List_Type.C_Cons ([#"../hashmap.rs" 131 18 131 28] (([#"../hashmap.rs" 131 19 131 22] key), ([#"../hashmap.rs" 131 24 131 27] val'))) ([#"../hashmap.rs" 131 39 131 42] Hashmap_List_Type.C_Nil)) ; }; assert { [@expl:type invariant] inv2 ( * l) }; assume { resolve9 ( * l) }; assert { [@expl:type invariant] inv3 l }; @@ -1766,18 +1766,18 @@ module Hashmap_Impl5_Resize } BB9 { [#"../hashmap.rs" 177 56 177 68] _30 <- Borrow.borrow_mut (Hashmap_MyHashMap_Type.myhashmap_buckets ( * self)); - [#"../hashmap.rs" 177 56 177 68] self <- { self with current = (let Hashmap_MyHashMap_Type.C_MyHashMap x0 = * self in Hashmap_MyHashMap_Type.C_MyHashMap ( ^ _30)) }; + [#"../hashmap.rs" 177 56 177 68] self <- { self with current = (let Hashmap_MyHashMap_Type.C_MyHashMap x0 = * self in Hashmap_MyHashMap_Type.C_MyHashMap ( ^ _30)) ; }; assume { inv4 ( ^ _30) }; [#"../hashmap.rs" 177 56 177 71] _29 <- ([#"../hashmap.rs" 177 56 177 71] index_mut0 _30 ([#"../hashmap.rs" 177 69 177 70] i)); _30 <- any borrowed (Alloc_Vec_Vec_Type.t_vec (Hashmap_List_Type.t_list (k, v)) (Alloc_Alloc_Global_Type.t_global)); goto BB10 } BB10 { - [#"../hashmap.rs" 177 51 177 71] _28 <- Borrow.borrow_mut ( * _29); - [#"../hashmap.rs" 177 51 177 71] _29 <- { _29 with current = ^ _28 }; + [#"../hashmap.rs" 177 51 177 71] _28 <- Borrow.borrow_final ( * _29) (Borrow.get_id _29); + [#"../hashmap.rs" 177 51 177 71] _29 <- { _29 with current = ( ^ _28) ; }; assume { inv5 ( ^ _28) }; - [#"../hashmap.rs" 177 51 177 71] _27 <- Borrow.borrow_mut ( * _28); - [#"../hashmap.rs" 177 51 177 71] _28 <- { _28 with current = ^ _27 }; + [#"../hashmap.rs" 177 51 177 71] _27 <- Borrow.borrow_final ( * _28) (Borrow.get_id _28); + [#"../hashmap.rs" 177 51 177 71] _28 <- { _28 with current = ( ^ _27) ; }; assume { inv5 ( ^ _27) }; [#"../hashmap.rs" 177 33 177 83] l <- ([#"../hashmap.rs" 177 33 177 83] replace0 _27 ([#"../hashmap.rs" 177 73 177 82] Hashmap_List_Type.C_Nil)); _27 <- any borrowed (Hashmap_List_Type.t_list (k, v)); @@ -1879,7 +1879,7 @@ module Hashmap_Impl5_Resize goto BB30 } BB30 { - [#"../hashmap.rs" 196 8 196 13] self <- { self with current = ([#"../hashmap.rs" 196 16 196 19] new) }; + [#"../hashmap.rs" 196 8 196 13] self <- { self with current = ([#"../hashmap.rs" 196 16 196 19] new) ; }; [#"../hashmap.rs" 196 16 196 19] new <- any Hashmap_MyHashMap_Type.t_myhashmap k v; assert { [@expl:type invariant] inv2 ( * self) }; assume { resolve1 ( * self) }; diff --git a/creusot/tests/should_succeed/hashmap/why3session.xml b/creusot/tests/should_succeed/hashmap/why3session.xml index 30336af452..6ad55dff98 100644 --- a/creusot/tests/should_succeed/hashmap/why3session.xml +++ b/creusot/tests/should_succeed/hashmap/why3session.xml @@ -14,7 +14,7 @@ - + @@ -39,183 +39,183 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -232,7 +232,7 @@ - + @@ -247,7 +247,7 @@ - + @@ -273,13 +273,13 @@ - + - + @@ -357,7 +357,7 @@ - + @@ -372,146 +372,146 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/creusot/tests/should_succeed/hashmap/why3shapes.gz b/creusot/tests/should_succeed/hashmap/why3shapes.gz index aa5dbfe1e4be383f4509b76bcedea9949fd19214..d7e34022b8f902f673108a9e1770c8f691ed21b0 100644 GIT binary patch literal 10081 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 diff --git a/creusot/tests/should_succeed/heapsort_generic.mlcfg b/creusot/tests/should_succeed/heapsort_generic.mlcfg index f2edd8180c..64a3659b53 100644 --- a/creusot/tests/should_succeed/heapsort_generic.mlcfg +++ b/creusot/tests/should_succeed/heapsort_generic.mlcfg @@ -680,15 +680,15 @@ module HeapsortGeneric_SiftDown } BB20 { [#"../heapsort_generic.rs" 71 8 71 24] _63 <- Borrow.borrow_mut ( * v); - [#"../heapsort_generic.rs" 71 8 71 24] v <- { v with current = ^ _63 }; + [#"../heapsort_generic.rs" 71 8 71 24] v <- { v with current = ( ^ _63) ; }; assume { inv3 ( ^ _63) }; [#"../heapsort_generic.rs" 71 8 71 24] _62 <- ([#"../heapsort_generic.rs" 71 8 71 24] deref_mut0 _63); _63 <- any borrowed (Alloc_Vec_Vec_Type.t_vec t (Alloc_Alloc_Global_Type.t_global)); goto BB21 } BB21 { - [#"../heapsort_generic.rs" 71 8 71 24] _61 <- Borrow.borrow_mut ( * _62); - [#"../heapsort_generic.rs" 71 8 71 24] _62 <- { _62 with current = ^ _61 }; + [#"../heapsort_generic.rs" 71 8 71 24] _61 <- Borrow.borrow_final ( * _62) (Borrow.get_id _62); + [#"../heapsort_generic.rs" 71 8 71 24] _62 <- { _62 with current = ( ^ _61) ; }; assume { inv4 ( ^ _61) }; [#"../heapsort_generic.rs" 71 8 71 24] _60 <- ([#"../heapsort_generic.rs" 71 8 71 24] swap0 _61 ([#"../heapsort_generic.rs" 71 15 71 16] i) ([#"../heapsort_generic.rs" 71 18 71 23] child)); _61 <- any borrowed (slice t); @@ -1108,7 +1108,7 @@ module HeapsortGeneric_HeapSort BB6 { [#"../heapsort_generic.rs" 104 8 104 18] start <- ([#"../heapsort_generic.rs" 104 8 104 18] start - ([#"../heapsort_generic.rs" 104 17 104 18] [#"../heapsort_generic.rs" 104 17 104 18] (1 : usize))); [#"../heapsort_generic.rs" 105 18 105 19] _19 <- Borrow.borrow_mut ( * v); - [#"../heapsort_generic.rs" 105 18 105 19] v <- { v with current = ^ _19 }; + [#"../heapsort_generic.rs" 105 18 105 19] v <- { v with current = ( ^ _19) ; }; assume { inv2 ( ^ _19) }; [#"../heapsort_generic.rs" 105 28 105 35] _21 <- ([#"../heapsort_generic.rs" 105 28 105 35] len0 ([#"../heapsort_generic.rs" 105 28 105 35] * _19)); goto BB7 @@ -1147,15 +1147,15 @@ module HeapsortGeneric_HeapSort BB13 { [#"../heapsort_generic.rs" 116 8 116 16] end' <- ([#"../heapsort_generic.rs" 116 8 116 16] end' - ([#"../heapsort_generic.rs" 116 15 116 16] [#"../heapsort_generic.rs" 116 15 116 16] (1 : usize))); [#"../heapsort_generic.rs" 117 8 117 22] _38 <- Borrow.borrow_mut ( * v); - [#"../heapsort_generic.rs" 117 8 117 22] v <- { v with current = ^ _38 }; + [#"../heapsort_generic.rs" 117 8 117 22] v <- { v with current = ( ^ _38) ; }; assume { inv2 ( ^ _38) }; [#"../heapsort_generic.rs" 117 8 117 22] _37 <- ([#"../heapsort_generic.rs" 117 8 117 22] deref_mut0 _38); _38 <- any borrowed (Alloc_Vec_Vec_Type.t_vec t (Alloc_Alloc_Global_Type.t_global)); goto BB14 } BB14 { - [#"../heapsort_generic.rs" 117 8 117 22] _36 <- Borrow.borrow_mut ( * _37); - [#"../heapsort_generic.rs" 117 8 117 22] _37 <- { _37 with current = ^ _36 }; + [#"../heapsort_generic.rs" 117 8 117 22] _36 <- Borrow.borrow_final ( * _37) (Borrow.get_id _37); + [#"../heapsort_generic.rs" 117 8 117 22] _37 <- { _37 with current = ( ^ _36) ; }; assume { inv3 ( ^ _36) }; [#"../heapsort_generic.rs" 117 8 117 22] _35 <- ([#"../heapsort_generic.rs" 117 8 117 22] swap0 _36 ([#"../heapsort_generic.rs" 117 15 117 16] [#"../heapsort_generic.rs" 117 15 117 16] (0 : usize)) ([#"../heapsort_generic.rs" 117 18 117 21] end')); _36 <- any borrowed (slice t); @@ -1166,7 +1166,7 @@ module HeapsortGeneric_HeapSort assume { resolve2 _37 }; assert { [@expl:assertion] [#"../heapsort_generic.rs" 119 12 119 59] let _ = heap_frag_max0 (deep_model0 v) 0 (UIntSize.to_int end') in forall j : int . forall i : int . 0 <= i /\ i < UIntSize.to_int end' /\ UIntSize.to_int end' <= j /\ j < Seq.length (shallow_model0 v) -> le_log0 (Seq.get (deep_model0 v) i) (Seq.get (deep_model0 v) j) }; [#"../heapsort_generic.rs" 123 18 123 19] _43 <- Borrow.borrow_mut ( * v); - [#"../heapsort_generic.rs" 123 18 123 19] v <- { v with current = ^ _43 }; + [#"../heapsort_generic.rs" 123 18 123 19] v <- { v with current = ( ^ _43) ; }; assume { inv2 ( ^ _43) }; [#"../heapsort_generic.rs" 123 8 123 28] _42 <- ([#"../heapsort_generic.rs" 123 8 123 28] sift_down0 _43 ([#"../heapsort_generic.rs" 123 21 123 22] [#"../heapsort_generic.rs" 123 21 123 22] (0 : usize)) ([#"../heapsort_generic.rs" 123 24 123 27] end')); _43 <- any borrowed (Alloc_Vec_Vec_Type.t_vec t (Alloc_Alloc_Global_Type.t_global)); diff --git a/creusot/tests/should_succeed/heapsort_generic/why3session.xml b/creusot/tests/should_succeed/heapsort_generic/why3session.xml index 10a9dbc867..b133f583d3 100644 --- a/creusot/tests/should_succeed/heapsort_generic/why3session.xml +++ b/creusot/tests/should_succeed/heapsort_generic/why3session.xml @@ -10,7 +10,7 @@ - + @@ -23,7 +23,7 @@ - + @@ -41,115 +41,115 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -158,12 +158,12 @@ - + - + @@ -172,12 +172,12 @@ - + - + @@ -190,12 +190,12 @@ - + - + @@ -204,58 +204,58 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -276,103 +276,103 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -385,7 +385,7 @@ - + @@ -398,16 +398,16 @@ - + - + - + - + diff --git a/creusot/tests/should_succeed/heapsort_generic/why3shapes.gz b/creusot/tests/should_succeed/heapsort_generic/why3shapes.gz index 1110db6a417b3af2baaf517cd2c54d3b13374f2a..904f366d16ef2b69c33993f45ce78ca68375f8b4 100644 GIT binary patch literal 8124 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 DWmUf| diff --git a/creusot/tests/should_succeed/hillel.mlcfg b/creusot/tests/should_succeed/hillel.mlcfg index eb114c1822..968e5e1575 100644 --- a/creusot/tests/should_succeed/hillel.mlcfg +++ b/creusot/tests/should_succeed/hillel.mlcfg @@ -221,7 +221,7 @@ module Hillel_RightPad } BB5 { [#"../hillel.rs" 25 8 25 21] _23 <- Borrow.borrow_mut ( * str); - [#"../hillel.rs" 25 8 25 21] str <- { str with current = ^ _23 }; + [#"../hillel.rs" 25 8 25 21] str <- { str with current = ( ^ _23) ; }; assume { inv3 ( ^ _23) }; [#"../hillel.rs" 25 8 25 21] _22 <- ([#"../hillel.rs" 25 8 25 21] push0 _23 ([#"../hillel.rs" 25 17 25 20] pad)); _23 <- any borrowed (Alloc_Vec_Vec_Type.t_vec t (Alloc_Alloc_Global_Type.t_global)); @@ -443,7 +443,7 @@ module Hillel_LeftPad } BB6 { [#"../hillel.rs" 44 8 44 26] _24 <- Borrow.borrow_mut ( * str); - [#"../hillel.rs" 44 8 44 26] str <- { str with current = ^ _24 }; + [#"../hillel.rs" 44 8 44 26] str <- { str with current = ( ^ _24) ; }; assume { inv3 ( ^ _24) }; [#"../hillel.rs" 44 8 44 26] _23 <- ([#"../hillel.rs" 44 8 44 26] insert0 _24 ([#"../hillel.rs" 44 19 44 20] [#"../hillel.rs" 44 19 44 20] (0 : usize)) ([#"../hillel.rs" 44 22 44 25] pad)); _24 <- any borrowed (Alloc_Vec_Vec_Type.t_vec t (Alloc_Alloc_Global_Type.t_global)); @@ -1036,8 +1036,8 @@ module Hillel_InsertUnique BB13 { [#"../hillel.rs" 84 4 84 111] _30 <- Borrow.borrow_mut iter; [#"../hillel.rs" 84 4 84 111] iter <- ^ _30; - [#"../hillel.rs" 84 4 84 111] _29 <- Borrow.borrow_mut ( * _30); - [#"../hillel.rs" 84 4 84 111] _30 <- { _30 with current = ^ _29 }; + [#"../hillel.rs" 84 4 84 111] _29 <- Borrow.borrow_final ( * _30) (Borrow.get_id _30); + [#"../hillel.rs" 84 4 84 111] _30 <- { _30 with current = ( ^ _29) ; }; [#"../hillel.rs" 84 4 84 111] _28 <- ([#"../hillel.rs" 84 4 84 111] next0 _29); _29 <- any borrowed (Core_Slice_Iter_Iter_Type.t_iter t); goto BB14 @@ -1117,8 +1117,8 @@ module Hillel_InsertUnique goto BB12 } BB24 { - [#"../hillel.rs" 94 4 94 18] _49 <- Borrow.borrow_mut ( * vec); - [#"../hillel.rs" 94 4 94 18] vec <- { vec with current = ^ _49 }; + [#"../hillel.rs" 94 4 94 18] _49 <- Borrow.borrow_final ( * vec) (Borrow.get_id vec); + [#"../hillel.rs" 94 4 94 18] vec <- { vec with current = ( ^ _49) ; }; assume { inv8 ( ^ _49) }; [#"../hillel.rs" 94 4 94 18] _48 <- ([#"../hillel.rs" 94 4 94 18] push1 _49 ([#"../hillel.rs" 94 13 94 17] elem)); _49 <- any borrowed (Alloc_Vec_Vec_Type.t_vec t (Alloc_Alloc_Global_Type.t_global)); @@ -1561,8 +1561,8 @@ module Hillel_Unique BB11 { [#"../hillel.rs" 104 4 104 48] _25 <- Borrow.borrow_mut iter; [#"../hillel.rs" 104 4 104 48] iter <- ^ _25; - [#"../hillel.rs" 104 4 104 48] _24 <- Borrow.borrow_mut ( * _25); - [#"../hillel.rs" 104 4 104 48] _25 <- { _25 with current = ^ _24 }; + [#"../hillel.rs" 104 4 104 48] _24 <- Borrow.borrow_final ( * _25) (Borrow.get_id _25); + [#"../hillel.rs" 104 4 104 48] _25 <- { _25 with current = ( ^ _24) ; }; [#"../hillel.rs" 104 4 104 48] _23 <- ([#"../hillel.rs" 104 4 104 48] next0 _24); _24 <- any borrowed (Core_Ops_Range_Range_Type.t_range usize); goto BB12 @@ -1610,8 +1610,8 @@ module Hillel_Unique [#"../hillel.rs" 109 22 109 33] _37 <- Borrow.borrow_mut unique; [#"../hillel.rs" 109 22 109 33] unique <- ^ _37; assume { inv2 ( ^ _37) }; - [#"../hillel.rs" 109 22 109 33] _36 <- Borrow.borrow_mut ( * _37); - [#"../hillel.rs" 109 22 109 33] _37 <- { _37 with current = ^ _36 }; + [#"../hillel.rs" 109 22 109 33] _36 <- Borrow.borrow_final ( * _37) (Borrow.get_id _37); + [#"../hillel.rs" 109 22 109 33] _37 <- { _37 with current = ( ^ _36) ; }; assume { inv2 ( ^ _36) }; assert { [@expl:type invariant] inv3 elem }; assume { resolve2 elem }; @@ -2134,8 +2134,8 @@ module Hillel_Fulcrum BB5 { [#"../hillel.rs" 159 4 159 60] _21 <- Borrow.borrow_mut iter; [#"../hillel.rs" 159 4 159 60] iter <- ^ _21; - [#"../hillel.rs" 159 4 159 60] _20 <- Borrow.borrow_mut ( * _21); - [#"../hillel.rs" 159 4 159 60] _21 <- { _21 with current = ^ _20 }; + [#"../hillel.rs" 159 4 159 60] _20 <- Borrow.borrow_final ( * _21) (Borrow.get_id _21); + [#"../hillel.rs" 159 4 159 60] _21 <- { _21 with current = ( ^ _20) ; }; [#"../hillel.rs" 159 4 159 60] _19 <- ([#"../hillel.rs" 159 4 159 60] next0 _20); _20 <- any borrowed (Core_Slice_Iter_Iter_Type.t_iter uint32); goto BB6 @@ -2204,8 +2204,8 @@ module Hillel_Fulcrum BB17 { [#"../hillel.rs" 171 4 171 58] _52 <- Borrow.borrow_mut iter1; [#"../hillel.rs" 171 4 171 58] iter1 <- ^ _52; - [#"../hillel.rs" 171 4 171 58] _51 <- Borrow.borrow_mut ( * _52); - [#"../hillel.rs" 171 4 171 58] _52 <- { _52 with current = ^ _51 }; + [#"../hillel.rs" 171 4 171 58] _51 <- Borrow.borrow_final ( * _52) (Borrow.get_id _52); + [#"../hillel.rs" 171 4 171 58] _52 <- { _52 with current = ( ^ _51) ; }; [#"../hillel.rs" 171 4 171 58] _50 <- ([#"../hillel.rs" 171 4 171 58] next1 _51); _51 <- any borrowed (Core_Ops_Range_Range_Type.t_range usize); goto BB18 diff --git a/creusot/tests/should_succeed/hillel/why3session.xml b/creusot/tests/should_succeed/hillel/why3session.xml index 9f6c80d3ef..953f66eb8a 100644 --- a/creusot/tests/should_succeed/hillel/why3session.xml +++ b/creusot/tests/should_succeed/hillel/why3session.xml @@ -9,17 +9,17 @@ - + - + - + @@ -35,7 +35,7 @@ - + @@ -59,58 +59,58 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -118,25 +118,25 @@ - + - + - + - + - + @@ -145,14 +145,14 @@ - + - + @@ -172,7 +172,7 @@ - + @@ -181,115 +181,115 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/creusot/tests/should_succeed/hillel/why3shapes.gz b/creusot/tests/should_succeed/hillel/why3shapes.gz index 0b45d88c4ef9090594599a98550cc89e73903a5a..cb9b2fe835876c31fce7facacb757d8f7468c201 100644 GIT binary patch literal 7235 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 E0P-0xi2wiq diff --git a/creusot/tests/should_succeed/index_range.mlcfg b/creusot/tests/should_succeed/index_range.mlcfg index 5bd8714590..034a64c8af 100644 --- a/creusot/tests/should_succeed/index_range.mlcfg +++ b/creusot/tests/should_succeed/index_range.mlcfg @@ -796,8 +796,8 @@ module IndexRange_TestRange goto BB54 } BB54 { - [#"../index_range.rs" 59 12 59 26] s2 <- Borrow.borrow_mut ( * _105); - [#"../index_range.rs" 59 12 59 26] _105 <- { _105 with current = ^ s2 }; + [#"../index_range.rs" 59 12 59 26] s2 <- Borrow.borrow_final ( * _105) (Borrow.get_id _105); + [#"../index_range.rs" 59 12 59 26] _105 <- { _105 with current = ( ^ s2) ; }; [#"../index_range.rs" 60 12 60 19] _111 <- ([#"../index_range.rs" 60 12 60 19] len0 ([#"../index_range.rs" 60 12 60 19] * s2)); goto BB55 } @@ -821,14 +821,14 @@ module IndexRange_TestRange goto BB58 } BB58 { - [#"../index_range.rs" 61 4 61 13] s2 <- { s2 with current = Slice.set ( * s2) _114 ([#"../index_range.rs" 61 4 61 13] [#"../index_range.rs" 61 11 61 13] (-1 : int32)) }; + [#"../index_range.rs" 61 4 61 13] s2 <- { s2 with current = Slice.set ( * s2) _114 ([#"../index_range.rs" 61 4 61 13] [#"../index_range.rs" 61 11 61 13] (-1 : int32)) ; }; [#"../index_range.rs" 62 6 62 7] _117 <- ([#"../index_range.rs" 62 6 62 7] [#"../index_range.rs" 62 6 62 7] (1 : usize)); [#"../index_range.rs" 62 4 62 8] _119 <- ([#"../index_range.rs" 62 4 62 8] _117 < ([#"../index_range.rs" 62 4 62 8] Slice.length ( * s2))); assert { [@expl:index in bounds] [#"../index_range.rs" 62 4 62 8] _119 }; goto BB59 } BB59 { - [#"../index_range.rs" 62 4 62 13] s2 <- { s2 with current = Slice.set ( * s2) _117 ([#"../index_range.rs" 62 4 62 13] [#"../index_range.rs" 62 11 62 13] (-1 : int32)) }; + [#"../index_range.rs" 62 4 62 13] s2 <- { s2 with current = Slice.set ( * s2) _117 ([#"../index_range.rs" 62 4 62 13] [#"../index_range.rs" 62 11 62 13] (-1 : int32)) ; }; [#"../index_range.rs" 67 14 67 15] _124 <- ([#"../index_range.rs" 67 14 67 15] [#"../index_range.rs" 67 14 67 15] (2 : usize)); [#"../index_range.rs" 67 12 67 16] _126 <- ([#"../index_range.rs" 67 12 67 16] _124 < ([#"../index_range.rs" 67 12 67 16] Slice.length ( * s2))); assert { [@expl:index in bounds] [#"../index_range.rs" 67 12 67 16] _126 }; @@ -1374,8 +1374,8 @@ module IndexRange_TestRangeTo goto BB23 } BB23 { - [#"../index_range.rs" 99 12 99 25] s1 <- Borrow.borrow_mut ( * _44); - [#"../index_range.rs" 99 12 99 25] _44 <- { _44 with current = ^ s1 }; + [#"../index_range.rs" 99 12 99 25] s1 <- Borrow.borrow_final ( * _44) (Borrow.get_id _44); + [#"../index_range.rs" 99 12 99 25] _44 <- { _44 with current = ( ^ s1) ; }; [#"../index_range.rs" 100 12 100 19] _50 <- ([#"../index_range.rs" 100 12 100 19] len0 ([#"../index_range.rs" 100 12 100 19] * s1)); goto BB24 } @@ -1399,14 +1399,14 @@ module IndexRange_TestRangeTo goto BB27 } BB27 { - [#"../index_range.rs" 101 4 101 13] s1 <- { s1 with current = Slice.set ( * s1) _53 ([#"../index_range.rs" 101 4 101 13] [#"../index_range.rs" 101 11 101 13] (-1 : int32)) }; + [#"../index_range.rs" 101 4 101 13] s1 <- { s1 with current = Slice.set ( * s1) _53 ([#"../index_range.rs" 101 4 101 13] [#"../index_range.rs" 101 11 101 13] (-1 : int32)) ; }; [#"../index_range.rs" 102 6 102 7] _56 <- ([#"../index_range.rs" 102 6 102 7] [#"../index_range.rs" 102 6 102 7] (2 : usize)); [#"../index_range.rs" 102 4 102 8] _58 <- ([#"../index_range.rs" 102 4 102 8] _56 < ([#"../index_range.rs" 102 4 102 8] Slice.length ( * s1))); assert { [@expl:index in bounds] [#"../index_range.rs" 102 4 102 8] _58 }; goto BB28 } BB28 { - [#"../index_range.rs" 102 4 102 13] s1 <- { s1 with current = Slice.set ( * s1) _56 ([#"../index_range.rs" 102 4 102 13] [#"../index_range.rs" 102 11 102 13] (-1 : int32)) }; + [#"../index_range.rs" 102 4 102 13] s1 <- { s1 with current = Slice.set ( * s1) _56 ([#"../index_range.rs" 102 4 102 13] [#"../index_range.rs" 102 11 102 13] (-1 : int32)) ; }; [#"../index_range.rs" 104 14 104 15] _63 <- ([#"../index_range.rs" 104 14 104 15] [#"../index_range.rs" 104 14 104 15] (1 : usize)); [#"../index_range.rs" 104 12 104 16] _65 <- ([#"../index_range.rs" 104 12 104 16] _63 < ([#"../index_range.rs" 104 12 104 16] Slice.length ( * s1))); assert { [@expl:index in bounds] [#"../index_range.rs" 104 12 104 16] _65 }; @@ -1981,8 +1981,8 @@ module IndexRange_TestRangeFrom goto BB28 } BB28 { - [#"../index_range.rs" 138 12 138 25] s1 <- Borrow.borrow_mut ( * _54); - [#"../index_range.rs" 138 12 138 25] _54 <- { _54 with current = ^ s1 }; + [#"../index_range.rs" 138 12 138 25] s1 <- Borrow.borrow_final ( * _54) (Borrow.get_id _54); + [#"../index_range.rs" 138 12 138 25] _54 <- { _54 with current = ( ^ s1) ; }; [#"../index_range.rs" 139 12 139 19] _60 <- ([#"../index_range.rs" 139 12 139 19] len0 ([#"../index_range.rs" 139 12 139 19] * s1)); goto BB29 } @@ -2006,14 +2006,14 @@ module IndexRange_TestRangeFrom goto BB32 } BB32 { - [#"../index_range.rs" 140 4 140 13] s1 <- { s1 with current = Slice.set ( * s1) _63 ([#"../index_range.rs" 140 4 140 13] [#"../index_range.rs" 140 11 140 13] (-1 : int32)) }; + [#"../index_range.rs" 140 4 140 13] s1 <- { s1 with current = Slice.set ( * s1) _63 ([#"../index_range.rs" 140 4 140 13] [#"../index_range.rs" 140 11 140 13] (-1 : int32)) ; }; [#"../index_range.rs" 141 6 141 7] _66 <- ([#"../index_range.rs" 141 6 141 7] [#"../index_range.rs" 141 6 141 7] (1 : usize)); [#"../index_range.rs" 141 4 141 8] _68 <- ([#"../index_range.rs" 141 4 141 8] _66 < ([#"../index_range.rs" 141 4 141 8] Slice.length ( * s1))); assert { [@expl:index in bounds] [#"../index_range.rs" 141 4 141 8] _68 }; goto BB33 } BB33 { - [#"../index_range.rs" 141 4 141 13] s1 <- { s1 with current = Slice.set ( * s1) _66 ([#"../index_range.rs" 141 4 141 13] [#"../index_range.rs" 141 11 141 13] (-1 : int32)) }; + [#"../index_range.rs" 141 4 141 13] s1 <- { s1 with current = Slice.set ( * s1) _66 ([#"../index_range.rs" 141 4 141 13] [#"../index_range.rs" 141 11 141 13] (-1 : int32)) ; }; [#"../index_range.rs" 143 14 143 15] _73 <- ([#"../index_range.rs" 143 14 143 15] [#"../index_range.rs" 143 14 143 15] (2 : usize)); [#"../index_range.rs" 143 12 143 16] _75 <- ([#"../index_range.rs" 143 12 143 16] _73 < ([#"../index_range.rs" 143 12 143 16] Slice.length ( * s1))); assert { [@expl:index in bounds] [#"../index_range.rs" 143 12 143 16] _75 }; @@ -2538,8 +2538,8 @@ module IndexRange_TestRangeFull goto BB26 } BB26 { - [#"../index_range.rs" 165 12 165 24] s1 <- Borrow.borrow_mut ( * _43); - [#"../index_range.rs" 165 12 165 24] _43 <- { _43 with current = ^ s1 }; + [#"../index_range.rs" 165 12 165 24] s1 <- Borrow.borrow_final ( * _43) (Borrow.get_id _43); + [#"../index_range.rs" 165 12 165 24] _43 <- { _43 with current = ( ^ s1) ; }; [#"../index_range.rs" 166 12 166 19] _49 <- ([#"../index_range.rs" 166 12 166 19] len0 ([#"../index_range.rs" 166 12 166 19] * s1)); goto BB27 } @@ -2563,14 +2563,14 @@ module IndexRange_TestRangeFull goto BB30 } BB30 { - [#"../index_range.rs" 167 4 167 13] s1 <- { s1 with current = Slice.set ( * s1) _52 ([#"../index_range.rs" 167 4 167 13] [#"../index_range.rs" 167 11 167 13] (-1 : int32)) }; + [#"../index_range.rs" 167 4 167 13] s1 <- { s1 with current = Slice.set ( * s1) _52 ([#"../index_range.rs" 167 4 167 13] [#"../index_range.rs" 167 11 167 13] (-1 : int32)) ; }; [#"../index_range.rs" 168 6 168 7] _55 <- ([#"../index_range.rs" 168 6 168 7] [#"../index_range.rs" 168 6 168 7] (3 : usize)); [#"../index_range.rs" 168 4 168 8] _57 <- ([#"../index_range.rs" 168 4 168 8] _55 < ([#"../index_range.rs" 168 4 168 8] Slice.length ( * s1))); assert { [@expl:index in bounds] [#"../index_range.rs" 168 4 168 8] _57 }; goto BB31 } BB31 { - [#"../index_range.rs" 168 4 168 13] s1 <- { s1 with current = Slice.set ( * s1) _55 ([#"../index_range.rs" 168 4 168 13] [#"../index_range.rs" 168 11 168 13] (-1 : int32)) }; + [#"../index_range.rs" 168 4 168 13] s1 <- { s1 with current = Slice.set ( * s1) _55 ([#"../index_range.rs" 168 4 168 13] [#"../index_range.rs" 168 11 168 13] (-1 : int32)) ; }; assume { resolve0 s1 }; assume { resolve0 _43 }; [#"../index_range.rs" 170 12 170 21] _61 <- ([#"../index_range.rs" 170 12 170 21] len1 ([#"../index_range.rs" 170 12 170 21] arr)); @@ -3081,8 +3081,8 @@ module IndexRange_TestRangeToInclusive goto BB19 } BB19 { - [#"../index_range.rs" 195 12 195 26] s1 <- Borrow.borrow_mut ( * _35); - [#"../index_range.rs" 195 12 195 26] _35 <- { _35 with current = ^ s1 }; + [#"../index_range.rs" 195 12 195 26] s1 <- Borrow.borrow_final ( * _35) (Borrow.get_id _35); + [#"../index_range.rs" 195 12 195 26] _35 <- { _35 with current = ( ^ s1) ; }; [#"../index_range.rs" 196 12 196 19] _41 <- ([#"../index_range.rs" 196 12 196 19] len0 ([#"../index_range.rs" 196 12 196 19] * s1)); goto BB20 } @@ -3106,14 +3106,14 @@ module IndexRange_TestRangeToInclusive goto BB23 } BB23 { - [#"../index_range.rs" 197 4 197 13] s1 <- { s1 with current = Slice.set ( * s1) _44 ([#"../index_range.rs" 197 4 197 13] [#"../index_range.rs" 197 11 197 13] (-1 : int32)) }; + [#"../index_range.rs" 197 4 197 13] s1 <- { s1 with current = Slice.set ( * s1) _44 ([#"../index_range.rs" 197 4 197 13] [#"../index_range.rs" 197 11 197 13] (-1 : int32)) ; }; [#"../index_range.rs" 198 6 198 7] _47 <- ([#"../index_range.rs" 198 6 198 7] [#"../index_range.rs" 198 6 198 7] (2 : usize)); [#"../index_range.rs" 198 4 198 8] _49 <- ([#"../index_range.rs" 198 4 198 8] _47 < ([#"../index_range.rs" 198 4 198 8] Slice.length ( * s1))); assert { [@expl:index in bounds] [#"../index_range.rs" 198 4 198 8] _49 }; goto BB24 } BB24 { - [#"../index_range.rs" 198 4 198 13] s1 <- { s1 with current = Slice.set ( * s1) _47 ([#"../index_range.rs" 198 4 198 13] [#"../index_range.rs" 198 11 198 13] (-1 : int32)) }; + [#"../index_range.rs" 198 4 198 13] s1 <- { s1 with current = Slice.set ( * s1) _47 ([#"../index_range.rs" 198 4 198 13] [#"../index_range.rs" 198 11 198 13] (-1 : int32)) ; }; [#"../index_range.rs" 200 14 200 15] _54 <- ([#"../index_range.rs" 200 14 200 15] [#"../index_range.rs" 200 14 200 15] (1 : usize)); [#"../index_range.rs" 200 12 200 16] _56 <- ([#"../index_range.rs" 200 12 200 16] _54 < ([#"../index_range.rs" 200 12 200 16] Slice.length ( * s1))); assert { [@expl:index in bounds] [#"../index_range.rs" 200 12 200 16] _56 }; diff --git a/creusot/tests/should_succeed/index_range/why3session.xml b/creusot/tests/should_succeed/index_range/why3session.xml index c9c701d6a5..f051e0dd9c 100644 --- a/creusot/tests/should_succeed/index_range/why3session.xml +++ b/creusot/tests/should_succeed/index_range/why3session.xml @@ -9,12 +9,12 @@ - + - + @@ -36,16 +36,16 @@ - + - + - + @@ -69,136 +69,136 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -207,27 +207,27 @@ - + - + - + - + - + diff --git a/creusot/tests/should_succeed/index_range/why3shapes.gz b/creusot/tests/should_succeed/index_range/why3shapes.gz index 9689962c0c02b4090b73b8f037349ee670516316..713c791c00babd459f2e36c493a08de57e70bcf4 100644 GIT binary patch literal 4531 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 R5c@=+{||`<9gMtW008q0(Bc39 literal 4508 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 z zJ8ugr^+G|Vsv0wtP2+WqYHs0_eFj1=6jZ8q-WF8qeCQZ}Orc7jhOt!}C+#y9^+G|V zYUgc1rOro>0Sk_0({|%-)xt%<3`D+AP^sE^TTrRadd?bmAb9i$7(IEk1k5Mx#?)(g~NG5&-T( z%1%NjMF*|}+kxqTI?x@c4zL3r1v(I&>uhHZ&SXVUG-aEdMT?p=*STnX@Y<8P0OEnP z``qzTv`%8wN<}Y$ZILh;d_}T?$Ov<1INXW@% z$TC}lmghm**YOd4k&2j7@>wc0A{UfSlh?s1o4n0j4q{Uwf2o!t1v2(hR4N)QXeo6; zAF1dfNxPnL+mv0WY^O}8 zs8jljsTP!qhZ0!}STuxENRwPLIaCjAuT_iJ(ym+}Wim-(&FsjD{li=E{K~yhQ8ew? zY1wJ`l6t*OY+C$wOLkV40?{juC=gUI0SCS8FR!6m0Z$a9h$&}fSu4i`(4PGit&*tP zl+|l#Z*;p*5(f%`>>T(gC`ix2*;3F=JGKAym)Fj2B?Jcx5jbGPj5Y#-HXMJ0V?tn} z-F4b_+PoGFcCO+vF!?C57i2LZS*v4V%d=D}41)H*cy%zmR{6sI2ZCgbJ_rtT#v?id zm=)RvM*fO;e2j_`MF4AZ@V=Nz%p$MPyz)a)DrgZHgCVj_bO;M;Nn@|9Nm_w8W3!3^mobH_J9N);!LFagC z?hi1v%u|XSZd?&gm=wtsvbrP#Mga%Q`i>m^QD?_aMACDSXieZn*?97xiwj&issak? zivv;rSWZ+ymUNx7oil&bIR`E~xirpNK|me2qO%c`MJ|PEj@DK<&Jp;J2N3E{H-A}I zbIyEH;3|)UCQ#CX%b#F4L+1o!m_H9BcqC!|v^=tYp5WybS0P~ zIcU(}Gga~{v;sI=N}MUP@ns*QGbKWBgRRjUce^`k?2lY$xojv{E++{&{Oe?*aS{9w`;i42 zhm}7bkyX8MxZ)5E*pL-aM2Ynn!I+ekFj#~ngR|eh@pwM|Aqk98Y7-z?>*`OBf{k^< z&&V{^JSg9|{Hz1L;5gTJDA44Rqh@Zi$vGrZEpz0Ohd>^K)p5GVfB44fxtzub57vYP z0er%gxzw`8JLWp4K(zSz8?Qf!S6!4g3T06syokJj>w12IS~w%~uzsU`$ z?K9^RLP1}g^42P4f)OfmZUm}IvS{5*RV=JnT2;c`8__>yb1H-=h*M9_)J?!b^}9$m zhX`C&+gypJk?1$Fe{m&l>egtHs0=S~GV;9-9E-Uw#~c){thy3x-iZBNE7laX&P9Xc zvXkRPPT2~hP2wQUL~gA3johEK&Ot26Xzg_pQDrRJvz;;n7?ifbZ>-k75&7H!d*&S0 zCTpa(9=P&~2~rSX&{^RN?O5p>na@_Q!WgE}V$hUQa5kZJMY(LVWQNPeD%~4#(@|wz zca$TmwMC3ThP*_S4kLLN(vB6rkvGS}5|mFd$KqmuLY7NaRdV2kTn3l(vDInu)e_~| z%(5o!v+)MVrkFH{!qXQLeUPVC_7#)Gc4W|J>tx9!9po$nWw6Q%iGE7x}(3qt$Ad)V}tp8>(U5H86W2~qk)~}f<(3VOr^#^uBn+=oZ zmA}_SwK5KDmG!Fw!Y9a@v&9&6 - + diff --git a/creusot/tests/should_succeed/inplace_list_reversal/why3shapes.gz b/creusot/tests/should_succeed/inplace_list_reversal/why3shapes.gz index dd4c3810d0a4ddc9771dd5671868b7fc7069b29b..e5dbb9b484f73107b88098cb644c0e9bf1fa6f38 100644 GIT binary patch literal 417 zcmV;S0bc$eiwFP!00000|AkV)Zrd;nz56SC>*kY0$+lde2g87n0L4xPj}6#ZZjEMk zW~a&TPqgGT?O{9V>G4tIBlROo=QldKIX$~+?#JOiEz;~~a{5F4a0V1MLWy#P0>LIt zLk~2$^Nx;3H?*Fs5X>z@nHLXkLQT!?SAW>j!y*!PLB_MqIL!3)aXdIc&bB10RJzDFnGtfKo@9K*_n2o5#c1`ChASY`Usfz(QGlt13&B#@fhYcR{JV@EX?s zVcPr9&X-WD?&1~CsJ^=O_u%t%Z3Iw>Z5X5y^$I@wOSHtrGMyPSbdC?cMKp zKMCskfevV>Z_#}5t5&~i^{ZAZw@Z?WU-`$9Z2dh$V*bCadX40*hQflEBY7ZYz09e^ z%Eqp$IE3v*zG)8H;kPS}i1ut~ddO1>@+UDf74TefNAS4T>1GPabAxAG6E-DxThHZ>IQY#;F_n$2g5w57FU^y8g(K=>P#?feg8h%97SJ zn&XD{d(&?%mm|-v8CqF!Z$^|6#!xlwGna&^&#Pc4YyW%7BD_u~sW+!N$FE;USjO!z t#@1OBQ6@n(3^J9nRBp*Ao;60~l33Gn%41oHidRsv=m(eGGKDJx003GM!J_~G diff --git a/creusot/tests/should_succeed/invariant_moves.mlcfg b/creusot/tests/should_succeed/invariant_moves.mlcfg index fd16374e63..54b73fee8c 100644 --- a/creusot/tests/should_succeed/invariant_moves.mlcfg +++ b/creusot/tests/should_succeed/invariant_moves.mlcfg @@ -167,8 +167,8 @@ module InvariantMoves_TestInvariantMove BB3 { [#"../invariant_moves.rs" 7 26 7 34] _6 <- Borrow.borrow_mut x; [#"../invariant_moves.rs" 7 26 7 34] x <- ^ _6; - [#"../invariant_moves.rs" 7 26 7 40] _5 <- Borrow.borrow_mut ( * _6); - [#"../invariant_moves.rs" 7 26 7 40] _6 <- { _6 with current = ^ _5 }; + [#"../invariant_moves.rs" 7 26 7 40] _5 <- Borrow.borrow_final ( * _6) (Borrow.get_id _6); + [#"../invariant_moves.rs" 7 26 7 40] _6 <- { _6 with current = ( ^ _5) ; }; [#"../invariant_moves.rs" 7 26 7 40] _4 <- ([#"../invariant_moves.rs" 7 26 7 40] pop0 _5); _5 <- any borrowed (Alloc_Vec_Vec_Type.t_vec uint32 (Alloc_Alloc_Global_Type.t_global)); goto BB4 diff --git a/creusot/tests/should_succeed/ite_normalize/why3session.xml b/creusot/tests/should_succeed/ite_normalize/why3session.xml index 5ead557f0c..2d0c8562dc 100644 --- a/creusot/tests/should_succeed/ite_normalize/why3session.xml +++ b/creusot/tests/should_succeed/ite_normalize/why3session.xml @@ -29,7 +29,7 @@ - + diff --git a/creusot/tests/should_succeed/ite_normalize/why3shapes.gz b/creusot/tests/should_succeed/ite_normalize/why3shapes.gz index 1089268b05420399f93692ee4b5abb30cdf15e96..abfcd5003a176233ba92ce759fc6c4d45a649c10 100644 GIT binary patch literal 1393 zcmV-%1&;b3iwFP!00000|CLuuZ{s!)zWZ0`)^<;v;k!T&Mqoj?bPrwdSc8(Nt^vnR zZ8gUB*LOrpwqEIOa>;l&oEN`&=;u$_^{amk*X%7^u7~sK*Gy%fe%Z8t`@`uC9Lsx> zImkEuH^&`5KXw28)Bd^n@->`x$7^uL0ZHJNP5>RiZkz4{L>4%;iv)9aIIu;5VpM(#52l}PEwRU zJ4k`;rNDM)U>&F^1!k6y#MQHeB(9oeB%f!b?L%z)z}itX8~2no=Sx-{&!_OyX8Gde z96{k7ety4yXv4-IuKUyZ^5Tz&e?!e2e}1CB}KR$!u5Q73uH)b zQ>GDDL=!A1!#zRrlgn&s+_~m90Aq$aNEihz}c;6vI*|fhp|zQotKUx@UQ7$ zE4XIw;d=fABltQPAvd0+S7wCS?jh!xTjUZJ9B#JV0}4ab=Z??=p@>+-(mT`iel!mk zo*ys5O$R3-oe*6iObrrm;e_Bz*3x;7(NzgVbskFA6T%YlAy?@R@2g8tm&?b_FE!m9 z*ReomMaxsgb3MJmx#N^PndfVoV!I$C6FhN9nqa1h-q1L-tD0gMIO`4U1HFMQ-sT4Y zGqi*D;!oGt^L5!2AdZzZG3G}w86ML^JDwlYBb`P_95J&axttjkS!D8QjuR7qpbFtJ z0NL&qt80;|mEi1>rTf`{Y*`2x_0lo59{IVSG>O1Pi~25}yU}8nMu?Y;Xlij$w;G6U zXnxd)PV;MSL?t5xSKv{%9SGA6;tv{;v&T$BP|RL4art-Q-@V@e+Pl;JE~Fl7k?hu@ zM2c=|CXy<7Akm5ZzD>!;Hl^}d0oTLJ>+#SWB9gbhK8G$x?Y=snS`s8C!Jb_9e^CX} zrgl7@Z~K>X9gfTy-=6n}Q=3NFALo~DB<=DzT+@7|2A5jo*i6S-+UdHF_?{sy218u# z^6@l9F&?ePr{ySmpq3t}RS#6^m;dj9zI$M%9)Ov+<2#6Sy+5_hD_z->jp+)2y|P>E zuu+tz1WTJJ6181(2g#i}gxA42w0EE4y2jb~cYJtm^B-6BJ8fKdJ>8Ggfh?6pqD;S| z!hK2YR+qH_ggjoD^*KztF3w7fdO_S(S9cMJYx#8lB;=(Q3$sxMDsDz{RZ~(lYp8nB zP@6|+`g1~bGd$OFi4s&%v_{2nHFvsS2*;??xQ057PQQnH4Fl}-9r$_%e2LrC60}-< zVdnpInpEk-@{A7+rg!t({%bhChRdQeh`4c3Q+ZyL(rP6+`A$SQ1SE%e)Gl8xR%u6| z*0yZgkFGd4-G3GKUvKH-C%GEGbMj4id2PS#<7eiIY+9%W+5TX}*;pG&hO|VLCa@-8 zRdVI21{#pU3dJ*CU;zc&R1MUImDuP2S{TV$C91Njc&R}kR+%isrW8_hSvDqMS(mJ- zmBQeKs4HWnWtizgZ5q?C+CpinMzV_6rRUm`U}c0?wk|VUn2pCK2x%)1lFLw*6_WxD z9m|Si#p(=90lENHfGj{1zzZNpp#ZiqOeu<~6s-0PDH3jgF}hp(8U@xFvI6YJTh4tD zs&1G;uQ;>Tm{OJuxaNVC8DfDDgGcm6GF1ww&_nGN2vbu8P?4pQ+bGJTs8`xD=}YTn zDN1s@Y;;{4tc0X+fkjafMFVBQn!tr7wcsljcx|kvYp9#Xh>_@jBA1tbN)P}5DZs6V literal 1394 zcmV-&1&#V2iwFP!00000|CLuukK;BBzUNou)^<-K^)ApuFo@x~bPrwV*g&?WZh%ZO zP0|UrzrM6&Cw@(LXXX%wqR3Bt=jTuB%UAyzF6*~&zU)uOU)O5=>6g{@Z@)jjfn!BS zG6%)V|K_;E=co45Kkc65m#^WtJzRn_4oCtwbOPuAwwrt(AhE!yZ6cVn{gG`M*2#2W zobLI${jQxzeC7A?N=5=1*#(D*DTmB!#}q?mP0SI%+wInYcK+-@CNR=LwgSQd&lLA> z{=9q3_er+D_T~If=sz;2@T9l@bXaVjvY(JYlLT@HrbrYz1ftU85H_6@q%-o6&Qjz) z+e?A%q`&F=1!m%p%+(WzWUiWcq?mf-+CA~wJ?uJo&B{Hk^%3ncPggbGV!iZ-ES{ zP4+b6f@n?)@^D9x{OB?p8+R_=`ox%I9poGZIle(zofBufpvmTR9|y)JJ$70;ijsdx z2V2N%_Fi63Loi5R2ZPK_CppTDa<&b`)N?am!i>YsrVXGlM15`v-4lw4*;_g=vBMD` z5S||q;igR|A)OFyA&dO6`J-jPi*?)&vtx6hq_CE^128z)5dlALtEi7MmYP zn7$oc&;EFMJzeHa0n%8>6JvS=qv0_=w8Qx^KGJ!Fq!BYYlJl8CFH1~5_Hkz74^$yM z1|ZwsQgzKdweUDQXX$P>Ae$EgCcSh_tw(|`Xx9thj4&o0Qk&|HNAt)x%%v}E6^l#(WC+!_{w+pGqS|r=G zD3hX{nwg|Z?n!i_xNlSPu}!HWRlsHc@_N|EeahsGZ%(20(REj!j#m;SCZ#<=_J2_Y z(x!GeoNl|9Qxgu%8Gk+P_Qz`;Wq+Jr+L5#^(s0f5l^R@bkwY^rYi_6QKH__ZxabXW zxh;m%6vc3~8lRV=gh0&^s6_-S_sjoBpzjFG7y+0O9N(r$+xv6dywH^$*%+??*eScE z4x2=2O0c|%B2k+qI7o1s5MFz5Xz!TPy2jb?dkQ?a#gD7{oi?t!p7u-bK$glPQ>NQd z;l8A{tIN^=LY^*6`W)t67bhh~y&&zXi@OMDs4t`QBzhlX{dVE zP~+oi`g6|c*oSMrL5_Acw1X+S8ftNr)p#-)vOeu!E60GqIBS>z5F=d;^Hz=@KBP+qKysS+? z7He-fivsG1guD^4V%7_0*N7!TdVFOnk0LgK2Sx8AFh+r8P|FGpNRvc)67@=3CVgeS ztVC5+brp5f7_5bik^xJiB8i5^f;FU1lN*4%5IA{B(>2ueY%vi14^ - + - + @@ -27,7 +27,7 @@ - + diff --git a/creusot/tests/should_succeed/iterators/01_range/why3shapes.gz b/creusot/tests/should_succeed/iterators/01_range/why3shapes.gz index 9a664c2c3137327f6d2849c91e38c5e0d466bf68..8115206ca5b6fbe4fa3be11db54f4b9c3c18f747 100644 GIT binary patch literal 934 zcmV;X16lkZiwFP!00000|D9D^Z>vTSe&<*4cG^Uhc4n_s=Tx$+AdrsELo4lLtp%1G zt2U(IB<;WN?1CLgoT#lI%+P)t%dIFES`3QK(v5uZZMM_kx-r?hx<5V~{K+>V z;db|}@BB-!yCLPc@9xQ??<~6CqtkEw(OV1Ue(SziI4k(Z4SwtoPo7!5A&YiZKMeh| zZ$2IWAg^CtckivT(zW}}9VpelvFwgq-M%|1@rnMeamAqMqwE!0vC`R4l0qA})C z7G)kK={o;xQN*nDw3yKY-A_T7dbP+)_j!3HhS9tiE1B}m9L|{w8qPup9WG8Gq-Law zu9r;I-^Jx3;n%RXkeHagGQVxV=3YzKblBLsx;6`HQj&3f?XNo?P98r^5FnPHm zKd5W$C+$mO4#fZHH@^T(yg|@WJ;}7Oc&{N=THqwFfC2apFvze128a)U0fJJWfx+|5 zy2g9hdj&m!k1Bx8<^t1|L4e6biD^<6ag)VEcBVe2TauJs z;I9L(dd#;cHq$V2KCAhB=C#SgZ~Y+>*PtjCNK}M4alzq~np;`^w=8;{Wx6*E_m*hY zNRuhlO{;{5tZ8c_Ozpfgs#dy9py9R~VXe3e;ikjZSb;eU&s6>Eb87QncqgYzE zX_*1f8YMMWs!jn5fC5;N6(-@>V&y}_XtXoD65J@mJ$H?%oM}=p1?U1)0kQy508d=w z+e$#4DOV|`IaJVkLvt&oXmp4n*(yYHp0U=ns;w1WlQ5opZ)y~kGDf)=f@~G?53%Ev I0tE>G0OVBHg8%>k literal 930 zcmV;T16}+diwFP!00000|D9FaZsRr(eb-m$ZQBF|IKz9fTfhh+NWfwrT7Zu=Xpzbq zb)-~slJ@UAlw?OroS>}%nZvo0bB^@GRX%+84{^w!Vn6J=_UByXS3hR{q3^-Dt*$DODaT1<+~(v5uZZMI|Y+abI0b$9=8h{qUG z!kg{4u8l9j{)&{tzP%%lu65{tADw>d?xS;1?Qi@S2PXyJ_&yHZ;VCkwH)PR%*Y$n( z9K)ykKgjD>-`+*1ob=7U^#{jp$;RD_NEP^N zuiLqybc{ti%>VM`{nT$Pu?McMP8aabd7TNJn>g$O)Rb*+{NTaQ$6|gwr<@0iiXcn7< z1D{%(42Rg>9lw*kjlDy)fa$CQb~ZYo;ITGLC5=N}R4c@wUXF!Ys-f6ip4n&|^C*Y1 z7$xc3`0P-OS!s1>X+i%}5~f}q^2&c+?ulG<-m{fV#byrY%qIrxa2%QjM%;lIa|!^d?tBBjdfs(YQ=j{ zmxxc=m&6>1`lH{>eKX!5=uth%G_mnsQ>=8rNnQa1@Eu@~VFe5j9{>Xcr9J_J7n^mB z_ptX0dH^3)0B7d{)0IJj$wZ0iq-?~E9XIwweVWY(PiJc4dZPMVTh}if9v<(vBfDo} z@x<>*L(rIU^i`ruO=@6t_l9b-v zuLCc7%(o{t(_!SiSM&bFYg44(`WqxJK~XG_s0eZ5jKe84ce46#S@b%~bZ?mMEz>GU zV-@PqC=tPirZ&RVK6;~SrJEc|mPrqqnFs-(kuq{CG48-b9fdIlo1B-JdDR4qQ3fGx z+-Z!SGJ&zyqSwKMT$Uo^ypgOC9BUs?M2$wGr1GMsw{UHFu1l4v9ka%I45G1`Ya605 zwW(zc)Fxoe0ZV`qSZPa>1&~_rK$snhpjgehrPXKN%2UCJBL6sm&5GC*o0E|Yo z4C$rFy=<7pMl;dSsYP8+A$ApF>Yz * Seq.get (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner self)) i = * Seq.get (Seq.(++) visited (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner tl))) i /\ ^ Seq.get (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner self)) i = ^ Seq.get (Seq.(++) visited (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner tl))) i) val produces0 [#"../02_iter_mut.rs" 37 4 37 65] (self : C02IterMut_IterMut_Type.t_itermut t) (visited : Seq.seq (borrowed t)) (tl : C02IterMut_IterMut_Type.t_itermut t) : bool ensures { result = produces0 self visited tl } use seq.Seq - let rec ghost function produces_refl [#"../02_iter_mut.rs" 44 4 44 29] (a : C02IterMut_IterMut_Type.t_itermut t) : () - requires {[#"../02_iter_mut.rs" 44 21 44 22] inv0 a} - ensures { [#"../02_iter_mut.rs" 43 14 43 39] produces0 a (Seq.empty ) a } + let rec ghost function produces_refl [#"../02_iter_mut.rs" 50 4 50 29] (a : C02IterMut_IterMut_Type.t_itermut t) : () + requires {[#"../02_iter_mut.rs" 50 21 50 22] inv0 a} + ensures { [#"../02_iter_mut.rs" 49 14 49 39] produces0 a (Seq.empty ) a } = [@vc:do_not_keep_trace] [@vc:sp] - [#"../02_iter_mut.rs" 41 4 41 10] () + [#"../02_iter_mut.rs" 47 4 47 10] () end module C02IterMut_Impl1_ProducesTrans_Impl type t @@ -188,7 +187,6 @@ module C02IterMut_Impl1_ProducesTrans_Impl val index_logic1 [@inline:trivial] (self : slice t) (ix : int) : t ensures { result = index_logic1 self ix } - use seq.Seq function shallow_model0 (self : borrowed (slice t)) : Seq.seq t = [#"../../../../../creusot-contracts/src/model.rs" 101 8 101 31] shallow_model1 ( * self) val shallow_model0 (self : borrowed (slice t)) : Seq.seq t @@ -204,22 +202,22 @@ module C02IterMut_Impl1_ProducesTrans_Impl predicate produces0 [#"../02_iter_mut.rs" 37 4 37 65] (self : C02IterMut_IterMut_Type.t_itermut t) (visited : Seq.seq (borrowed t)) (tl : C02IterMut_IterMut_Type.t_itermut t) = - [#"../02_iter_mut.rs" 36 4 36 16] Seq.(==) (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner self)) (Seq.(++) visited (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner tl))) + [#"../02_iter_mut.rs" 39 12 43 13] Seq.length (shallow_model0 (C02IterMut_IterMut_Type.itermut_inner self)) = Seq.length visited + Seq.length (shallow_model0 (C02IterMut_IterMut_Type.itermut_inner tl)) /\ (forall i : int . 0 <= i /\ i < Seq.length (shallow_model0 (C02IterMut_IterMut_Type.itermut_inner self)) -> * Seq.get (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner self)) i = * Seq.get (Seq.(++) visited (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner tl))) i /\ ^ Seq.get (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner self)) i = ^ Seq.get (Seq.(++) visited (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner tl))) i) val produces0 [#"../02_iter_mut.rs" 37 4 37 65] (self : C02IterMut_IterMut_Type.t_itermut t) (visited : Seq.seq (borrowed t)) (tl : C02IterMut_IterMut_Type.t_itermut t) : bool ensures { result = produces0 self visited tl } - let rec ghost function produces_trans [#"../02_iter_mut.rs" 51 4 51 90] (a : C02IterMut_IterMut_Type.t_itermut t) (ab : Seq.seq (borrowed t)) (b : C02IterMut_IterMut_Type.t_itermut t) (bc : Seq.seq (borrowed t)) (c : C02IterMut_IterMut_Type.t_itermut t) : () - requires {[#"../02_iter_mut.rs" 48 15 48 32] produces0 a ab b} - requires {[#"../02_iter_mut.rs" 49 15 49 32] produces0 b bc c} - requires {[#"../02_iter_mut.rs" 51 22 51 23] inv0 a} - requires {[#"../02_iter_mut.rs" 51 31 51 33] inv1 ab} - requires {[#"../02_iter_mut.rs" 51 52 51 53] inv0 b} - requires {[#"../02_iter_mut.rs" 51 61 51 63] inv1 bc} - requires {[#"../02_iter_mut.rs" 51 82 51 83] inv0 c} - ensures { [#"../02_iter_mut.rs" 50 14 50 42] produces0 a (Seq.(++) ab bc) c } + let rec ghost function produces_trans [#"../02_iter_mut.rs" 57 4 57 90] (a : C02IterMut_IterMut_Type.t_itermut t) (ab : Seq.seq (borrowed t)) (b : C02IterMut_IterMut_Type.t_itermut t) (bc : Seq.seq (borrowed t)) (c : C02IterMut_IterMut_Type.t_itermut t) : () + requires {[#"../02_iter_mut.rs" 54 15 54 32] produces0 a ab b} + requires {[#"../02_iter_mut.rs" 55 15 55 32] produces0 b bc c} + requires {[#"../02_iter_mut.rs" 57 22 57 23] inv0 a} + requires {[#"../02_iter_mut.rs" 57 31 57 33] inv1 ab} + requires {[#"../02_iter_mut.rs" 57 52 57 53] inv0 b} + requires {[#"../02_iter_mut.rs" 57 61 57 63] inv1 bc} + requires {[#"../02_iter_mut.rs" 57 82 57 83] inv0 c} + ensures { [#"../02_iter_mut.rs" 56 14 56 42] produces0 a (Seq.(++) ab bc) c } = [@vc:do_not_keep_trace] [@vc:sp] - [#"../02_iter_mut.rs" 46 4 46 10] () + [#"../02_iter_mut.rs" 52 4 52 10] () end module Core_Option_Option_Type type t_option 't = @@ -335,7 +333,6 @@ module C02IterMut_Impl1_Next val index_logic0 [@inline:trivial] (self : slice t) (ix : int) : t ensures { result = index_logic0 self ix } - use seq.Seq function shallow_model1 (self : borrowed (slice t)) : Seq.seq t = [#"../../../../../creusot-contracts/src/model.rs" 101 8 101 31] shallow_model0 ( * self) val shallow_model1 (self : borrowed (slice t)) : Seq.seq t @@ -351,23 +348,23 @@ module C02IterMut_Impl1_Next predicate produces0 [#"../02_iter_mut.rs" 37 4 37 65] (self : C02IterMut_IterMut_Type.t_itermut t) (visited : Seq.seq (borrowed t)) (tl : C02IterMut_IterMut_Type.t_itermut t) = - [#"../02_iter_mut.rs" 36 4 36 16] Seq.(==) (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner self)) (Seq.(++) visited (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner tl))) + [#"../02_iter_mut.rs" 39 12 43 13] Seq.length (shallow_model1 (C02IterMut_IterMut_Type.itermut_inner self)) = Seq.length visited + Seq.length (shallow_model1 (C02IterMut_IterMut_Type.itermut_inner tl)) /\ (forall i : int . 0 <= i /\ i < Seq.length (shallow_model1 (C02IterMut_IterMut_Type.itermut_inner self)) -> * Seq.get (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner self)) i = * Seq.get (Seq.(++) visited (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner tl))) i /\ ^ Seq.get (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner self)) i = ^ Seq.get (Seq.(++) visited (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner tl))) i) val produces0 [#"../02_iter_mut.rs" 37 4 37 65] (self : C02IterMut_IterMut_Type.t_itermut t) (visited : Seq.seq (borrowed t)) (tl : C02IterMut_IterMut_Type.t_itermut t) : bool ensures { result = produces0 self visited tl } use seq.Seq use seq.Seq use seq.Seq + predicate completed0 [#"../02_iter_mut.rs" 31 4 31 35] (self : borrowed (C02IterMut_IterMut_Type.t_itermut t)) = + [#"../02_iter_mut.rs" 32 8 32 88] shallow_model1 (C02IterMut_IterMut_Type.itermut_inner ( * self)) = shallow_model1 (C02IterMut_IterMut_Type.itermut_inner ( ^ self)) /\ Seq.(==) (shallow_model1 (C02IterMut_IterMut_Type.itermut_inner ( * self))) (Seq.empty ) + val completed0 [#"../02_iter_mut.rs" 31 4 31 35] (self : borrowed (C02IterMut_IterMut_Type.t_itermut t)) : bool + ensures { result = completed0 self } + predicate resolve0 (self : borrowed (C02IterMut_IterMut_Type.t_itermut t)) = [#"../../../../../creusot-contracts/src/resolve.rs" 25 20 25 34] ^ self = * self val resolve0 (self : borrowed (C02IterMut_IterMut_Type.t_itermut t)) : bool ensures { result = resolve0 self } - predicate completed0 [#"../02_iter_mut.rs" 31 4 31 35] (self : borrowed (C02IterMut_IterMut_Type.t_itermut t)) = - [#"../02_iter_mut.rs" 32 8 32 70] resolve0 self /\ Seq.(==) (shallow_model1 (C02IterMut_IterMut_Type.itermut_inner ( * self))) (Seq.empty ) - val completed0 [#"../02_iter_mut.rs" 31 4 31 35] (self : borrowed (C02IterMut_IterMut_Type.t_itermut t)) : bool - ensures { result = completed0 self } - use seq_ext.SeqExt function tail0 (self : Seq.seq t) : Seq.seq t = [#"../../../../../creusot-contracts/src/logic/seq.rs" 52 8 52 39] SeqExt.subsequence self 1 (Seq.length self) @@ -378,17 +375,17 @@ module C02IterMut_Impl1_Next requires {inv3 self} ensures { [#"../../../../../creusot-contracts/src/std/slice.rs" 278 18 285 9] match result with | Core_Option_Option_Type.C_Some r -> * r = index_logic0 ( * * self) 0 /\ ^ r = index_logic0 ( ^ * self) 0 /\ Seq.length (shallow_model0 ( * * self)) > 0 /\ Seq.length (shallow_model0 ( ^ * self)) > 0 /\ shallow_model0 ( * ^ self) = tail0 (shallow_model0 ( * * self)) /\ shallow_model0 ( ^ ^ self) = tail0 (shallow_model0 ( ^ * self)) - | Core_Option_Option_Type.C_None -> ^ self = * self /\ Seq.length (shallow_model0 ( * * self)) = 0 + | Core_Option_Option_Type.C_None -> Seq.length (shallow_model0 ( * ^ self)) = 0 /\ Seq.length (shallow_model0 ( ^ * self)) = 0 /\ Seq.length (shallow_model0 ( * * self)) = 0 /\ Seq.length (shallow_model0 ( ^ ^ self)) = 0 end } ensures { inv2 result } - let rec cfg next [#"../02_iter_mut.rs" 57 4 57 44] [@cfg:stackify] [@cfg:subregion_analysis] (self : borrowed (C02IterMut_IterMut_Type.t_itermut t)) : Core_Option_Option_Type.t_option (borrowed t) - requires {[#"../02_iter_mut.rs" 57 17 57 21] inv1 self} - ensures { [#"../02_iter_mut.rs" 53 14 56 5] match result with + let rec cfg next [#"../02_iter_mut.rs" 63 4 63 44] [@cfg:stackify] [@cfg:subregion_analysis] (self : borrowed (C02IterMut_IterMut_Type.t_itermut t)) : Core_Option_Option_Type.t_option (borrowed t) + requires {[#"../02_iter_mut.rs" 63 17 63 21] inv1 self} + ensures { [#"../02_iter_mut.rs" 59 14 62 5] match result with | Core_Option_Option_Type.C_None -> completed0 self | Core_Option_Option_Type.C_Some v -> produces0 ( * self) (Seq.singleton v) ( ^ self) end } - ensures { [#"../02_iter_mut.rs" 57 26 57 44] inv2 result } + ensures { [#"../02_iter_mut.rs" 63 26 63 44] inv2 result } = [@vc:do_not_keep_trace] [@vc:sp] var _0 : Core_Option_Option_Type.t_option (borrowed t); @@ -398,10 +395,10 @@ module C02IterMut_Impl1_Next goto BB0 } BB0 { - [#"../02_iter_mut.rs" 58 8 58 37] _3 <- Borrow.borrow_mut (C02IterMut_IterMut_Type.itermut_inner ( * self)); - [#"../02_iter_mut.rs" 58 8 58 37] self <- { self with current = (let C02IterMut_IterMut_Type.C_IterMut x0 = * self in C02IterMut_IterMut_Type.C_IterMut ( ^ _3)) }; + [#"../02_iter_mut.rs" 64 8 64 37] _3 <- Borrow.borrow_final (C02IterMut_IterMut_Type.itermut_inner ( * self)) (Borrow.inherit_id (Borrow.get_id self) 1); + [#"../02_iter_mut.rs" 64 8 64 37] self <- { self with current = (let C02IterMut_IterMut_Type.C_IterMut x0 = * self in C02IterMut_IterMut_Type.C_IterMut ( ^ _3)) ; }; assume { inv0 ( ^ _3) }; - [#"../02_iter_mut.rs" 58 8 58 37] _0 <- ([#"../02_iter_mut.rs" 58 8 58 37] take_first_mut0 _3); + [#"../02_iter_mut.rs" 64 8 64 37] _0 <- ([#"../02_iter_mut.rs" 64 8 64 37] take_first_mut0 _3); _3 <- any borrowed (borrowed (slice t)); goto BB1 } @@ -470,10 +467,10 @@ module C02IterMut_Impl2_IntoIter axiom inv0 : forall x : C02IterMut_IterMut_Type.t_itermut t . inv0 x = (invariant0 x /\ match x with | C02IterMut_IterMut_Type.C_IterMut inner -> true end) - let rec cfg into_iter [#"../02_iter_mut.rs" 64 4 64 30] [@cfg:stackify] [@cfg:subregion_analysis] (self : C02IterMut_IterMut_Type.t_itermut t) : C02IterMut_IterMut_Type.t_itermut t - requires {[#"../02_iter_mut.rs" 64 17 64 21] inv0 self} - ensures { [#"../02_iter_mut.rs" 63 14 63 28] result = self } - ensures { [#"../02_iter_mut.rs" 64 26 64 30] inv0 result } + let rec cfg into_iter [#"../02_iter_mut.rs" 70 4 70 30] [@cfg:stackify] [@cfg:subregion_analysis] (self : C02IterMut_IterMut_Type.t_itermut t) : C02IterMut_IterMut_Type.t_itermut t + requires {[#"../02_iter_mut.rs" 70 17 70 21] inv0 self} + ensures { [#"../02_iter_mut.rs" 69 14 69 28] result = self } + ensures { [#"../02_iter_mut.rs" 70 26 70 30] inv0 result } = [@vc:do_not_keep_trace] [@vc:sp] var _0 : C02IterMut_IterMut_Type.t_itermut t; @@ -482,8 +479,8 @@ module C02IterMut_Impl2_IntoIter goto BB0 } BB0 { - [#"../02_iter_mut.rs" 65 8 65 12] _0 <- ([#"../02_iter_mut.rs" 65 8 65 12] self); - [#"../02_iter_mut.rs" 65 8 65 12] self <- any C02IterMut_IterMut_Type.t_itermut t; + [#"../02_iter_mut.rs" 71 8 71 12] _0 <- ([#"../02_iter_mut.rs" 71 8 71 12] self); + [#"../02_iter_mut.rs" 71 8 71 12] self <- any C02IterMut_IterMut_Type.t_itermut t; return _0 } @@ -674,12 +671,12 @@ module C02IterMut_IterMut ensures { [#"../../../../../creusot-contracts/src/std/vec.rs" 136 26 136 55] Seq.length (shallow_model3 ( ^ self)) = Seq.length (shallow_model1 self) } ensures { inv2 result } - let rec cfg iter_mut [#"../02_iter_mut.rs" 72 0 72 55] [@cfg:stackify] [@cfg:subregion_analysis] (v : borrowed (Alloc_Vec_Vec_Type.t_vec t (Alloc_Alloc_Global_Type.t_global))) : C02IterMut_IterMut_Type.t_itermut t - requires {[#"../02_iter_mut.rs" 72 19 72 20] inv3 v} - ensures { [#"../02_iter_mut.rs" 69 10 69 29] shallow_model0 (C02IterMut_IterMut_Type.itermut_inner result) = shallow_model1 v } - ensures { [#"../02_iter_mut.rs" 70 10 70 35] shallow_model2 ( ^ C02IterMut_IterMut_Type.itermut_inner result) = shallow_model3 ( ^ v) } - ensures { [#"../02_iter_mut.rs" 71 10 71 33] Seq.length (shallow_model3 ( ^ v)) = Seq.length (shallow_model1 v) } - ensures { [#"../02_iter_mut.rs" 72 41 72 55] inv4 result } + let rec cfg iter_mut [#"../02_iter_mut.rs" 78 0 78 55] [@cfg:stackify] [@cfg:subregion_analysis] (v : borrowed (Alloc_Vec_Vec_Type.t_vec t (Alloc_Alloc_Global_Type.t_global))) : C02IterMut_IterMut_Type.t_itermut t + requires {[#"../02_iter_mut.rs" 78 19 78 20] inv3 v} + ensures { [#"../02_iter_mut.rs" 75 10 75 29] shallow_model0 (C02IterMut_IterMut_Type.itermut_inner result) = shallow_model1 v } + ensures { [#"../02_iter_mut.rs" 76 10 76 35] shallow_model2 ( ^ C02IterMut_IterMut_Type.itermut_inner result) = shallow_model3 ( ^ v) } + ensures { [#"../02_iter_mut.rs" 77 10 77 33] Seq.length (shallow_model3 ( ^ v)) = Seq.length (shallow_model1 v) } + ensures { [#"../02_iter_mut.rs" 78 41 78 55] inv4 result } = [@vc:do_not_keep_trace] [@vc:sp] var _0 : C02IterMut_IterMut_Type.t_itermut t; @@ -692,21 +689,21 @@ module C02IterMut_IterMut goto BB0 } BB0 { - [#"../02_iter_mut.rs" 73 26 73 27] _8 <- Borrow.borrow_mut ( * v); - [#"../02_iter_mut.rs" 73 26 73 27] v <- { v with current = ^ _8 }; + [#"../02_iter_mut.rs" 79 26 79 27] _8 <- Borrow.borrow_final ( * v) (Borrow.get_id v); + [#"../02_iter_mut.rs" 79 26 79 27] v <- { v with current = ( ^ _8) ; }; assume { inv0 ( ^ _8) }; - [#"../02_iter_mut.rs" 73 26 73 31] _7 <- ([#"../02_iter_mut.rs" 73 26 73 31] index_mut0 _8 ([#"../02_iter_mut.rs" 73 28 73 30] Core_Ops_Range_RangeFull_Type.C_RangeFull)); + [#"../02_iter_mut.rs" 79 26 79 31] _7 <- ([#"../02_iter_mut.rs" 79 26 79 31] index_mut0 _8 ([#"../02_iter_mut.rs" 79 28 79 30] Core_Ops_Range_RangeFull_Type.C_RangeFull)); _8 <- any borrowed (Alloc_Vec_Vec_Type.t_vec t (Alloc_Alloc_Global_Type.t_global)); goto BB1 } BB1 { - [#"../02_iter_mut.rs" 73 21 73 31] _6 <- Borrow.borrow_mut ( * _7); - [#"../02_iter_mut.rs" 73 21 73 31] _7 <- { _7 with current = ^ _6 }; + [#"../02_iter_mut.rs" 79 21 79 31] _6 <- Borrow.borrow_final ( * _7) (Borrow.get_id _7); + [#"../02_iter_mut.rs" 79 21 79 31] _7 <- { _7 with current = ( ^ _6) ; }; assume { inv1 ( ^ _6) }; - [#"../02_iter_mut.rs" 73 21 73 31] _5 <- Borrow.borrow_mut ( * _6); - [#"../02_iter_mut.rs" 73 21 73 31] _6 <- { _6 with current = ^ _5 }; + [#"../02_iter_mut.rs" 79 21 79 31] _5 <- Borrow.borrow_final ( * _6) (Borrow.get_id _6); + [#"../02_iter_mut.rs" 79 21 79 31] _6 <- { _6 with current = ( ^ _5) ; }; assume { inv1 ( ^ _5) }; - [#"../02_iter_mut.rs" 73 4 73 33] _0 <- ([#"../02_iter_mut.rs" 73 4 73 33] C02IterMut_IterMut_Type.C_IterMut _5); + [#"../02_iter_mut.rs" 79 4 79 33] _0 <- ([#"../02_iter_mut.rs" 79 4 79 33] C02IterMut_IterMut_Type.C_IterMut _5); _5 <- any borrowed (slice t); assert { [@expl:type invariant] inv2 _7 }; assume { resolve0 _7 }; @@ -837,7 +834,6 @@ module C02IterMut_AllZero val index_logic4 [@inline:trivial] (self : slice usize) (ix : int) : usize ensures { result = index_logic4 self ix } - use seq.Seq function shallow_model3 (self : borrowed (slice usize)) : Seq.seq usize = [#"../../../../../creusot-contracts/src/model.rs" 101 8 101 31] shallow_model4 ( * self) val shallow_model3 (self : borrowed (slice usize)) : Seq.seq usize @@ -853,33 +849,33 @@ module C02IterMut_AllZero predicate produces0 [#"../02_iter_mut.rs" 37 4 37 65] (self : C02IterMut_IterMut_Type.t_itermut usize) (visited : Seq.seq (borrowed usize)) (tl : C02IterMut_IterMut_Type.t_itermut usize) = - [#"../02_iter_mut.rs" 36 4 36 16] Seq.(==) (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner self)) (Seq.(++) visited (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner tl))) + [#"../02_iter_mut.rs" 39 12 43 13] Seq.length (shallow_model3 (C02IterMut_IterMut_Type.itermut_inner self)) = Seq.length visited + Seq.length (shallow_model3 (C02IterMut_IterMut_Type.itermut_inner tl)) /\ (forall i : int . 0 <= i /\ i < Seq.length (shallow_model3 (C02IterMut_IterMut_Type.itermut_inner self)) -> * Seq.get (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner self)) i = * Seq.get (Seq.(++) visited (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner tl))) i /\ ^ Seq.get (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner self)) i = ^ Seq.get (Seq.(++) visited (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner tl))) i) val produces0 [#"../02_iter_mut.rs" 37 4 37 65] (self : C02IterMut_IterMut_Type.t_itermut usize) (visited : Seq.seq (borrowed usize)) (tl : C02IterMut_IterMut_Type.t_itermut usize) : bool ensures { result = produces0 self visited tl } - function produces_trans0 [#"../02_iter_mut.rs" 51 4 51 90] (a : C02IterMut_IterMut_Type.t_itermut usize) (ab : Seq.seq (borrowed usize)) (b : C02IterMut_IterMut_Type.t_itermut usize) (bc : Seq.seq (borrowed usize)) (c : C02IterMut_IterMut_Type.t_itermut usize) : () + function produces_trans0 [#"../02_iter_mut.rs" 57 4 57 90] (a : C02IterMut_IterMut_Type.t_itermut usize) (ab : Seq.seq (borrowed usize)) (b : C02IterMut_IterMut_Type.t_itermut usize) (bc : Seq.seq (borrowed usize)) (c : C02IterMut_IterMut_Type.t_itermut usize) : () = - [#"../02_iter_mut.rs" 46 4 46 10] () - val produces_trans0 [#"../02_iter_mut.rs" 51 4 51 90] (a : C02IterMut_IterMut_Type.t_itermut usize) (ab : Seq.seq (borrowed usize)) (b : C02IterMut_IterMut_Type.t_itermut usize) (bc : Seq.seq (borrowed usize)) (c : C02IterMut_IterMut_Type.t_itermut usize) : () - requires {[#"../02_iter_mut.rs" 48 15 48 32] produces0 a ab b} - requires {[#"../02_iter_mut.rs" 49 15 49 32] produces0 b bc c} - requires {[#"../02_iter_mut.rs" 51 22 51 23] inv0 a} - requires {[#"../02_iter_mut.rs" 51 31 51 33] inv8 ab} - requires {[#"../02_iter_mut.rs" 51 52 51 53] inv0 b} - requires {[#"../02_iter_mut.rs" 51 61 51 63] inv8 bc} - requires {[#"../02_iter_mut.rs" 51 82 51 83] inv0 c} + [#"../02_iter_mut.rs" 52 4 52 10] () + val produces_trans0 [#"../02_iter_mut.rs" 57 4 57 90] (a : C02IterMut_IterMut_Type.t_itermut usize) (ab : Seq.seq (borrowed usize)) (b : C02IterMut_IterMut_Type.t_itermut usize) (bc : Seq.seq (borrowed usize)) (c : C02IterMut_IterMut_Type.t_itermut usize) : () + requires {[#"../02_iter_mut.rs" 54 15 54 32] produces0 a ab b} + requires {[#"../02_iter_mut.rs" 55 15 55 32] produces0 b bc c} + requires {[#"../02_iter_mut.rs" 57 22 57 23] inv0 a} + requires {[#"../02_iter_mut.rs" 57 31 57 33] inv8 ab} + requires {[#"../02_iter_mut.rs" 57 52 57 53] inv0 b} + requires {[#"../02_iter_mut.rs" 57 61 57 63] inv8 bc} + requires {[#"../02_iter_mut.rs" 57 82 57 83] inv0 c} ensures { result = produces_trans0 a ab b bc c } - axiom produces_trans0_spec : forall a : C02IterMut_IterMut_Type.t_itermut usize, ab : Seq.seq (borrowed usize), b : C02IterMut_IterMut_Type.t_itermut usize, bc : Seq.seq (borrowed usize), c : C02IterMut_IterMut_Type.t_itermut usize . ([#"../02_iter_mut.rs" 48 15 48 32] produces0 a ab b) -> ([#"../02_iter_mut.rs" 49 15 49 32] produces0 b bc c) -> ([#"../02_iter_mut.rs" 51 22 51 23] inv0 a) -> ([#"../02_iter_mut.rs" 51 31 51 33] inv8 ab) -> ([#"../02_iter_mut.rs" 51 52 51 53] inv0 b) -> ([#"../02_iter_mut.rs" 51 61 51 63] inv8 bc) -> ([#"../02_iter_mut.rs" 51 82 51 83] inv0 c) -> ([#"../02_iter_mut.rs" 50 14 50 42] produces0 a (Seq.(++) ab bc) c) + axiom produces_trans0_spec : forall a : C02IterMut_IterMut_Type.t_itermut usize, ab : Seq.seq (borrowed usize), b : C02IterMut_IterMut_Type.t_itermut usize, bc : Seq.seq (borrowed usize), c : C02IterMut_IterMut_Type.t_itermut usize . ([#"../02_iter_mut.rs" 54 15 54 32] produces0 a ab b) -> ([#"../02_iter_mut.rs" 55 15 55 32] produces0 b bc c) -> ([#"../02_iter_mut.rs" 57 22 57 23] inv0 a) -> ([#"../02_iter_mut.rs" 57 31 57 33] inv8 ab) -> ([#"../02_iter_mut.rs" 57 52 57 53] inv0 b) -> ([#"../02_iter_mut.rs" 57 61 57 63] inv8 bc) -> ([#"../02_iter_mut.rs" 57 82 57 83] inv0 c) -> ([#"../02_iter_mut.rs" 56 14 56 42] produces0 a (Seq.(++) ab bc) c) use seq.Seq - function produces_refl0 [#"../02_iter_mut.rs" 44 4 44 29] (a : C02IterMut_IterMut_Type.t_itermut usize) : () = - [#"../02_iter_mut.rs" 41 4 41 10] () - val produces_refl0 [#"../02_iter_mut.rs" 44 4 44 29] (a : C02IterMut_IterMut_Type.t_itermut usize) : () - requires {[#"../02_iter_mut.rs" 44 21 44 22] inv0 a} + function produces_refl0 [#"../02_iter_mut.rs" 50 4 50 29] (a : C02IterMut_IterMut_Type.t_itermut usize) : () = + [#"../02_iter_mut.rs" 47 4 47 10] () + val produces_refl0 [#"../02_iter_mut.rs" 50 4 50 29] (a : C02IterMut_IterMut_Type.t_itermut usize) : () + requires {[#"../02_iter_mut.rs" 50 21 50 22] inv0 a} ensures { result = produces_refl0 a } - axiom produces_refl0_spec : forall a : C02IterMut_IterMut_Type.t_itermut usize . ([#"../02_iter_mut.rs" 44 21 44 22] inv0 a) -> ([#"../02_iter_mut.rs" 43 14 43 39] produces0 a (Seq.empty ) a) + axiom produces_refl0_spec : forall a : C02IterMut_IterMut_Type.t_itermut usize . ([#"../02_iter_mut.rs" 50 21 50 22] inv0 a) -> ([#"../02_iter_mut.rs" 49 14 49 39] produces0 a (Seq.empty ) a) predicate invariant0 [#"../02_iter_mut.rs" 20 4 20 30] (self : C02IterMut_IterMut_Type.t_itermut usize) = [#"../02_iter_mut.rs" 22 20 22 64] Seq.length (shallow_model4 ( ^ C02IterMut_IterMut_Type.itermut_inner self)) = Seq.length (shallow_model4 ( * C02IterMut_IterMut_Type.itermut_inner self)) val invariant0 [#"../02_iter_mut.rs" 20 4 20 30] (self : C02IterMut_IterMut_Type.t_itermut usize) : bool @@ -916,23 +912,18 @@ module C02IterMut_AllZero use seq.Seq use seq.Seq use seq.Seq - predicate resolve2 (self : borrowed (C02IterMut_IterMut_Type.t_itermut usize)) = - [#"../../../../../creusot-contracts/src/resolve.rs" 25 20 25 34] ^ self = * self - val resolve2 (self : borrowed (C02IterMut_IterMut_Type.t_itermut usize)) : bool - ensures { result = resolve2 self } - predicate completed0 [#"../02_iter_mut.rs" 31 4 31 35] (self : borrowed (C02IterMut_IterMut_Type.t_itermut usize)) = - [#"../02_iter_mut.rs" 32 8 32 70] resolve2 self /\ Seq.(==) (shallow_model3 (C02IterMut_IterMut_Type.itermut_inner ( * self))) (Seq.empty ) + [#"../02_iter_mut.rs" 32 8 32 88] shallow_model3 (C02IterMut_IterMut_Type.itermut_inner ( * self)) = shallow_model3 (C02IterMut_IterMut_Type.itermut_inner ( ^ self)) /\ Seq.(==) (shallow_model3 (C02IterMut_IterMut_Type.itermut_inner ( * self))) (Seq.empty ) val completed0 [#"../02_iter_mut.rs" 31 4 31 35] (self : borrowed (C02IterMut_IterMut_Type.t_itermut usize)) : bool ensures { result = completed0 self } - val next0 [#"../02_iter_mut.rs" 57 4 57 44] (self : borrowed (C02IterMut_IterMut_Type.t_itermut usize)) : Core_Option_Option_Type.t_option (borrowed usize) - requires {[#"../02_iter_mut.rs" 57 17 57 21] inv2 self} - ensures { [#"../02_iter_mut.rs" 53 14 56 5] match result with + val next0 [#"../02_iter_mut.rs" 63 4 63 44] (self : borrowed (C02IterMut_IterMut_Type.t_itermut usize)) : Core_Option_Option_Type.t_option (borrowed usize) + requires {[#"../02_iter_mut.rs" 63 17 63 21] inv2 self} + ensures { [#"../02_iter_mut.rs" 59 14 62 5] match result with | Core_Option_Option_Type.C_None -> completed0 self | Core_Option_Option_Type.C_Some v -> produces0 ( * self) (Seq.singleton v) ( ^ self) end } - ensures { [#"../02_iter_mut.rs" 57 26 57 44] inv3 result } + ensures { [#"../02_iter_mut.rs" 63 26 63 44] inv3 result } use prelude.Ghost function index_logic0 [@inline:trivial] (self : Ghost.ghost_ty (Seq.seq (borrowed usize))) (ix : int) : borrowed usize @@ -945,21 +936,21 @@ module C02IterMut_AllZero use prelude.Ghost use prelude.Ghost use prelude.Ghost - val into_iter0 [#"../02_iter_mut.rs" 64 4 64 30] (self : C02IterMut_IterMut_Type.t_itermut usize) : C02IterMut_IterMut_Type.t_itermut usize - requires {[#"../02_iter_mut.rs" 64 17 64 21] inv0 self} - ensures { [#"../02_iter_mut.rs" 63 14 63 28] result = self } - ensures { [#"../02_iter_mut.rs" 64 26 64 30] inv0 result } - - val iter_mut0 [#"../02_iter_mut.rs" 72 0 72 55] (v : borrowed (Alloc_Vec_Vec_Type.t_vec usize (Alloc_Alloc_Global_Type.t_global))) : C02IterMut_IterMut_Type.t_itermut usize - requires {[#"../02_iter_mut.rs" 72 19 72 20] inv1 v} - ensures { [#"../02_iter_mut.rs" 69 10 69 29] shallow_model3 (C02IterMut_IterMut_Type.itermut_inner result) = shallow_model2 v } - ensures { [#"../02_iter_mut.rs" 70 10 70 35] shallow_model4 ( ^ C02IterMut_IterMut_Type.itermut_inner result) = shallow_model1 ( ^ v) } - ensures { [#"../02_iter_mut.rs" 71 10 71 33] Seq.length (shallow_model1 ( ^ v)) = Seq.length (shallow_model2 v) } - ensures { [#"../02_iter_mut.rs" 72 41 72 55] inv0 result } - - let rec cfg all_zero [#"../02_iter_mut.rs" 78 0 78 35] [@cfg:stackify] [@cfg:subregion_analysis] (v : borrowed (Alloc_Vec_Vec_Type.t_vec usize (Alloc_Alloc_Global_Type.t_global))) : () - ensures { [#"../02_iter_mut.rs" 76 10 76 33] Seq.length (shallow_model1 ( ^ v)) = Seq.length (shallow_model2 v) } - ensures { [#"../02_iter_mut.rs" 77 0 77 66] forall i : int . 0 <= i /\ i < Seq.length (shallow_model2 v) -> UIntSize.to_int (index_logic1 ( ^ v) i) = 0 } + val into_iter0 [#"../02_iter_mut.rs" 70 4 70 30] (self : C02IterMut_IterMut_Type.t_itermut usize) : C02IterMut_IterMut_Type.t_itermut usize + requires {[#"../02_iter_mut.rs" 70 17 70 21] inv0 self} + ensures { [#"../02_iter_mut.rs" 69 14 69 28] result = self } + ensures { [#"../02_iter_mut.rs" 70 26 70 30] inv0 result } + + val iter_mut0 [#"../02_iter_mut.rs" 78 0 78 55] (v : borrowed (Alloc_Vec_Vec_Type.t_vec usize (Alloc_Alloc_Global_Type.t_global))) : C02IterMut_IterMut_Type.t_itermut usize + requires {[#"../02_iter_mut.rs" 78 19 78 20] inv1 v} + ensures { [#"../02_iter_mut.rs" 75 10 75 29] shallow_model3 (C02IterMut_IterMut_Type.itermut_inner result) = shallow_model2 v } + ensures { [#"../02_iter_mut.rs" 76 10 76 35] shallow_model4 ( ^ C02IterMut_IterMut_Type.itermut_inner result) = shallow_model1 ( ^ v) } + ensures { [#"../02_iter_mut.rs" 77 10 77 33] Seq.length (shallow_model1 ( ^ v)) = Seq.length (shallow_model2 v) } + ensures { [#"../02_iter_mut.rs" 78 41 78 55] inv0 result } + + let rec cfg all_zero [#"../02_iter_mut.rs" 84 0 84 35] [@cfg:stackify] [@cfg:subregion_analysis] (v : borrowed (Alloc_Vec_Vec_Type.t_vec usize (Alloc_Alloc_Global_Type.t_global))) : () + ensures { [#"../02_iter_mut.rs" 82 10 82 33] Seq.length (shallow_model1 ( ^ v)) = Seq.length (shallow_model2 v) } + ensures { [#"../02_iter_mut.rs" 83 0 83 66] forall i : int . 0 <= i /\ i < Seq.length (shallow_model2 v) -> UIntSize.to_int (index_logic1 ( ^ v) i) = 0 } = [@vc:do_not_keep_trace] [@vc:sp] var _0 : (); @@ -977,39 +968,39 @@ module C02IterMut_AllZero goto BB0 } BB0 { - [#"../02_iter_mut.rs" 79 26 79 27] _6 <- Borrow.borrow_mut ( * v); - [#"../02_iter_mut.rs" 79 26 79 27] v <- { v with current = ^ _6 }; - [#"../02_iter_mut.rs" 79 17 79 28] _5 <- ([#"../02_iter_mut.rs" 79 17 79 28] iter_mut0 _6); + [#"../02_iter_mut.rs" 85 26 85 27] _6 <- Borrow.borrow_final ( * v) (Borrow.get_id v); + [#"../02_iter_mut.rs" 85 26 85 27] v <- { v with current = ( ^ _6) ; }; + [#"../02_iter_mut.rs" 85 17 85 28] _5 <- ([#"../02_iter_mut.rs" 85 17 85 28] iter_mut0 _6); _6 <- any borrowed (Alloc_Vec_Vec_Type.t_vec usize (Alloc_Alloc_Global_Type.t_global)); goto BB1 } BB1 { - [#"../02_iter_mut.rs" 79 17 79 40] it <- ([#"../02_iter_mut.rs" 79 17 79 40] into_iter0 _5); + [#"../02_iter_mut.rs" 85 17 85 40] it <- ([#"../02_iter_mut.rs" 85 17 85 40] into_iter0 _5); _5 <- any C02IterMut_IterMut_Type.t_itermut usize; goto BB2 } BB2 { - [#"../02_iter_mut.rs" 80 19 80 29] iter_old <- ([#"../02_iter_mut.rs" 80 19 80 29] Ghost.new it); + [#"../02_iter_mut.rs" 86 19 86 29] iter_old <- ([#"../02_iter_mut.rs" 86 19 86 29] Ghost.new it); goto BB3 } BB3 { - [#"../02_iter_mut.rs" 81 23 81 41] produced <- ([#"../02_iter_mut.rs" 81 23 81 41] Ghost.new (Seq.empty )); + [#"../02_iter_mut.rs" 87 23 87 41] produced <- ([#"../02_iter_mut.rs" 87 23 87 41] Ghost.new (Seq.empty )); goto BB4 } BB4 { goto BB5 } BB5 { - invariant { [#"../02_iter_mut.rs" 82 16 82 23] inv0 it }; - invariant { [#"../02_iter_mut.rs" 83 16 83 55] produces0 (Ghost.inner iter_old) (Ghost.inner produced) it }; - invariant { [#"../02_iter_mut.rs" 82 4 82 25] forall i : int . 0 <= i /\ i < Seq.length (Ghost.inner produced) -> UIntSize.to_int ( ^ index_logic0 produced i) = 0 }; + invariant { [#"../02_iter_mut.rs" 88 16 88 23] inv0 it }; + invariant { [#"../02_iter_mut.rs" 89 16 89 55] produces0 (Ghost.inner iter_old) (Ghost.inner produced) it }; + invariant { [#"../02_iter_mut.rs" 88 4 88 25] forall i : int . 0 <= i /\ i < Seq.length (Ghost.inner produced) -> UIntSize.to_int ( ^ index_logic0 produced i) = 0 }; goto BB6 } BB6 { - [#"../02_iter_mut.rs" 86 14 86 23] _16 <- Borrow.borrow_mut it; - [#"../02_iter_mut.rs" 86 14 86 23] it <- ^ _16; + [#"../02_iter_mut.rs" 92 14 92 23] _16 <- Borrow.borrow_mut it; + [#"../02_iter_mut.rs" 92 14 92 23] it <- ^ _16; assume { inv0 ( ^ _16) }; - [#"../02_iter_mut.rs" 86 14 86 23] _15 <- ([#"../02_iter_mut.rs" 86 14 86 23] next0 _16); + [#"../02_iter_mut.rs" 92 14 92 23] _15 <- ([#"../02_iter_mut.rs" 92 14 92 23] next0 _16); _16 <- any borrowed (C02IterMut_IterMut_Type.t_itermut usize); goto BB7 } @@ -1020,7 +1011,7 @@ module C02IterMut_AllZero end } BB8 { - [#"../02_iter_mut.rs" 91 20 91 25] _0 <- ([#"../02_iter_mut.rs" 91 20 91 25] ()); + [#"../02_iter_mut.rs" 97 20 97 25] _0 <- ([#"../02_iter_mut.rs" 97 20 97 25] ()); assume { resolve1 v }; return _0 } @@ -1029,19 +1020,19 @@ module C02IterMut_AllZero } BB10 { assume { resolve1 v }; - assert { [#"../02_iter_mut.rs" 86 14 86 23] false }; + assert { [#"../02_iter_mut.rs" 92 14 92 23] false }; absurd } BB11 { - [#"../02_iter_mut.rs" 87 17 87 18] x <- ([#"../02_iter_mut.rs" 87 17 87 18] Core_Option_Option_Type.some_0 _15); - [#"../02_iter_mut.rs" 87 17 87 18] _15 <- (let Core_Option_Option_Type.C_Some x0 = _15 in Core_Option_Option_Type.C_Some (any borrowed usize)); - [#"../02_iter_mut.rs" 88 27 88 69] _19 <- ([#"../02_iter_mut.rs" 88 27 88 69] Ghost.new (Seq.(++) (Ghost.inner produced) (Seq.singleton x))); + [#"../02_iter_mut.rs" 93 17 93 18] x <- ([#"../02_iter_mut.rs" 93 17 93 18] Core_Option_Option_Type.some_0 _15); + [#"../02_iter_mut.rs" 93 17 93 18] _15 <- (let Core_Option_Option_Type.C_Some x0 = _15 in Core_Option_Option_Type.C_Some (any borrowed usize)); + [#"../02_iter_mut.rs" 94 27 94 69] _19 <- ([#"../02_iter_mut.rs" 94 27 94 69] Ghost.new (Seq.(++) (Ghost.inner produced) (Seq.singleton x))); goto BB12 } BB12 { - [#"../02_iter_mut.rs" 88 16 88 69] produced <- ([#"../02_iter_mut.rs" 88 16 88 69] _19); - [#"../02_iter_mut.rs" 88 16 88 69] _19 <- any Ghost.ghost_ty (Seq.seq (borrowed usize)); - [#"../02_iter_mut.rs" 89 16 89 22] x <- { x with current = ([#"../02_iter_mut.rs" 89 16 89 22] [#"../02_iter_mut.rs" 89 21 89 22] (0 : usize)) }; + [#"../02_iter_mut.rs" 94 16 94 69] produced <- ([#"../02_iter_mut.rs" 94 16 94 69] _19); + [#"../02_iter_mut.rs" 94 16 94 69] _19 <- any Ghost.ghost_ty (Seq.seq (borrowed usize)); + [#"../02_iter_mut.rs" 95 16 95 22] x <- { x with current = ([#"../02_iter_mut.rs" 95 16 95 22] [#"../02_iter_mut.rs" 95 21 95 22] (0 : usize)) ; }; assume { resolve0 x }; goto BB5 } @@ -1145,13 +1136,8 @@ module C02IterMut_Impl1 val shallow_model0 (self : borrowed (slice t)) : Seq.seq t ensures { result = shallow_model0 self } - predicate resolve0 (self : borrowed (C02IterMut_IterMut_Type.t_itermut t)) = - [#"../../../../../creusot-contracts/src/resolve.rs" 25 20 25 34] ^ self = * self - val resolve0 (self : borrowed (C02IterMut_IterMut_Type.t_itermut t)) : bool - ensures { result = resolve0 self } - predicate completed0 [#"../02_iter_mut.rs" 31 4 31 35] (self : borrowed (C02IterMut_IterMut_Type.t_itermut t)) = - [#"../02_iter_mut.rs" 32 8 32 70] resolve0 self /\ Seq.(==) (shallow_model0 (C02IterMut_IterMut_Type.itermut_inner ( * self))) (Seq.empty ) + [#"../02_iter_mut.rs" 32 8 32 88] shallow_model0 (C02IterMut_IterMut_Type.itermut_inner ( * self)) = shallow_model0 (C02IterMut_IterMut_Type.itermut_inner ( ^ self)) /\ Seq.(==) (shallow_model0 (C02IterMut_IterMut_Type.itermut_inner ( * self))) (Seq.empty ) val completed0 [#"../02_iter_mut.rs" 31 4 31 35] (self : borrowed (C02IterMut_IterMut_Type.t_itermut t)) : bool ensures { result = completed0 self } @@ -1163,7 +1149,6 @@ module C02IterMut_Impl1 val index_logic1 [@inline:trivial] (self : slice t) (ix : int) : t ensures { result = index_logic1 self ix } - use seq.Seq use seq.Seq function to_mut_seq0 (self : borrowed (slice t)) : Seq.seq (borrowed t) val to_mut_seq0 (self : borrowed (slice t)) : Seq.seq (borrowed t) @@ -1174,18 +1159,18 @@ module C02IterMut_Impl1 predicate produces0 [#"../02_iter_mut.rs" 37 4 37 65] (self : C02IterMut_IterMut_Type.t_itermut t) (visited : Seq.seq (borrowed t)) (tl : C02IterMut_IterMut_Type.t_itermut t) = - [#"../02_iter_mut.rs" 36 4 36 16] Seq.(==) (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner self)) (Seq.(++) visited (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner tl))) + [#"../02_iter_mut.rs" 39 12 43 13] Seq.length (shallow_model0 (C02IterMut_IterMut_Type.itermut_inner self)) = Seq.length visited + Seq.length (shallow_model0 (C02IterMut_IterMut_Type.itermut_inner tl)) /\ (forall i : int . 0 <= i /\ i < Seq.length (shallow_model0 (C02IterMut_IterMut_Type.itermut_inner self)) -> * Seq.get (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner self)) i = * Seq.get (Seq.(++) visited (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner tl))) i /\ ^ Seq.get (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner self)) i = ^ Seq.get (Seq.(++) visited (to_mut_seq0 (C02IterMut_IterMut_Type.itermut_inner tl))) i) val produces0 [#"../02_iter_mut.rs" 37 4 37 65] (self : C02IterMut_IterMut_Type.t_itermut t) (visited : Seq.seq (borrowed t)) (tl : C02IterMut_IterMut_Type.t_itermut t) : bool ensures { result = produces0 self visited tl } use seq.Seq - goal produces_refl_refn : [#"../02_iter_mut.rs" 44 4 44 29] forall a : C02IterMut_IterMut_Type.t_itermut t . inv0 a -> inv0 a /\ (forall result : () . produces0 a (Seq.empty ) a -> produces0 a (Seq.empty ) a) - goal next_refn : [#"../02_iter_mut.rs" 57 4 57 44] forall self : borrowed (C02IterMut_IterMut_Type.t_itermut t) . inv1 self -> inv1 self /\ (forall result : Core_Option_Option_Type.t_option (borrowed t) . inv2 result /\ match result with + goal produces_refl_refn : [#"../02_iter_mut.rs" 50 4 50 29] forall a : C02IterMut_IterMut_Type.t_itermut t . inv0 a -> inv0 a /\ (forall result : () . produces0 a (Seq.empty ) a -> produces0 a (Seq.empty ) a) + goal next_refn : [#"../02_iter_mut.rs" 63 4 63 44] forall self : borrowed (C02IterMut_IterMut_Type.t_itermut t) . inv1 self -> inv1 self /\ (forall result : Core_Option_Option_Type.t_option (borrowed t) . inv2 result /\ match result with | Core_Option_Option_Type.C_None -> completed0 self | Core_Option_Option_Type.C_Some v -> produces0 ( * self) (Seq.singleton v) ( ^ self) end -> inv2 result /\ match result with | Core_Option_Option_Type.C_None -> completed0 self | Core_Option_Option_Type.C_Some v -> produces0 ( * self) (Seq.singleton v) ( ^ self) end) - goal produces_trans_refn : [#"../02_iter_mut.rs" 51 4 51 90] forall a : C02IterMut_IterMut_Type.t_itermut t . forall ab : Seq.seq (borrowed t) . forall b : C02IterMut_IterMut_Type.t_itermut t . forall bc : Seq.seq (borrowed t) . forall c : C02IterMut_IterMut_Type.t_itermut t . inv0 c /\ inv3 bc /\ inv0 b /\ inv3 ab /\ inv0 a /\ produces0 b bc c /\ produces0 a ab b -> inv0 c /\ inv3 bc /\ inv0 b /\ inv3 ab /\ inv0 a /\ produces0 b bc c /\ produces0 a ab b /\ (forall result : () . produces0 a (Seq.(++) ab bc) c -> produces0 a (Seq.(++) ab bc) c) + goal produces_trans_refn : [#"../02_iter_mut.rs" 57 4 57 90] forall a : C02IterMut_IterMut_Type.t_itermut t . forall ab : Seq.seq (borrowed t) . forall b : C02IterMut_IterMut_Type.t_itermut t . forall bc : Seq.seq (borrowed t) . forall c : C02IterMut_IterMut_Type.t_itermut t . inv0 c /\ inv3 bc /\ inv0 b /\ inv3 ab /\ inv0 a /\ produces0 b bc c /\ produces0 a ab b -> inv0 c /\ inv3 bc /\ inv0 b /\ inv3 ab /\ inv0 a /\ produces0 b bc c /\ produces0 a ab b /\ (forall result : () . produces0 a (Seq.(++) ab bc) c -> produces0 a (Seq.(++) ab bc) c) end diff --git a/creusot/tests/should_succeed/iterators/02_iter_mut/why3session.xml b/creusot/tests/should_succeed/iterators/02_iter_mut/why3session.xml index 68ffa706f4..957db5723f 100644 --- a/creusot/tests/should_succeed/iterators/02_iter_mut/why3session.xml +++ b/creusot/tests/should_succeed/iterators/02_iter_mut/why3session.xml @@ -2,35 +2,42 @@ - + - + - + - + - + - + + + + + + + + - + @@ -42,47 +49,47 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/creusot/tests/should_succeed/iterators/02_iter_mut/why3shapes.gz b/creusot/tests/should_succeed/iterators/02_iter_mut/why3shapes.gz index 96d1eac811ae205a39c22eec2a62345894173fd0..911f05aa9d58a8546b74baa3eeba054084d4bd5e 100644 GIT binary patch literal 3179 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 R6n_KM{{Sr5*le;a007YwD+K@m literal 3015 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 JYQ5Yk001Rk - + - + - + - + - + @@ -43,16 +43,16 @@ - + - + - + - + @@ -61,134 +61,134 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/creusot/tests/should_succeed/iterators/03_std_iterators/why3shapes.gz b/creusot/tests/should_succeed/iterators/03_std_iterators/why3shapes.gz index 0b7722c5b3add9ba8b4c4241897044f859d8a59c..9b120540639cbfc0e68ea4a640e2e9445c9aeef7 100644 GIT binary patch literal 6543 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 B+${hA literal 6467 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 diff --git a/creusot/tests/should_succeed/iterators/04_skip.mlcfg b/creusot/tests/should_succeed/iterators/04_skip.mlcfg index e1fd2bb325..2841fb98cf 100644 --- a/creusot/tests/should_succeed/iterators/04_skip.mlcfg +++ b/creusot/tests/should_succeed/iterators/04_skip.mlcfg @@ -421,10 +421,10 @@ module C04Skip_Impl0_Next BB1 { assert { [@expl:type invariant] inv0 old_self }; assume { resolve0 old_self }; - [#"../04_skip.rs" 65 35 65 46] _7 <- Borrow.borrow_mut (C04Skip_Skip_Type.skip_n ( * self)); - [#"../04_skip.rs" 65 35 65 46] self <- { self with current = (let C04Skip_Skip_Type.C_Skip x0 x1 = * self in C04Skip_Skip_Type.C_Skip x0 ( ^ _7)) }; - [#"../04_skip.rs" 65 35 65 46] _6 <- Borrow.borrow_mut ( * _7); - [#"../04_skip.rs" 65 35 65 46] _7 <- { _7 with current = ^ _6 }; + [#"../04_skip.rs" 65 35 65 46] _7 <- Borrow.borrow_final (C04Skip_Skip_Type.skip_n ( * self)) (Borrow.inherit_id (Borrow.get_id self) 2); + [#"../04_skip.rs" 65 35 65 46] self <- { self with current = (let C04Skip_Skip_Type.C_Skip x0 x1 = * self in C04Skip_Skip_Type.C_Skip x0 ( ^ _7)) ; }; + [#"../04_skip.rs" 65 35 65 46] _6 <- Borrow.borrow_final ( * _7) (Borrow.get_id _7); + [#"../04_skip.rs" 65 35 65 46] _7 <- { _7 with current = ( ^ _6) ; }; [#"../04_skip.rs" 65 20 65 47] n <- ([#"../04_skip.rs" 65 20 65 47] take0 _6); _6 <- any borrowed usize; goto BB2 @@ -449,7 +449,7 @@ module C04Skip_Impl0_Next } BB5 { [#"../04_skip.rs" 73 20 73 36] _18 <- Borrow.borrow_mut (C04Skip_Skip_Type.skip_iter ( * self)); - [#"../04_skip.rs" 73 20 73 36] self <- { self with current = (let C04Skip_Skip_Type.C_Skip x0 x1 = * self in C04Skip_Skip_Type.C_Skip ( ^ _18) x1) }; + [#"../04_skip.rs" 73 20 73 36] self <- { self with current = (let C04Skip_Skip_Type.C_Skip x0 x1 = * self in C04Skip_Skip_Type.C_Skip ( ^ _18) x1) ; }; assume { inv3 ( ^ _18) }; [#"../04_skip.rs" 73 20 73 36] r <- ([#"../04_skip.rs" 73 20 73 36] next0 _18); _18 <- any borrowed i; diff --git a/creusot/tests/should_succeed/iterators/04_skip/why3session.xml b/creusot/tests/should_succeed/iterators/04_skip/why3session.xml index 8d898be371..7f260b991d 100644 --- a/creusot/tests/should_succeed/iterators/04_skip/why3session.xml +++ b/creusot/tests/should_succeed/iterators/04_skip/why3session.xml @@ -22,7 +22,7 @@ - + diff --git a/creusot/tests/should_succeed/iterators/04_skip/why3shapes.gz b/creusot/tests/should_succeed/iterators/04_skip/why3shapes.gz index b32e82af2170002ec3096ed63969d0887bb79c2a..993334679aa9a28951aa70f876e169efc6e1ce89 100644 GIT binary patch delta 1053 zcmV+&1mgRd2&)K?9e-dLF=(LZr2vmLD2Ympb)?jGlI_3mP^2u`n-(ZgA7pYKAHR8U z_|x6;^c-H}Y55+Hr+wf3vQ*2vpBLvp!@he*&o*TV9yW{cdhDCGI-bB|xWD(@ORu)s zGXH~@WiQH}mpyK0-Xc5B;0Q}x9iT&ec|HH-b@A6D6Xwm#kbikw4DB{+?PlTE%eFr* zN1NR-wud=3B=VS86mVI{in8Zrk7W;Yt~@)=;1c~S@~UvUBxg#az9COcfO()ZcnJXb zs$?8jMFOLQ6^UKVKmfA;TxJJU_%RpfW9UwWjh*UiQhoDMdmNW4#g&&b)h910{Bg;r z(C{WSlR~qZ+_O(2+VdK7#rPZutR89Cjl?%E-55fKI>aCbq)~m91Q5y zI@JBk>mi>jzB?=Ng@3*mm0+IR$5oDk+j$h!n({UZ zMp2M-ib4QIG1%oOMle2zhr>;%`s1`=^GBQdpbXpzKcgvtism^vJkkL-I6)EVhQ%*azj0lxxa-i^r$+w zL@#)c7q%1$9+0&JQP%oZa#{fF+qV7R zkT&VJSk#6|YpgJh=AltanmPt4c+~_ES=2+YKLlJYh@zC$Xf|*WUZ!P8P?ih9ZeZoU2nG{3L#WC{QPeW?PX delta 1035 zcmV+m1oZo>2$=|w9e*GgF=(LZr2vmLD2d7%>qxHcB-?-Ap+s4-*W02%14Jh0#c$^0 z41ao9p1y=bJT2ej@wDsOUzTe5@blvQXV|sx=-E0i!NYnH4#%#3tKtbfhQ~+Gz4U4` zSPsA7W!{Ut=XsBtnYS1mXW=N8xH>?G_G*pR?uLXm^Z3|8bl&wI>!m}BLG<1Ac)e+6D;Oqb$JWz;v|2?;O{bOz4} z055XIvB(k_B`iy9F$)4P_|Ijwj|$({;(QG4DWkCyzb5fJEVajRsZw6UQYL{>Ru1~c#bt`R9J0)>)JT67#@=Jv}<3;rfWTz@W){Hd-obWh1jfCyH%3~AK{5a zUJymccYo^4!@i56yA32S$~O7^u4GA^V~icLl)f5v!JUf zZ?j;O1xcqY1W*>e-H^o?jQ8UHa1+Yzc zA>E75^nVTe*uI>8NxZGe(U>7$>MM4Va;#=w zW7>O^nFW;TljY(LtsXIj7zqJ&MJo&^5=u4(WPcMqWPC}48pw{r$|ff&F6EnS)pa=w}s~&tckIye^oKQzyB?YxgTX+%%5>cNUsv2 znSZX*4Bp(8&WT7*yw`JqP9|d|iu`=!z0P|xK5(1=Ez&yuEf$qw(i$sFP1m4SN}4JL zDR@~25n0en<)jmiJ9OaKg6T$9O<6L78XH@eN?0C5ZAxmuP{k#H14a(k8K;wj;$WF- zv|>^-3T;bW1r)yB}j3ZfJs8qRGUYhgviXrm6jm$>!%8@88x(FAD< F000H-_2d8m diff --git a/creusot/tests/should_succeed/iterators/05_map.mlcfg b/creusot/tests/should_succeed/iterators/05_map.mlcfg index aa8f490f77..2e27433b3f 100644 --- a/creusot/tests/should_succeed/iterators/05_map.mlcfg +++ b/creusot/tests/should_succeed/iterators/05_map.mlcfg @@ -1216,7 +1216,7 @@ module C05Map_Impl0_Next axiom produces_one0_spec : forall self : C05Map_Map_Type.t_map i b f, visited : b, succ : C05Map_Map_Type.t_map i b f . ([#"../05_map.rs" 117 20 117 24] inv6 self) -> ([#"../05_map.rs" 117 26 117 33] inv8 visited) -> ([#"../05_map.rs" 117 38 117 42] inv6 succ) -> ([#"../05_map.rs" 116 14 116 68] produces_one0 self visited succ = produces1 self (Seq.singleton visited) succ) predicate completed0 [#"../05_map.rs" 22 4 22 35] (self : borrowed (C05Map_Map_Type.t_map i b f)) = - [#"../05_map.rs" 23 8 23 75] completed1 {current = C05Map_Map_Type.map_iter ( * self); final = C05Map_Map_Type.map_iter ( ^ self)} /\ C05Map_Map_Type.map_func ( * self) = C05Map_Map_Type.map_func ( ^ self) + [#"../05_map.rs" 23 8 23 75] completed1 (Borrow.borrow_logic (C05Map_Map_Type.map_iter ( * self)) (C05Map_Map_Type.map_iter ( ^ self)) (Borrow.inherit_id (Borrow.get_id self) 1)) /\ C05Map_Map_Type.map_func ( * self) = C05Map_Map_Type.map_func ( ^ self) val completed0 [#"../05_map.rs" 22 4 22 35] (self : borrowed (C05Map_Map_Type.t_map i b f)) : bool ensures { result = completed0 self } @@ -1285,8 +1285,8 @@ module C05Map_Impl0_Next goto BB0 } BB0 { - [#"../05_map.rs" 61 14 61 30] _4 <- Borrow.borrow_mut (C05Map_Map_Type.map_iter ( * self)); - [#"../05_map.rs" 61 14 61 30] self <- { self with current = (let C05Map_Map_Type.C_Map x0 x1 = * self in C05Map_Map_Type.C_Map ( ^ _4) x1) }; + [#"../05_map.rs" 61 14 61 30] _4 <- Borrow.borrow_final (C05Map_Map_Type.map_iter ( * self)) (Borrow.inherit_id (Borrow.get_id self) 1); + [#"../05_map.rs" 61 14 61 30] self <- { self with current = (let C05Map_Map_Type.C_Map x0 x1 = * self in C05Map_Map_Type.C_Map ( ^ _4) x1) ; }; assume { inv0 ( ^ _4) }; [#"../05_map.rs" 61 14 61 30] _3 <- ([#"../05_map.rs" 61 14 61 30] next0 _4); _4 <- any borrowed i; @@ -1331,8 +1331,8 @@ module C05Map_Impl0_Next } BB7 { assume { resolve1 _9 }; - [#"../05_map.rs" 65 21 65 32] _12 <- Borrow.borrow_mut (C05Map_Map_Type.map_func ( * self)); - [#"../05_map.rs" 65 21 65 32] self <- { self with current = (let C05Map_Map_Type.C_Map x0 x1 = * self in C05Map_Map_Type.C_Map x0 ( ^ _12)) }; + [#"../05_map.rs" 65 21 65 32] _12 <- Borrow.borrow_final (C05Map_Map_Type.map_func ( * self)) (Borrow.inherit_id (Borrow.get_id self) 2); + [#"../05_map.rs" 65 21 65 32] self <- { self with current = (let C05Map_Map_Type.C_Map x0 x1 = * self in C05Map_Map_Type.C_Map x0 ( ^ _12)) ; }; assume { inv2 ( ^ _12) }; [#"../05_map.rs" 65 21 65 35] _11 <- ([#"../05_map.rs" 65 21 65 35] call_mut0 _12 ([#"../05_map.rs" 65 21 65 35] (([#"../05_map.rs" 65 33 65 34] v)))); _12 <- any borrowed f; @@ -1789,7 +1789,7 @@ module C05Map_Impl0 axiom produces_one0_spec : forall self : C05Map_Map_Type.t_map i b f, visited : b, succ : C05Map_Map_Type.t_map i b f . ([#"../05_map.rs" 117 20 117 24] inv0 self) -> ([#"../05_map.rs" 117 26 117 33] inv6 visited) -> ([#"../05_map.rs" 117 38 117 42] inv0 succ) -> ([#"../05_map.rs" 116 14 116 68] produces_one0 self visited succ = produces0 self (Seq.singleton visited) succ) predicate completed0 [#"../05_map.rs" 22 4 22 35] (self : borrowed (C05Map_Map_Type.t_map i b f)) = - [#"../05_map.rs" 23 8 23 75] completed1 {current = C05Map_Map_Type.map_iter ( * self); final = C05Map_Map_Type.map_iter ( ^ self)} /\ C05Map_Map_Type.map_func ( * self) = C05Map_Map_Type.map_func ( ^ self) + [#"../05_map.rs" 23 8 23 75] completed1 (Borrow.borrow_logic (C05Map_Map_Type.map_iter ( * self)) (C05Map_Map_Type.map_iter ( ^ self)) (Borrow.inherit_id (Borrow.get_id self) 1)) /\ C05Map_Map_Type.map_func ( * self) = C05Map_Map_Type.map_func ( ^ self) val completed0 [#"../05_map.rs" 22 4 22 35] (self : borrowed (C05Map_Map_Type.t_map i b f)) : bool ensures { result = completed0 self } diff --git a/creusot/tests/should_succeed/iterators/05_map/why3session.xml b/creusot/tests/should_succeed/iterators/05_map/why3session.xml index da7f1cab24..cb6a4b742d 100644 --- a/creusot/tests/should_succeed/iterators/05_map/why3session.xml +++ b/creusot/tests/should_succeed/iterators/05_map/why3session.xml @@ -18,7 +18,7 @@ - + @@ -63,7 +63,7 @@ - + @@ -75,10 +75,10 @@ - + - + @@ -143,7 +143,7 @@ - + @@ -158,13 +158,13 @@ - + - + - + @@ -175,40 +175,40 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -223,7 +223,7 @@ - + diff --git a/creusot/tests/should_succeed/iterators/05_map/why3shapes.gz b/creusot/tests/should_succeed/iterators/05_map/why3shapes.gz index eec9d731a80fa46f4f4cff80daf5418697d10a0e..7ee97d5a13b06dd9e356d4349a34616bb9ae4ec4 100644 GIT binary patch literal 6125 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 literal 6065 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 diff --git a/creusot/tests/should_succeed/iterators/06_map_precond.mlcfg b/creusot/tests/should_succeed/iterators/06_map_precond.mlcfg index 098d388e3c..0045a54cb4 100644 --- a/creusot/tests/should_succeed/iterators/06_map_precond.mlcfg +++ b/creusot/tests/should_succeed/iterators/06_map_precond.mlcfg @@ -171,19 +171,19 @@ module C06MapPrecond_Impl1_PreservationInv_Impl use prelude.Ghost use seq.Seq - predicate preservation0 [#"../06_map_precond.rs" 106 4 106 45] (iter : i) (func : f) = - [#"../06_map_precond.rs" 107 8 114 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv0 i -> inv3 b -> inv4 f -> inv5 e2 -> inv5 e1 -> inv2 s -> unnest0 func ( * f) -> produces0 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new s) -> postcondition_mut0 f (e1, Ghost.new s) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc s e1)) - val preservation0 [#"../06_map_precond.rs" 106 4 106 45] (iter : i) (func : f) : bool + predicate preservation0 [#"../06_map_precond.rs" 105 4 105 45] (iter : i) (func : f) = + [#"../06_map_precond.rs" 106 8 113 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv0 i -> inv3 b -> inv4 f -> inv5 e2 -> inv5 e1 -> inv2 s -> unnest0 func ( * f) -> produces0 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new s) -> postcondition_mut0 f (e1, Ghost.new s) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc s e1)) + val preservation0 [#"../06_map_precond.rs" 105 4 105 45] (iter : i) (func : f) : bool ensures { result = preservation0 iter func } - let rec ghost predicate preservation_inv [#"../06_map_precond.rs" 94 4 94 73] (iter : i) (func : f) (produced : Seq.seq item0) - requires {[#"../06_map_precond.rs" 94 24 94 28] inv0 iter} - requires {[#"../06_map_precond.rs" 94 33 94 37] inv1 func} - requires {[#"../06_map_precond.rs" 94 42 94 50] inv2 produced} - ensures { [#"../06_map_precond.rs" 93 4 93 83] produced = Seq.empty -> result = preservation0 iter func } + let rec ghost predicate preservation_inv [#"../06_map_precond.rs" 93 4 93 73] (iter : i) (func : f) (produced : Seq.seq item0) + requires {[#"../06_map_precond.rs" 93 24 93 28] inv0 iter} + requires {[#"../06_map_precond.rs" 93 33 93 37] inv1 func} + requires {[#"../06_map_precond.rs" 93 42 93 50] inv2 produced} + ensures { [#"../06_map_precond.rs" 92 4 92 83] produced = Seq.empty -> result = preservation0 iter func } = [@vc:do_not_keep_trace] [@vc:sp] - [#"../06_map_precond.rs" 95 8 102 9] pure {forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv0 i -> inv3 b -> inv4 f -> inv5 e2 -> inv5 e1 -> inv2 s -> unnest0 func ( * f) -> produces0 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new (Seq.(++) produced s)) -> postcondition_mut0 f (e1, Ghost.new (Seq.(++) produced s)) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc (Seq.(++) produced s) e1))} + [#"../06_map_precond.rs" 94 8 101 9] pure {forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv0 i -> inv3 b -> inv4 f -> inv5 e2 -> inv5 e1 -> inv2 s -> unnest0 func ( * f) -> produces0 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new (Seq.(++) produced s)) -> postcondition_mut0 f (e1, Ghost.new (Seq.(++) produced s)) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc (Seq.(++) produced s) e1))} end module C06MapPrecond_Impl0_ProducesRefl_Impl type i @@ -363,40 +363,40 @@ module C06MapPrecond_Impl0_ProducesRefl_Impl use prelude.Ghost use seq.Seq - predicate next_precondition0 [#"../06_map_precond.rs" 84 4 84 74] (iter : i) (func : f) (produced : Seq.seq item0) = - [#"../06_map_precond.rs" 85 8 89 9] forall i : i . forall e : item0 . inv3 i -> inv10 e -> produces1 iter (Seq.singleton e) i -> precondition0 func (e, Ghost.new produced) - val next_precondition0 [#"../06_map_precond.rs" 84 4 84 74] (iter : i) (func : f) (produced : Seq.seq item0) : bool + predicate next_precondition0 [#"../06_map_precond.rs" 83 4 83 74] (iter : i) (func : f) (produced : Seq.seq item0) = + [#"../06_map_precond.rs" 84 8 88 9] forall i : i . forall e : item0 . inv3 i -> inv10 e -> produces1 iter (Seq.singleton e) i -> precondition0 func (e, Ghost.new produced) + val next_precondition0 [#"../06_map_precond.rs" 83 4 83 74] (iter : i) (func : f) (produced : Seq.seq item0) : bool ensures { result = next_precondition0 iter func produced } use seq.Seq - predicate preservation0 [#"../06_map_precond.rs" 106 4 106 45] (iter : i) (func : f) = - [#"../06_map_precond.rs" 107 8 114 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv3 i -> inv8 b -> inv6 f -> inv10 e2 -> inv10 e1 -> inv1 s -> unnest0 func ( * f) -> produces1 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new s) -> postcondition_mut0 f (e1, Ghost.new s) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc s e1)) - val preservation0 [#"../06_map_precond.rs" 106 4 106 45] (iter : i) (func : f) : bool + predicate preservation0 [#"../06_map_precond.rs" 105 4 105 45] (iter : i) (func : f) = + [#"../06_map_precond.rs" 106 8 113 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv3 i -> inv8 b -> inv6 f -> inv10 e2 -> inv10 e1 -> inv1 s -> unnest0 func ( * f) -> produces1 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new s) -> postcondition_mut0 f (e1, Ghost.new s) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc s e1)) + val preservation0 [#"../06_map_precond.rs" 105 4 105 45] (iter : i) (func : f) : bool ensures { result = preservation0 iter func } - predicate preservation_inv0 [#"../06_map_precond.rs" 94 4 94 73] (iter : i) (func : f) (produced : Seq.seq item0) = - [#"../06_map_precond.rs" 95 8 102 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv3 i -> inv8 b -> inv6 f -> inv10 e2 -> inv10 e1 -> inv1 s -> unnest0 func ( * f) -> produces1 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new (Seq.(++) produced s)) -> postcondition_mut0 f (e1, Ghost.new (Seq.(++) produced s)) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc (Seq.(++) produced s) e1)) - val preservation_inv0 [#"../06_map_precond.rs" 94 4 94 73] (iter : i) (func : f) (produced : Seq.seq item0) : bool - requires {[#"../06_map_precond.rs" 94 24 94 28] inv3 iter} - requires {[#"../06_map_precond.rs" 94 33 94 37] inv4 func} - requires {[#"../06_map_precond.rs" 94 42 94 50] inv1 produced} + predicate preservation_inv0 [#"../06_map_precond.rs" 93 4 93 73] (iter : i) (func : f) (produced : Seq.seq item0) = + [#"../06_map_precond.rs" 94 8 101 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv3 i -> inv8 b -> inv6 f -> inv10 e2 -> inv10 e1 -> inv1 s -> unnest0 func ( * f) -> produces1 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new (Seq.(++) produced s)) -> postcondition_mut0 f (e1, Ghost.new (Seq.(++) produced s)) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc (Seq.(++) produced s) e1)) + val preservation_inv0 [#"../06_map_precond.rs" 93 4 93 73] (iter : i) (func : f) (produced : Seq.seq item0) : bool + requires {[#"../06_map_precond.rs" 93 24 93 28] inv3 iter} + requires {[#"../06_map_precond.rs" 93 33 93 37] inv4 func} + requires {[#"../06_map_precond.rs" 93 42 93 50] inv1 produced} ensures { result = preservation_inv0 iter func produced } - axiom preservation_inv0_spec : forall iter : i, func : f, produced : Seq.seq item0 . ([#"../06_map_precond.rs" 94 24 94 28] inv3 iter) -> ([#"../06_map_precond.rs" 94 33 94 37] inv4 func) -> ([#"../06_map_precond.rs" 94 42 94 50] inv1 produced) -> ([#"../06_map_precond.rs" 93 4 93 83] produced = Seq.empty -> preservation_inv0 iter func produced = preservation0 iter func) + axiom preservation_inv0_spec : forall iter : i, func : f, produced : Seq.seq item0 . ([#"../06_map_precond.rs" 93 24 93 28] inv3 iter) -> ([#"../06_map_precond.rs" 93 33 93 37] inv4 func) -> ([#"../06_map_precond.rs" 93 42 93 50] inv1 produced) -> ([#"../06_map_precond.rs" 92 4 92 83] produced = Seq.empty -> preservation_inv0 iter func produced = preservation0 iter func) use prelude.Ghost predicate completed0 [#"../common.rs" 11 4 11 36] (self : borrowed i) val completed0 [#"../common.rs" 11 4 11 36] (self : borrowed i) : bool ensures { result = completed0 self } - predicate reinitialize0 [#"../06_map_precond.rs" 118 4 118 29] (_1 : ()) = - [#"../06_map_precond.rs" 119 8 124 9] forall func : f . forall iter : borrowed i . inv4 func -> inv9 iter -> completed0 iter -> next_precondition0 ( ^ iter) func (Seq.empty ) /\ preservation0 ( ^ iter) func - val reinitialize0 [#"../06_map_precond.rs" 118 4 118 29] (_1 : ()) : bool + predicate reinitialize0 [#"../06_map_precond.rs" 117 4 117 29] (_1 : ()) = + [#"../06_map_precond.rs" 118 8 123 9] forall func : f . forall iter : borrowed i . inv4 func -> inv9 iter -> completed0 iter -> next_precondition0 ( ^ iter) func (Seq.empty ) /\ preservation0 ( ^ iter) func + val reinitialize0 [#"../06_map_precond.rs" 117 4 117 29] (_1 : ()) : bool ensures { result = reinitialize0 _1 } use C06MapPrecond_Map_Type as C06MapPrecond_Map_Type - predicate invariant0 [#"../06_map_precond.rs" 158 4 158 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) = - [#"../06_map_precond.rs" 160 12 162 73] reinitialize0 () /\ preservation_inv0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) /\ next_precondition0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) - val invariant0 [#"../06_map_precond.rs" 158 4 158 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) : bool + predicate invariant0 [#"../06_map_precond.rs" 157 4 157 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) = + [#"../06_map_precond.rs" 159 12 161 73] reinitialize0 () /\ preservation_inv0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) /\ next_precondition0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) + val invariant0 [#"../06_map_precond.rs" 157 4 157 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) : bool ensures { result = invariant0 self } predicate inv0 (_x : C06MapPrecond_Map_Type.t_map i b f item0) @@ -621,40 +621,40 @@ module C06MapPrecond_Impl0_ProducesTrans_Impl use prelude.Ghost use seq.Seq - predicate next_precondition0 [#"../06_map_precond.rs" 84 4 84 74] (iter : i) (func : f) (produced : Seq.seq item0) = - [#"../06_map_precond.rs" 85 8 89 9] forall i : i . forall e : item0 . inv4 i -> inv11 e -> produces1 iter (Seq.singleton e) i -> precondition0 func (e, Ghost.new produced) - val next_precondition0 [#"../06_map_precond.rs" 84 4 84 74] (iter : i) (func : f) (produced : Seq.seq item0) : bool + predicate next_precondition0 [#"../06_map_precond.rs" 83 4 83 74] (iter : i) (func : f) (produced : Seq.seq item0) = + [#"../06_map_precond.rs" 84 8 88 9] forall i : i . forall e : item0 . inv4 i -> inv11 e -> produces1 iter (Seq.singleton e) i -> precondition0 func (e, Ghost.new produced) + val next_precondition0 [#"../06_map_precond.rs" 83 4 83 74] (iter : i) (func : f) (produced : Seq.seq item0) : bool ensures { result = next_precondition0 iter func produced } use seq.Seq - predicate preservation0 [#"../06_map_precond.rs" 106 4 106 45] (iter : i) (func : f) = - [#"../06_map_precond.rs" 107 8 114 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv4 i -> inv9 b -> inv7 f -> inv11 e2 -> inv11 e1 -> inv2 s -> unnest0 func ( * f) -> produces1 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new s) -> postcondition_mut0 f (e1, Ghost.new s) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc s e1)) - val preservation0 [#"../06_map_precond.rs" 106 4 106 45] (iter : i) (func : f) : bool + predicate preservation0 [#"../06_map_precond.rs" 105 4 105 45] (iter : i) (func : f) = + [#"../06_map_precond.rs" 106 8 113 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv4 i -> inv9 b -> inv7 f -> inv11 e2 -> inv11 e1 -> inv2 s -> unnest0 func ( * f) -> produces1 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new s) -> postcondition_mut0 f (e1, Ghost.new s) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc s e1)) + val preservation0 [#"../06_map_precond.rs" 105 4 105 45] (iter : i) (func : f) : bool ensures { result = preservation0 iter func } - predicate preservation_inv0 [#"../06_map_precond.rs" 94 4 94 73] (iter : i) (func : f) (produced : Seq.seq item0) = - [#"../06_map_precond.rs" 95 8 102 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv4 i -> inv9 b -> inv7 f -> inv11 e2 -> inv11 e1 -> inv2 s -> unnest0 func ( * f) -> produces1 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new (Seq.(++) produced s)) -> postcondition_mut0 f (e1, Ghost.new (Seq.(++) produced s)) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc (Seq.(++) produced s) e1)) - val preservation_inv0 [#"../06_map_precond.rs" 94 4 94 73] (iter : i) (func : f) (produced : Seq.seq item0) : bool - requires {[#"../06_map_precond.rs" 94 24 94 28] inv4 iter} - requires {[#"../06_map_precond.rs" 94 33 94 37] inv5 func} - requires {[#"../06_map_precond.rs" 94 42 94 50] inv2 produced} + predicate preservation_inv0 [#"../06_map_precond.rs" 93 4 93 73] (iter : i) (func : f) (produced : Seq.seq item0) = + [#"../06_map_precond.rs" 94 8 101 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv4 i -> inv9 b -> inv7 f -> inv11 e2 -> inv11 e1 -> inv2 s -> unnest0 func ( * f) -> produces1 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new (Seq.(++) produced s)) -> postcondition_mut0 f (e1, Ghost.new (Seq.(++) produced s)) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc (Seq.(++) produced s) e1)) + val preservation_inv0 [#"../06_map_precond.rs" 93 4 93 73] (iter : i) (func : f) (produced : Seq.seq item0) : bool + requires {[#"../06_map_precond.rs" 93 24 93 28] inv4 iter} + requires {[#"../06_map_precond.rs" 93 33 93 37] inv5 func} + requires {[#"../06_map_precond.rs" 93 42 93 50] inv2 produced} ensures { result = preservation_inv0 iter func produced } - axiom preservation_inv0_spec : forall iter : i, func : f, produced : Seq.seq item0 . ([#"../06_map_precond.rs" 94 24 94 28] inv4 iter) -> ([#"../06_map_precond.rs" 94 33 94 37] inv5 func) -> ([#"../06_map_precond.rs" 94 42 94 50] inv2 produced) -> ([#"../06_map_precond.rs" 93 4 93 83] produced = Seq.empty -> preservation_inv0 iter func produced = preservation0 iter func) + axiom preservation_inv0_spec : forall iter : i, func : f, produced : Seq.seq item0 . ([#"../06_map_precond.rs" 93 24 93 28] inv4 iter) -> ([#"../06_map_precond.rs" 93 33 93 37] inv5 func) -> ([#"../06_map_precond.rs" 93 42 93 50] inv2 produced) -> ([#"../06_map_precond.rs" 92 4 92 83] produced = Seq.empty -> preservation_inv0 iter func produced = preservation0 iter func) use prelude.Ghost predicate completed0 [#"../common.rs" 11 4 11 36] (self : borrowed i) val completed0 [#"../common.rs" 11 4 11 36] (self : borrowed i) : bool ensures { result = completed0 self } - predicate reinitialize0 [#"../06_map_precond.rs" 118 4 118 29] (_1 : ()) = - [#"../06_map_precond.rs" 119 8 124 9] forall func : f . forall iter : borrowed i . inv5 func -> inv10 iter -> completed0 iter -> next_precondition0 ( ^ iter) func (Seq.empty ) /\ preservation0 ( ^ iter) func - val reinitialize0 [#"../06_map_precond.rs" 118 4 118 29] (_1 : ()) : bool + predicate reinitialize0 [#"../06_map_precond.rs" 117 4 117 29] (_1 : ()) = + [#"../06_map_precond.rs" 118 8 123 9] forall func : f . forall iter : borrowed i . inv5 func -> inv10 iter -> completed0 iter -> next_precondition0 ( ^ iter) func (Seq.empty ) /\ preservation0 ( ^ iter) func + val reinitialize0 [#"../06_map_precond.rs" 117 4 117 29] (_1 : ()) : bool ensures { result = reinitialize0 _1 } use C06MapPrecond_Map_Type as C06MapPrecond_Map_Type - predicate invariant0 [#"../06_map_precond.rs" 158 4 158 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) = - [#"../06_map_precond.rs" 160 12 162 73] reinitialize0 () /\ preservation_inv0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) /\ next_precondition0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) - val invariant0 [#"../06_map_precond.rs" 158 4 158 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) : bool + predicate invariant0 [#"../06_map_precond.rs" 157 4 157 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) = + [#"../06_map_precond.rs" 159 12 161 73] reinitialize0 () /\ preservation_inv0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) /\ next_precondition0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) + val invariant0 [#"../06_map_precond.rs" 157 4 157 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) : bool ensures { result = invariant0 self } predicate inv0 (_x : C06MapPrecond_Map_Type.t_map i b f item0) @@ -946,52 +946,52 @@ module C06MapPrecond_Impl1_ProducesOne_Impl axiom inv1 : forall x : b . inv1 x = true use seq.Seq - predicate next_precondition0 [#"../06_map_precond.rs" 84 4 84 74] (iter : i) (func : f) (produced : Seq.seq item0) = - [#"../06_map_precond.rs" 85 8 89 9] forall i : i . forall e : item0 . inv6 i -> inv3 e -> produces1 iter (Seq.singleton e) i -> precondition0 func (e, Ghost.new produced) - val next_precondition0 [#"../06_map_precond.rs" 84 4 84 74] (iter : i) (func : f) (produced : Seq.seq item0) : bool + predicate next_precondition0 [#"../06_map_precond.rs" 83 4 83 74] (iter : i) (func : f) (produced : Seq.seq item0) = + [#"../06_map_precond.rs" 84 8 88 9] forall i : i . forall e : item0 . inv6 i -> inv3 e -> produces1 iter (Seq.singleton e) i -> precondition0 func (e, Ghost.new produced) + val next_precondition0 [#"../06_map_precond.rs" 83 4 83 74] (iter : i) (func : f) (produced : Seq.seq item0) : bool ensures { result = next_precondition0 iter func produced } use seq.Seq - predicate preservation0 [#"../06_map_precond.rs" 106 4 106 45] (iter : i) (func : f) = - [#"../06_map_precond.rs" 107 8 114 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv6 i -> inv1 b -> inv2 f -> inv3 e2 -> inv3 e1 -> inv4 s -> unnest0 func ( * f) -> produces1 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new s) -> postcondition_mut0 f (e1, Ghost.new s) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc s e1)) - val preservation0 [#"../06_map_precond.rs" 106 4 106 45] (iter : i) (func : f) : bool + predicate preservation0 [#"../06_map_precond.rs" 105 4 105 45] (iter : i) (func : f) = + [#"../06_map_precond.rs" 106 8 113 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv6 i -> inv1 b -> inv2 f -> inv3 e2 -> inv3 e1 -> inv4 s -> unnest0 func ( * f) -> produces1 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new s) -> postcondition_mut0 f (e1, Ghost.new s) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc s e1)) + val preservation0 [#"../06_map_precond.rs" 105 4 105 45] (iter : i) (func : f) : bool ensures { result = preservation0 iter func } - predicate preservation_inv0 [#"../06_map_precond.rs" 94 4 94 73] (iter : i) (func : f) (produced : Seq.seq item0) = - [#"../06_map_precond.rs" 95 8 102 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv6 i -> inv1 b -> inv2 f -> inv3 e2 -> inv3 e1 -> inv4 s -> unnest0 func ( * f) -> produces1 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new (Seq.(++) produced s)) -> postcondition_mut0 f (e1, Ghost.new (Seq.(++) produced s)) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc (Seq.(++) produced s) e1)) - val preservation_inv0 [#"../06_map_precond.rs" 94 4 94 73] (iter : i) (func : f) (produced : Seq.seq item0) : bool - requires {[#"../06_map_precond.rs" 94 24 94 28] inv6 iter} - requires {[#"../06_map_precond.rs" 94 33 94 37] inv7 func} - requires {[#"../06_map_precond.rs" 94 42 94 50] inv4 produced} + predicate preservation_inv0 [#"../06_map_precond.rs" 93 4 93 73] (iter : i) (func : f) (produced : Seq.seq item0) = + [#"../06_map_precond.rs" 94 8 101 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv6 i -> inv1 b -> inv2 f -> inv3 e2 -> inv3 e1 -> inv4 s -> unnest0 func ( * f) -> produces1 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new (Seq.(++) produced s)) -> postcondition_mut0 f (e1, Ghost.new (Seq.(++) produced s)) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc (Seq.(++) produced s) e1)) + val preservation_inv0 [#"../06_map_precond.rs" 93 4 93 73] (iter : i) (func : f) (produced : Seq.seq item0) : bool + requires {[#"../06_map_precond.rs" 93 24 93 28] inv6 iter} + requires {[#"../06_map_precond.rs" 93 33 93 37] inv7 func} + requires {[#"../06_map_precond.rs" 93 42 93 50] inv4 produced} ensures { result = preservation_inv0 iter func produced } - axiom preservation_inv0_spec : forall iter : i, func : f, produced : Seq.seq item0 . ([#"../06_map_precond.rs" 94 24 94 28] inv6 iter) -> ([#"../06_map_precond.rs" 94 33 94 37] inv7 func) -> ([#"../06_map_precond.rs" 94 42 94 50] inv4 produced) -> ([#"../06_map_precond.rs" 93 4 93 83] produced = Seq.empty -> preservation_inv0 iter func produced = preservation0 iter func) + axiom preservation_inv0_spec : forall iter : i, func : f, produced : Seq.seq item0 . ([#"../06_map_precond.rs" 93 24 93 28] inv6 iter) -> ([#"../06_map_precond.rs" 93 33 93 37] inv7 func) -> ([#"../06_map_precond.rs" 93 42 93 50] inv4 produced) -> ([#"../06_map_precond.rs" 92 4 92 83] produced = Seq.empty -> preservation_inv0 iter func produced = preservation0 iter func) predicate completed0 [#"../common.rs" 11 4 11 36] (self : borrowed i) val completed0 [#"../common.rs" 11 4 11 36] (self : borrowed i) : bool ensures { result = completed0 self } - predicate reinitialize0 [#"../06_map_precond.rs" 118 4 118 29] (_1 : ()) = - [#"../06_map_precond.rs" 119 8 124 9] forall func : f . forall iter : borrowed i . inv7 func -> inv11 iter -> completed0 iter -> next_precondition0 ( ^ iter) func (Seq.empty ) /\ preservation0 ( ^ iter) func - val reinitialize0 [#"../06_map_precond.rs" 118 4 118 29] (_1 : ()) : bool + predicate reinitialize0 [#"../06_map_precond.rs" 117 4 117 29] (_1 : ()) = + [#"../06_map_precond.rs" 118 8 123 9] forall func : f . forall iter : borrowed i . inv7 func -> inv11 iter -> completed0 iter -> next_precondition0 ( ^ iter) func (Seq.empty ) /\ preservation0 ( ^ iter) func + val reinitialize0 [#"../06_map_precond.rs" 117 4 117 29] (_1 : ()) : bool ensures { result = reinitialize0 _1 } - predicate invariant0 [#"../06_map_precond.rs" 158 4 158 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) = - [#"../06_map_precond.rs" 160 12 162 73] reinitialize0 () /\ preservation_inv0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) /\ next_precondition0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) - val invariant0 [#"../06_map_precond.rs" 158 4 158 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) : bool + predicate invariant0 [#"../06_map_precond.rs" 157 4 157 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) = + [#"../06_map_precond.rs" 159 12 161 73] reinitialize0 () /\ preservation_inv0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) /\ next_precondition0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) + val invariant0 [#"../06_map_precond.rs" 157 4 157 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) : bool ensures { result = invariant0 self } axiom inv0 : forall x : C06MapPrecond_Map_Type.t_map i b f item0 . inv0 x = (invariant0 x /\ match x with | C06MapPrecond_Map_Type.C_Map iter func produced -> true end) use seq.Seq - let rec ghost predicate produces_one [#"../06_map_precond.rs" 143 4 143 57] (self : C06MapPrecond_Map_Type.t_map i b f item0) (visited : b) (succ : C06MapPrecond_Map_Type.t_map i b f item0) - requires {[#"../06_map_precond.rs" 143 20 143 24] inv0 self} - requires {[#"../06_map_precond.rs" 143 26 143 33] inv1 visited} - requires {[#"../06_map_precond.rs" 143 38 143 42] inv0 succ} - ensures { [#"../06_map_precond.rs" 142 14 142 68] result = produces0 self (Seq.singleton visited) succ } + let rec ghost predicate produces_one [#"../06_map_precond.rs" 142 4 142 57] (self : C06MapPrecond_Map_Type.t_map i b f item0) (visited : b) (succ : C06MapPrecond_Map_Type.t_map i b f item0) + requires {[#"../06_map_precond.rs" 142 20 142 24] inv0 self} + requires {[#"../06_map_precond.rs" 142 26 142 33] inv1 visited} + requires {[#"../06_map_precond.rs" 142 38 142 42] inv0 succ} + ensures { [#"../06_map_precond.rs" 141 14 141 68] result = produces0 self (Seq.singleton visited) succ } = [@vc:do_not_keep_trace] [@vc:sp] - [#"../06_map_precond.rs" 144 8 150 9] pure {exists f : borrowed f . inv2 f /\ * f = C06MapPrecond_Map_Type.map_func self /\ ^ f = C06MapPrecond_Map_Type.map_func succ /\ (exists e : item0 . inv3 e /\ produces1 (C06MapPrecond_Map_Type.map_iter self) (Seq.singleton e) (C06MapPrecond_Map_Type.map_iter succ) /\ Ghost.inner (C06MapPrecond_Map_Type.map_produced succ) = Seq.snoc (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) e /\ precondition0 ( * f) (e, C06MapPrecond_Map_Type.map_produced self) /\ postcondition_mut0 f (e, C06MapPrecond_Map_Type.map_produced self) visited)} + [#"../06_map_precond.rs" 143 8 149 9] pure {exists f : borrowed f . inv2 f /\ * f = C06MapPrecond_Map_Type.map_func self /\ ^ f = C06MapPrecond_Map_Type.map_func succ /\ (exists e : item0 . inv3 e /\ produces1 (C06MapPrecond_Map_Type.map_iter self) (Seq.singleton e) (C06MapPrecond_Map_Type.map_iter succ) /\ Ghost.inner (C06MapPrecond_Map_Type.map_produced succ) = Seq.snoc (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) e /\ precondition0 ( * f) (e, C06MapPrecond_Map_Type.map_produced self) /\ postcondition_mut0 f (e, C06MapPrecond_Map_Type.map_produced self) visited)} end module C06MapPrecond_Impl1_ProducesOneInvariant_Impl type i @@ -1092,9 +1092,9 @@ module C06MapPrecond_Impl1_ProducesOneInvariant_Impl ensures { result = produces0 self visited _o } use seq.Seq - predicate next_precondition0 [#"../06_map_precond.rs" 84 4 84 74] (iter : i) (func : f) (produced : Seq.seq item0) = - [#"../06_map_precond.rs" 85 8 89 9] forall i : i . forall e : item0 . inv4 i -> inv1 e -> produces0 iter (Seq.singleton e) i -> precondition0 func (e, Ghost.new produced) - val next_precondition0 [#"../06_map_precond.rs" 84 4 84 74] (iter : i) (func : f) (produced : Seq.seq item0) : bool + predicate next_precondition0 [#"../06_map_precond.rs" 83 4 83 74] (iter : i) (func : f) (produced : Seq.seq item0) = + [#"../06_map_precond.rs" 84 8 88 9] forall i : i . forall e : item0 . inv4 i -> inv1 e -> produces0 iter (Seq.singleton e) i -> precondition0 func (e, Ghost.new produced) + val next_precondition0 [#"../06_map_precond.rs" 83 4 83 74] (iter : i) (func : f) (produced : Seq.seq item0) : bool ensures { result = next_precondition0 iter func produced } predicate postcondition_mut0 (self : borrowed f) (_2 : (item0, Ghost.ghost_ty (Seq.seq item0))) (_3 : b) @@ -1107,35 +1107,35 @@ module C06MapPrecond_Impl1_ProducesOneInvariant_Impl val unnest0 (self : f) (_2 : f) : bool ensures { result = unnest0 self _2 } - predicate preservation0 [#"../06_map_precond.rs" 106 4 106 45] (iter : i) (func : f) = - [#"../06_map_precond.rs" 107 8 114 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv4 i -> inv2 b -> inv3 f -> inv1 e2 -> inv1 e1 -> inv5 s -> unnest0 func ( * f) -> produces0 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new s) -> postcondition_mut0 f (e1, Ghost.new s) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc s e1)) - val preservation0 [#"../06_map_precond.rs" 106 4 106 45] (iter : i) (func : f) : bool + predicate preservation0 [#"../06_map_precond.rs" 105 4 105 45] (iter : i) (func : f) = + [#"../06_map_precond.rs" 106 8 113 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv4 i -> inv2 b -> inv3 f -> inv1 e2 -> inv1 e1 -> inv5 s -> unnest0 func ( * f) -> produces0 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new s) -> postcondition_mut0 f (e1, Ghost.new s) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc s e1)) + val preservation0 [#"../06_map_precond.rs" 105 4 105 45] (iter : i) (func : f) : bool ensures { result = preservation0 iter func } use seq.Seq - predicate preservation_inv0 [#"../06_map_precond.rs" 94 4 94 73] (iter : i) (func : f) (produced : Seq.seq item0) = - [#"../06_map_precond.rs" 95 8 102 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv4 i -> inv2 b -> inv3 f -> inv1 e2 -> inv1 e1 -> inv5 s -> unnest0 func ( * f) -> produces0 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new (Seq.(++) produced s)) -> postcondition_mut0 f (e1, Ghost.new (Seq.(++) produced s)) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc (Seq.(++) produced s) e1)) - val preservation_inv0 [#"../06_map_precond.rs" 94 4 94 73] (iter : i) (func : f) (produced : Seq.seq item0) : bool - requires {[#"../06_map_precond.rs" 94 24 94 28] inv4 iter} - requires {[#"../06_map_precond.rs" 94 33 94 37] inv6 func} - requires {[#"../06_map_precond.rs" 94 42 94 50] inv5 produced} + predicate preservation_inv0 [#"../06_map_precond.rs" 93 4 93 73] (iter : i) (func : f) (produced : Seq.seq item0) = + [#"../06_map_precond.rs" 94 8 101 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv4 i -> inv2 b -> inv3 f -> inv1 e2 -> inv1 e1 -> inv5 s -> unnest0 func ( * f) -> produces0 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new (Seq.(++) produced s)) -> postcondition_mut0 f (e1, Ghost.new (Seq.(++) produced s)) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc (Seq.(++) produced s) e1)) + val preservation_inv0 [#"../06_map_precond.rs" 93 4 93 73] (iter : i) (func : f) (produced : Seq.seq item0) : bool + requires {[#"../06_map_precond.rs" 93 24 93 28] inv4 iter} + requires {[#"../06_map_precond.rs" 93 33 93 37] inv6 func} + requires {[#"../06_map_precond.rs" 93 42 93 50] inv5 produced} ensures { result = preservation_inv0 iter func produced } - axiom preservation_inv0_spec : forall iter : i, func : f, produced : Seq.seq item0 . ([#"../06_map_precond.rs" 94 24 94 28] inv4 iter) -> ([#"../06_map_precond.rs" 94 33 94 37] inv6 func) -> ([#"../06_map_precond.rs" 94 42 94 50] inv5 produced) -> ([#"../06_map_precond.rs" 93 4 93 83] produced = Seq.empty -> preservation_inv0 iter func produced = preservation0 iter func) + axiom preservation_inv0_spec : forall iter : i, func : f, produced : Seq.seq item0 . ([#"../06_map_precond.rs" 93 24 93 28] inv4 iter) -> ([#"../06_map_precond.rs" 93 33 93 37] inv6 func) -> ([#"../06_map_precond.rs" 93 42 93 50] inv5 produced) -> ([#"../06_map_precond.rs" 92 4 92 83] produced = Seq.empty -> preservation_inv0 iter func produced = preservation0 iter func) use prelude.Ghost predicate completed0 [#"../common.rs" 11 4 11 36] (self : borrowed i) val completed0 [#"../common.rs" 11 4 11 36] (self : borrowed i) : bool ensures { result = completed0 self } - predicate reinitialize0 [#"../06_map_precond.rs" 118 4 118 29] (_1 : ()) = - [#"../06_map_precond.rs" 119 8 124 9] forall func : f . forall iter : borrowed i . inv6 func -> inv9 iter -> completed0 iter -> next_precondition0 ( ^ iter) func (Seq.empty ) /\ preservation0 ( ^ iter) func - val reinitialize0 [#"../06_map_precond.rs" 118 4 118 29] (_1 : ()) : bool + predicate reinitialize0 [#"../06_map_precond.rs" 117 4 117 29] (_1 : ()) = + [#"../06_map_precond.rs" 118 8 123 9] forall func : f . forall iter : borrowed i . inv6 func -> inv9 iter -> completed0 iter -> next_precondition0 ( ^ iter) func (Seq.empty ) /\ preservation0 ( ^ iter) func + val reinitialize0 [#"../06_map_precond.rs" 117 4 117 29] (_1 : ()) : bool ensures { result = reinitialize0 _1 } use C06MapPrecond_Map_Type as C06MapPrecond_Map_Type - predicate invariant0 [#"../06_map_precond.rs" 158 4 158 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) = - [#"../06_map_precond.rs" 160 12 162 73] reinitialize0 () /\ preservation_inv0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) /\ next_precondition0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) - val invariant0 [#"../06_map_precond.rs" 158 4 158 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) : bool + predicate invariant0 [#"../06_map_precond.rs" 157 4 157 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) = + [#"../06_map_precond.rs" 159 12 161 73] reinitialize0 () /\ preservation_inv0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) /\ next_precondition0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) + val invariant0 [#"../06_map_precond.rs" 157 4 157 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) : bool ensures { result = invariant0 self } predicate inv0 (_x : C06MapPrecond_Map_Type.t_map i b f item0) @@ -1205,20 +1205,20 @@ module C06MapPrecond_Impl1_ProducesOneInvariant_Impl ensures { result = produces_refl0 a } axiom produces_refl0_spec : forall a : i . ([#"../common.rs" 15 21 15 22] inv4 a) -> ([#"../common.rs" 14 14 14 39] produces0 a (Seq.empty ) a) - let rec ghost function produces_one_invariant [#"../06_map_precond.rs" 133 4 133 73] (self : C06MapPrecond_Map_Type.t_map i b f item0) (e : item0) (r : b) (f : borrowed f) (iter : i) : () - requires {[#"../06_map_precond.rs" 128 4 128 60] produces0 (C06MapPrecond_Map_Type.map_iter self) (Seq.singleton e) iter} - requires {[#"../06_map_precond.rs" 129 15 129 30] * f = C06MapPrecond_Map_Type.map_func self} - requires {[#"../06_map_precond.rs" 130 15 130 57] postcondition_mut0 f (e, C06MapPrecond_Map_Type.map_produced self) r} - requires {[#"../06_map_precond.rs" 133 30 133 34] inv0 self} - requires {[#"../06_map_precond.rs" 133 36 133 37] inv1 e} - requires {[#"../06_map_precond.rs" 133 48 133 49] inv2 r} - requires {[#"../06_map_precond.rs" 133 54 133 55] inv3 f} - requires {[#"../06_map_precond.rs" 133 65 133 69] inv4 iter} - ensures { [#"../06_map_precond.rs" 131 14 131 69] preservation_inv0 iter ( ^ f) (Seq.snoc (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) e) } - ensures { [#"../06_map_precond.rs" 132 14 132 70] next_precondition0 iter ( ^ f) (Seq.snoc (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) e) } + let rec ghost function produces_one_invariant [#"../06_map_precond.rs" 132 4 132 73] (self : C06MapPrecond_Map_Type.t_map i b f item0) (e : item0) (r : b) (f : borrowed f) (iter : i) : () + requires {[#"../06_map_precond.rs" 127 4 127 60] produces0 (C06MapPrecond_Map_Type.map_iter self) (Seq.singleton e) iter} + requires {[#"../06_map_precond.rs" 128 15 128 30] * f = C06MapPrecond_Map_Type.map_func self} + requires {[#"../06_map_precond.rs" 129 15 129 57] postcondition_mut0 f (e, C06MapPrecond_Map_Type.map_produced self) r} + requires {[#"../06_map_precond.rs" 132 30 132 34] inv0 self} + requires {[#"../06_map_precond.rs" 132 36 132 37] inv1 e} + requires {[#"../06_map_precond.rs" 132 48 132 49] inv2 r} + requires {[#"../06_map_precond.rs" 132 54 132 55] inv3 f} + requires {[#"../06_map_precond.rs" 132 65 132 69] inv4 iter} + ensures { [#"../06_map_precond.rs" 130 14 130 69] preservation_inv0 iter ( ^ f) (Seq.snoc (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) e) } + ensures { [#"../06_map_precond.rs" 131 14 131 70] next_precondition0 iter ( ^ f) (Seq.snoc (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) e) } = [@vc:do_not_keep_trace] [@vc:sp] - [#"../06_map_precond.rs" 127 4 127 12] let _ = let a = pure {forall i : i . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv4 i -> inv1 e2 -> inv1 e1 -> inv5 s -> produces0 iter (Seq.snoc (Seq.snoc s e1) e2) i -> produces0 (C06MapPrecond_Map_Type.map_iter self) (Seq.snoc (Seq.snoc (Seq.(++) (Seq.singleton e) s) e1) e2) i} in assert {a} in () + [#"../06_map_precond.rs" 126 4 126 12] let _ = let a = pure {forall i : i . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv4 i -> inv1 e2 -> inv1 e1 -> inv5 s -> produces0 iter (Seq.snoc (Seq.snoc s e1) e2) i -> produces0 (C06MapPrecond_Map_Type.map_iter self) (Seq.snoc (Seq.snoc (Seq.(++) (Seq.singleton e) s) e1) e2) i} in assert {a} in () end module C06MapPrecond_Impl0_Next type i @@ -1277,9 +1277,9 @@ module C06MapPrecond_Impl0_Next ensures { result = produces0 self visited _o } use seq.Seq - predicate next_precondition0 [#"../06_map_precond.rs" 84 4 84 74] (iter : i) (func : f) (produced : Seq.seq item0) = - [#"../06_map_precond.rs" 85 8 89 9] forall i : i . forall e : item0 . inv0 i -> inv11 e -> produces0 iter (Seq.singleton e) i -> precondition0 func (e, Ghost.new produced) - val next_precondition0 [#"../06_map_precond.rs" 84 4 84 74] (iter : i) (func : f) (produced : Seq.seq item0) : bool + predicate next_precondition0 [#"../06_map_precond.rs" 83 4 83 74] (iter : i) (func : f) (produced : Seq.seq item0) = + [#"../06_map_precond.rs" 84 8 88 9] forall i : i . forall e : item0 . inv0 i -> inv11 e -> produces0 iter (Seq.singleton e) i -> precondition0 func (e, Ghost.new produced) + val next_precondition0 [#"../06_map_precond.rs" 83 4 83 74] (iter : i) (func : f) (produced : Seq.seq item0) : bool ensures { result = next_precondition0 iter func produced } predicate postcondition_mut0 (self : borrowed f) (_2 : (item0, Ghost.ghost_ty (Seq.seq item0))) (_3 : b) @@ -1300,21 +1300,21 @@ module C06MapPrecond_Impl0_Next val inv9 (_x : b) : bool ensures { result = inv9 _x } - predicate preservation0 [#"../06_map_precond.rs" 106 4 106 45] (iter : i) (func : f) = - [#"../06_map_precond.rs" 107 8 114 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv0 i -> inv9 b -> inv7 f -> inv11 e2 -> inv11 e1 -> inv12 s -> unnest0 func ( * f) -> produces0 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new s) -> postcondition_mut0 f (e1, Ghost.new s) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc s e1)) - val preservation0 [#"../06_map_precond.rs" 106 4 106 45] (iter : i) (func : f) : bool + predicate preservation0 [#"../06_map_precond.rs" 105 4 105 45] (iter : i) (func : f) = + [#"../06_map_precond.rs" 106 8 113 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv0 i -> inv9 b -> inv7 f -> inv11 e2 -> inv11 e1 -> inv12 s -> unnest0 func ( * f) -> produces0 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new s) -> postcondition_mut0 f (e1, Ghost.new s) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc s e1)) + val preservation0 [#"../06_map_precond.rs" 105 4 105 45] (iter : i) (func : f) : bool ensures { result = preservation0 iter func } use seq.Seq - predicate preservation_inv0 [#"../06_map_precond.rs" 94 4 94 73] (iter : i) (func : f) (produced : Seq.seq item0) = - [#"../06_map_precond.rs" 95 8 102 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv0 i -> inv9 b -> inv7 f -> inv11 e2 -> inv11 e1 -> inv12 s -> unnest0 func ( * f) -> produces0 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new (Seq.(++) produced s)) -> postcondition_mut0 f (e1, Ghost.new (Seq.(++) produced s)) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc (Seq.(++) produced s) e1)) - val preservation_inv0 [#"../06_map_precond.rs" 94 4 94 73] (iter : i) (func : f) (produced : Seq.seq item0) : bool - requires {[#"../06_map_precond.rs" 94 24 94 28] inv0 iter} - requires {[#"../06_map_precond.rs" 94 33 94 37] inv2 func} - requires {[#"../06_map_precond.rs" 94 42 94 50] inv12 produced} + predicate preservation_inv0 [#"../06_map_precond.rs" 93 4 93 73] (iter : i) (func : f) (produced : Seq.seq item0) = + [#"../06_map_precond.rs" 94 8 101 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv0 i -> inv9 b -> inv7 f -> inv11 e2 -> inv11 e1 -> inv12 s -> unnest0 func ( * f) -> produces0 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new (Seq.(++) produced s)) -> postcondition_mut0 f (e1, Ghost.new (Seq.(++) produced s)) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc (Seq.(++) produced s) e1)) + val preservation_inv0 [#"../06_map_precond.rs" 93 4 93 73] (iter : i) (func : f) (produced : Seq.seq item0) : bool + requires {[#"../06_map_precond.rs" 93 24 93 28] inv0 iter} + requires {[#"../06_map_precond.rs" 93 33 93 37] inv2 func} + requires {[#"../06_map_precond.rs" 93 42 93 50] inv12 produced} ensures { result = preservation_inv0 iter func produced } - axiom preservation_inv0_spec : forall iter : i, func : f, produced : Seq.seq item0 . ([#"../06_map_precond.rs" 94 24 94 28] inv0 iter) -> ([#"../06_map_precond.rs" 94 33 94 37] inv2 func) -> ([#"../06_map_precond.rs" 94 42 94 50] inv12 produced) -> ([#"../06_map_precond.rs" 93 4 93 83] produced = Seq.empty -> preservation_inv0 iter func produced = preservation0 iter func) + axiom preservation_inv0_spec : forall iter : i, func : f, produced : Seq.seq item0 . ([#"../06_map_precond.rs" 93 24 93 28] inv0 iter) -> ([#"../06_map_precond.rs" 93 33 93 37] inv2 func) -> ([#"../06_map_precond.rs" 93 42 93 50] inv12 produced) -> ([#"../06_map_precond.rs" 92 4 92 83] produced = Seq.empty -> preservation_inv0 iter func produced = preservation0 iter func) use prelude.Ghost predicate completed1 [#"../common.rs" 11 4 11 36] (self : borrowed i) val completed1 [#"../common.rs" 11 4 11 36] (self : borrowed i) : bool @@ -1324,15 +1324,15 @@ module C06MapPrecond_Impl0_Next val inv6 (_x : borrowed i) : bool ensures { result = inv6 _x } - predicate reinitialize0 [#"../06_map_precond.rs" 118 4 118 29] (_1 : ()) = - [#"../06_map_precond.rs" 119 8 124 9] forall func : f . forall iter : borrowed i . inv2 func -> inv6 iter -> completed1 iter -> next_precondition0 ( ^ iter) func (Seq.empty ) /\ preservation0 ( ^ iter) func - val reinitialize0 [#"../06_map_precond.rs" 118 4 118 29] (_1 : ()) : bool + predicate reinitialize0 [#"../06_map_precond.rs" 117 4 117 29] (_1 : ()) = + [#"../06_map_precond.rs" 118 8 123 9] forall func : f . forall iter : borrowed i . inv2 func -> inv6 iter -> completed1 iter -> next_precondition0 ( ^ iter) func (Seq.empty ) /\ preservation0 ( ^ iter) func + val reinitialize0 [#"../06_map_precond.rs" 117 4 117 29] (_1 : ()) : bool ensures { result = reinitialize0 _1 } use C06MapPrecond_Map_Type as C06MapPrecond_Map_Type - predicate invariant10 [#"../06_map_precond.rs" 158 4 158 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) = - [#"../06_map_precond.rs" 160 12 162 73] reinitialize0 () /\ preservation_inv0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) /\ next_precondition0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) - val invariant10 [#"../06_map_precond.rs" 158 4 158 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) : bool + predicate invariant10 [#"../06_map_precond.rs" 157 4 157 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) = + [#"../06_map_precond.rs" 159 12 161 73] reinitialize0 () /\ preservation_inv0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) /\ next_precondition0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) + val invariant10 [#"../06_map_precond.rs" 157 4 157 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) : bool ensures { result = invariant10 self } predicate inv10 (_x : C06MapPrecond_Map_Type.t_map i b f item0) @@ -1490,47 +1490,47 @@ module C06MapPrecond_Impl0_Next ensures { result = produces1 self visited succ } use seq.Seq - predicate produces_one0 [#"../06_map_precond.rs" 143 4 143 57] (self : C06MapPrecond_Map_Type.t_map i b f item0) (visited : b) (succ : C06MapPrecond_Map_Type.t_map i b f item0) + predicate produces_one0 [#"../06_map_precond.rs" 142 4 142 57] (self : C06MapPrecond_Map_Type.t_map i b f item0) (visited : b) (succ : C06MapPrecond_Map_Type.t_map i b f item0) = - [#"../06_map_precond.rs" 144 8 150 9] exists f : borrowed f . inv7 f /\ * f = C06MapPrecond_Map_Type.map_func self /\ ^ f = C06MapPrecond_Map_Type.map_func succ /\ (exists e : item0 . inv11 e /\ produces0 (C06MapPrecond_Map_Type.map_iter self) (Seq.singleton e) (C06MapPrecond_Map_Type.map_iter succ) /\ Ghost.inner (C06MapPrecond_Map_Type.map_produced succ) = Seq.snoc (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) e /\ precondition0 ( * f) (e, C06MapPrecond_Map_Type.map_produced self) /\ postcondition_mut0 f (e, C06MapPrecond_Map_Type.map_produced self) visited) - val produces_one0 [#"../06_map_precond.rs" 143 4 143 57] (self : C06MapPrecond_Map_Type.t_map i b f item0) (visited : b) (succ : C06MapPrecond_Map_Type.t_map i b f item0) : bool - requires {[#"../06_map_precond.rs" 143 20 143 24] inv10 self} - requires {[#"../06_map_precond.rs" 143 26 143 33] inv9 visited} - requires {[#"../06_map_precond.rs" 143 38 143 42] inv10 succ} + [#"../06_map_precond.rs" 143 8 149 9] exists f : borrowed f . inv7 f /\ * f = C06MapPrecond_Map_Type.map_func self /\ ^ f = C06MapPrecond_Map_Type.map_func succ /\ (exists e : item0 . inv11 e /\ produces0 (C06MapPrecond_Map_Type.map_iter self) (Seq.singleton e) (C06MapPrecond_Map_Type.map_iter succ) /\ Ghost.inner (C06MapPrecond_Map_Type.map_produced succ) = Seq.snoc (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) e /\ precondition0 ( * f) (e, C06MapPrecond_Map_Type.map_produced self) /\ postcondition_mut0 f (e, C06MapPrecond_Map_Type.map_produced self) visited) + val produces_one0 [#"../06_map_precond.rs" 142 4 142 57] (self : C06MapPrecond_Map_Type.t_map i b f item0) (visited : b) (succ : C06MapPrecond_Map_Type.t_map i b f item0) : bool + requires {[#"../06_map_precond.rs" 142 20 142 24] inv10 self} + requires {[#"../06_map_precond.rs" 142 26 142 33] inv9 visited} + requires {[#"../06_map_precond.rs" 142 38 142 42] inv10 succ} ensures { result = produces_one0 self visited succ } - axiom produces_one0_spec : forall self : C06MapPrecond_Map_Type.t_map i b f item0, visited : b, succ : C06MapPrecond_Map_Type.t_map i b f item0 . ([#"../06_map_precond.rs" 143 20 143 24] inv10 self) -> ([#"../06_map_precond.rs" 143 26 143 33] inv9 visited) -> ([#"../06_map_precond.rs" 143 38 143 42] inv10 succ) -> ([#"../06_map_precond.rs" 142 14 142 68] produces_one0 self visited succ = produces1 self (Seq.singleton visited) succ) + axiom produces_one0_spec : forall self : C06MapPrecond_Map_Type.t_map i b f item0, visited : b, succ : C06MapPrecond_Map_Type.t_map i b f item0 . ([#"../06_map_precond.rs" 142 20 142 24] inv10 self) -> ([#"../06_map_precond.rs" 142 26 142 33] inv9 visited) -> ([#"../06_map_precond.rs" 142 38 142 42] inv10 succ) -> ([#"../06_map_precond.rs" 141 14 141 68] produces_one0 self visited succ = produces1 self (Seq.singleton visited) succ) predicate completed0 [#"../06_map_precond.rs" 21 4 21 35] (self : borrowed (C06MapPrecond_Map_Type.t_map i b f item0)) = - [#"../06_map_precond.rs" 22 8 25 9] Ghost.inner (C06MapPrecond_Map_Type.map_produced ( ^ self)) = Seq.empty /\ completed1 {current = C06MapPrecond_Map_Type.map_iter ( * self); final = C06MapPrecond_Map_Type.map_iter ( ^ self)} /\ C06MapPrecond_Map_Type.map_func ( * self) = C06MapPrecond_Map_Type.map_func ( ^ self) + [#"../06_map_precond.rs" 22 8 25 9] Ghost.inner (C06MapPrecond_Map_Type.map_produced ( ^ self)) = Seq.empty /\ completed1 (Borrow.borrow_logic (C06MapPrecond_Map_Type.map_iter ( * self)) (C06MapPrecond_Map_Type.map_iter ( ^ self)) (Borrow.inherit_id (Borrow.get_id self) 1)) /\ C06MapPrecond_Map_Type.map_func ( * self) = C06MapPrecond_Map_Type.map_func ( ^ self) val completed0 [#"../06_map_precond.rs" 21 4 21 35] (self : borrowed (C06MapPrecond_Map_Type.t_map i b f item0)) : bool ensures { result = completed0 self } - predicate resolve3 (self : borrowed (C06MapPrecond_Map_Type.t_map i b f item0)) = - [#"../../../../../creusot-contracts/src/resolve.rs" 25 20 25 34] ^ self = * self - val resolve3 (self : borrowed (C06MapPrecond_Map_Type.t_map i b f item0)) : bool + predicate resolve3 (self : Ghost.ghost_ty ()) + val resolve3 (self : Ghost.ghost_ty ()) : bool ensures { result = resolve3 self } - predicate resolve2 (self : Ghost.ghost_ty ()) - val resolve2 (self : Ghost.ghost_ty ()) : bool - ensures { result = resolve2 self } - use prelude.Ghost - function produces_one_invariant0 [#"../06_map_precond.rs" 133 4 133 73] (self : C06MapPrecond_Map_Type.t_map i b f item0) (e : item0) (r : b) (f : borrowed f) (iter : i) : () - - val produces_one_invariant0 [#"../06_map_precond.rs" 133 4 133 73] (self : C06MapPrecond_Map_Type.t_map i b f item0) (e : item0) (r : b) (f : borrowed f) (iter : i) : () - requires {[#"../06_map_precond.rs" 128 4 128 60] produces0 (C06MapPrecond_Map_Type.map_iter self) (Seq.singleton e) iter} - requires {[#"../06_map_precond.rs" 129 15 129 30] * f = C06MapPrecond_Map_Type.map_func self} - requires {[#"../06_map_precond.rs" 130 15 130 57] postcondition_mut0 f (e, C06MapPrecond_Map_Type.map_produced self) r} - requires {[#"../06_map_precond.rs" 133 30 133 34] inv10 self} - requires {[#"../06_map_precond.rs" 133 36 133 37] inv11 e} - requires {[#"../06_map_precond.rs" 133 48 133 49] inv9 r} - requires {[#"../06_map_precond.rs" 133 54 133 55] inv7 f} - requires {[#"../06_map_precond.rs" 133 65 133 69] inv0 iter} + function produces_one_invariant0 [#"../06_map_precond.rs" 132 4 132 73] (self : C06MapPrecond_Map_Type.t_map i b f item0) (e : item0) (r : b) (f : borrowed f) (iter : i) : () + + val produces_one_invariant0 [#"../06_map_precond.rs" 132 4 132 73] (self : C06MapPrecond_Map_Type.t_map i b f item0) (e : item0) (r : b) (f : borrowed f) (iter : i) : () + requires {[#"../06_map_precond.rs" 127 4 127 60] produces0 (C06MapPrecond_Map_Type.map_iter self) (Seq.singleton e) iter} + requires {[#"../06_map_precond.rs" 128 15 128 30] * f = C06MapPrecond_Map_Type.map_func self} + requires {[#"../06_map_precond.rs" 129 15 129 57] postcondition_mut0 f (e, C06MapPrecond_Map_Type.map_produced self) r} + requires {[#"../06_map_precond.rs" 132 30 132 34] inv10 self} + requires {[#"../06_map_precond.rs" 132 36 132 37] inv11 e} + requires {[#"../06_map_precond.rs" 132 48 132 49] inv9 r} + requires {[#"../06_map_precond.rs" 132 54 132 55] inv7 f} + requires {[#"../06_map_precond.rs" 132 65 132 69] inv0 iter} ensures { result = produces_one_invariant0 self e r f iter } - axiom produces_one_invariant0_spec : forall self : C06MapPrecond_Map_Type.t_map i b f item0, e : item0, r : b, f : borrowed f, iter : i . ([#"../06_map_precond.rs" 128 4 128 60] produces0 (C06MapPrecond_Map_Type.map_iter self) (Seq.singleton e) iter) -> ([#"../06_map_precond.rs" 129 15 129 30] * f = C06MapPrecond_Map_Type.map_func self) -> ([#"../06_map_precond.rs" 130 15 130 57] postcondition_mut0 f (e, C06MapPrecond_Map_Type.map_produced self) r) -> ([#"../06_map_precond.rs" 133 30 133 34] inv10 self) -> ([#"../06_map_precond.rs" 133 36 133 37] inv11 e) -> ([#"../06_map_precond.rs" 133 48 133 49] inv9 r) -> ([#"../06_map_precond.rs" 133 54 133 55] inv7 f) -> ([#"../06_map_precond.rs" 133 65 133 69] inv0 iter) -> ([#"../06_map_precond.rs" 132 14 132 70] next_precondition0 iter ( ^ f) (Seq.snoc (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) e)) && ([#"../06_map_precond.rs" 131 14 131 69] preservation_inv0 iter ( ^ f) (Seq.snoc (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) e)) + axiom produces_one_invariant0_spec : forall self : C06MapPrecond_Map_Type.t_map i b f item0, e : item0, r : b, f : borrowed f, iter : i . ([#"../06_map_precond.rs" 127 4 127 60] produces0 (C06MapPrecond_Map_Type.map_iter self) (Seq.singleton e) iter) -> ([#"../06_map_precond.rs" 128 15 128 30] * f = C06MapPrecond_Map_Type.map_func self) -> ([#"../06_map_precond.rs" 129 15 129 57] postcondition_mut0 f (e, C06MapPrecond_Map_Type.map_produced self) r) -> ([#"../06_map_precond.rs" 132 30 132 34] inv10 self) -> ([#"../06_map_precond.rs" 132 36 132 37] inv11 e) -> ([#"../06_map_precond.rs" 132 48 132 49] inv9 r) -> ([#"../06_map_precond.rs" 132 54 132 55] inv7 f) -> ([#"../06_map_precond.rs" 132 65 132 69] inv0 iter) -> ([#"../06_map_precond.rs" 131 14 131 70] next_precondition0 iter ( ^ f) (Seq.snoc (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) e)) && ([#"../06_map_precond.rs" 130 14 130 69] preservation_inv0 iter ( ^ f) (Seq.snoc (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) e)) + predicate resolve2 (self : borrowed (C06MapPrecond_Map_Type.t_map i b f item0)) = + [#"../../../../../creusot-contracts/src/resolve.rs" 25 20 25 34] ^ self = * self + val resolve2 (self : borrowed (C06MapPrecond_Map_Type.t_map i b f item0)) : bool + ensures { result = resolve2 self } + predicate resolve1 (self : Ghost.ghost_ty (Seq.seq item0)) val resolve1 (self : Ghost.ghost_ty (Seq.seq item0)) : bool ensures { result = resolve1 self } @@ -1577,8 +1577,8 @@ module C06MapPrecond_Impl0_Next goto BB0 } BB0 { - [#"../06_map_precond.rs" 64 14 64 30] _4 <- Borrow.borrow_mut (C06MapPrecond_Map_Type.map_iter ( * self)); - [#"../06_map_precond.rs" 64 14 64 30] self <- { self with current = (let C06MapPrecond_Map_Type.C_Map x0 x1 x2 = * self in C06MapPrecond_Map_Type.C_Map ( ^ _4) x1 x2) }; + [#"../06_map_precond.rs" 64 14 64 30] _4 <- Borrow.borrow_final (C06MapPrecond_Map_Type.map_iter ( * self)) (Borrow.inherit_id (Borrow.get_id self) 1); + [#"../06_map_precond.rs" 64 14 64 30] self <- { self with current = (let C06MapPrecond_Map_Type.C_Map x0 x1 x2 = * self in C06MapPrecond_Map_Type.C_Map ( ^ _4) x1 x2) ; }; assume { inv0 ( ^ _4) }; [#"../06_map_precond.rs" 64 14 64 30] _3 <- ([#"../06_map_precond.rs" 64 14 64 30] next0 _4); _4 <- any borrowed i; @@ -1593,7 +1593,7 @@ module C06MapPrecond_Impl0_Next BB2 { assert { [@expl:type invariant] inv1 _3 }; assume { resolve0 _3 }; - [#"../06_map_precond.rs" 75 32 75 50] _20 <- ([#"../06_map_precond.rs" 75 32 75 50] Ghost.new (Seq.empty )); + [#"../06_map_precond.rs" 74 32 74 50] _20 <- ([#"../06_map_precond.rs" 74 32 74 50] Ghost.new (Seq.empty )); goto BB14 } BB3 { @@ -1603,7 +1603,7 @@ module C06MapPrecond_Impl0_Next assert { [@expl:type invariant] inv1 _3 }; assume { resolve0 _3 }; assert { [@expl:type invariant] inv4 self }; - assume { resolve3 self }; + assume { resolve2 self }; assert { [#"../06_map_precond.rs" 64 14 64 30] false }; absurd } @@ -1620,8 +1620,8 @@ module C06MapPrecond_Impl0_Next goto BB7 } BB7 { - [#"../06_map_precond.rs" 68 24 68 35] _12 <- Borrow.borrow_mut (C06MapPrecond_Map_Type.map_func ( * self)); - [#"../06_map_precond.rs" 68 24 68 35] self <- { self with current = (let C06MapPrecond_Map_Type.C_Map x0 x1 x2 = * self in C06MapPrecond_Map_Type.C_Map x0 ( ^ _12) x2) }; + [#"../06_map_precond.rs" 68 24 68 35] _12 <- Borrow.borrow_final (C06MapPrecond_Map_Type.map_func ( * self)) (Borrow.inherit_id (Borrow.get_id self) 2); + [#"../06_map_precond.rs" 68 24 68 35] self <- { self with current = (let C06MapPrecond_Map_Type.C_Map x0 x1 x2 = * self in C06MapPrecond_Map_Type.C_Map x0 ( ^ _12) x2) ; }; assume { inv2 ( ^ _12) }; [#"../06_map_precond.rs" 68 24 68 53] r <- ([#"../06_map_precond.rs" 68 24 68 53] call_mut0 _12 ([#"../06_map_precond.rs" 68 24 68 53] (([#"../06_map_precond.rs" 68 36 68 37] v), ([#"../06_map_precond.rs" 68 39 68 52] C06MapPrecond_Map_Type.map_produced ( * self))))); _12 <- any borrowed f; @@ -1634,16 +1634,18 @@ module C06MapPrecond_Impl0_Next BB9 { assert { [@expl:type invariant] inv3 produced }; assume { resolve1 produced }; - [#"../06_map_precond.rs" 69 16 69 40] self <- { self with current = (let C06MapPrecond_Map_Type.C_Map x0 x1 x2 = * self in C06MapPrecond_Map_Type.C_Map x0 x1 ([#"../06_map_precond.rs" 69 32 69 40] produced)) }; + [#"../06_map_precond.rs" 69 16 69 40] self <- { self with current = (let C06MapPrecond_Map_Type.C_Map x0 x1 x2 = * self in C06MapPrecond_Map_Type.C_Map x0 x1 ([#"../06_map_precond.rs" 69 32 69 40] produced)) ; }; + assert { [@expl:type invariant] inv3 (C06MapPrecond_Map_Type.map_produced ( * self)) }; + assume { resolve1 (C06MapPrecond_Map_Type.map_produced ( * self)) }; + assert { [@expl:type invariant] inv4 self }; + assume { resolve2 self }; [#"../06_map_precond.rs" 70 16 70 52] _17 <- ([#"../06_map_precond.rs" 70 16 70 52] Ghost.new ()); goto BB10 } BB10 { - assume { resolve2 _17 }; - assert { [@expl:type invariant] inv4 self }; - assume { resolve3 self }; - [#"../06_map_precond.rs" 72 16 72 23] _0 <- ([#"../06_map_precond.rs" 72 16 72 23] Core_Option_Option_Type.C_Some ([#"../06_map_precond.rs" 72 21 72 22] r)); - [#"../06_map_precond.rs" 72 21 72 22] r <- any b; + assume { resolve3 _17 }; + [#"../06_map_precond.rs" 71 16 71 23] _0 <- ([#"../06_map_precond.rs" 71 16 71 23] Core_Option_Option_Type.C_Some ([#"../06_map_precond.rs" 71 21 71 22] r)); + [#"../06_map_precond.rs" 71 21 71 22] r <- any b; goto BB11 } BB11 { @@ -1656,13 +1658,13 @@ module C06MapPrecond_Impl0_Next goto BB15 } BB14 { - [#"../06_map_precond.rs" 75 16 75 50] self <- { self with current = (let C06MapPrecond_Map_Type.C_Map x0 x1 x2 = * self in C06MapPrecond_Map_Type.C_Map x0 x1 ([#"../06_map_precond.rs" 75 16 75 50] _20)) }; - [#"../06_map_precond.rs" 75 16 75 50] _20 <- any Ghost.ghost_ty (Seq.seq item0); + [#"../06_map_precond.rs" 74 16 74 50] self <- { self with current = (let C06MapPrecond_Map_Type.C_Map x0 x1 x2 = * self in C06MapPrecond_Map_Type.C_Map x0 x1 ([#"../06_map_precond.rs" 74 16 74 50] _20)) ; }; + [#"../06_map_precond.rs" 74 16 74 50] _20 <- any Ghost.ghost_ty (Seq.seq item0); assert { [@expl:type invariant] inv3 (C06MapPrecond_Map_Type.map_produced ( * self)) }; assume { resolve1 (C06MapPrecond_Map_Type.map_produced ( * self)) }; assert { [@expl:type invariant] inv4 self }; - assume { resolve3 self }; - [#"../06_map_precond.rs" 76 16 76 20] _0 <- ([#"../06_map_precond.rs" 76 16 76 20] Core_Option_Option_Type.C_None); + assume { resolve2 self }; + [#"../06_map_precond.rs" 75 16 75 20] _0 <- ([#"../06_map_precond.rs" 75 16 75 20] Core_Option_Option_Type.C_None); goto BB15 } BB15 { @@ -1806,42 +1808,42 @@ module C06MapPrecond_Map val inv1 (_x : item0) : bool ensures { result = inv1 _x } - predicate next_precondition0 [#"../06_map_precond.rs" 84 4 84 74] (iter : i) (func : f) (produced : Seq.seq item0) = - [#"../06_map_precond.rs" 85 8 89 9] forall i : i . forall e : item0 . inv0 i -> inv1 e -> produces0 iter (Seq.singleton e) i -> precondition0 func (e, Ghost.new produced) - val next_precondition0 [#"../06_map_precond.rs" 84 4 84 74] (iter : i) (func : f) (produced : Seq.seq item0) : bool + predicate next_precondition0 [#"../06_map_precond.rs" 83 4 83 74] (iter : i) (func : f) (produced : Seq.seq item0) = + [#"../06_map_precond.rs" 84 8 88 9] forall i : i . forall e : item0 . inv0 i -> inv1 e -> produces0 iter (Seq.singleton e) i -> precondition0 func (e, Ghost.new produced) + val next_precondition0 [#"../06_map_precond.rs" 83 4 83 74] (iter : i) (func : f) (produced : Seq.seq item0) : bool ensures { result = next_precondition0 iter func produced } use seq.Seq use seq.Seq - predicate preservation0 [#"../06_map_precond.rs" 106 4 106 45] (iter : i) (func : f) = - [#"../06_map_precond.rs" 107 8 114 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv0 i -> inv5 b -> inv6 f -> inv1 e2 -> inv1 e1 -> inv7 s -> unnest0 func ( * f) -> produces0 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new s) -> postcondition_mut0 f (e1, Ghost.new s) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc s e1)) - val preservation0 [#"../06_map_precond.rs" 106 4 106 45] (iter : i) (func : f) : bool + predicate preservation0 [#"../06_map_precond.rs" 105 4 105 45] (iter : i) (func : f) = + [#"../06_map_precond.rs" 106 8 113 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv0 i -> inv5 b -> inv6 f -> inv1 e2 -> inv1 e1 -> inv7 s -> unnest0 func ( * f) -> produces0 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new s) -> postcondition_mut0 f (e1, Ghost.new s) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc s e1)) + val preservation0 [#"../06_map_precond.rs" 105 4 105 45] (iter : i) (func : f) : bool ensures { result = preservation0 iter func } use seq.Seq - predicate preservation_inv0 [#"../06_map_precond.rs" 94 4 94 73] (iter : i) (func : f) (produced : Seq.seq item0) = - [#"../06_map_precond.rs" 95 8 102 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv0 i -> inv5 b -> inv6 f -> inv1 e2 -> inv1 e1 -> inv7 s -> unnest0 func ( * f) -> produces0 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new (Seq.(++) produced s)) -> postcondition_mut0 f (e1, Ghost.new (Seq.(++) produced s)) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc (Seq.(++) produced s) e1)) - val preservation_inv0 [#"../06_map_precond.rs" 94 4 94 73] (iter : i) (func : f) (produced : Seq.seq item0) : bool - requires {[#"../06_map_precond.rs" 94 24 94 28] inv0 iter} - requires {[#"../06_map_precond.rs" 94 33 94 37] inv2 func} - requires {[#"../06_map_precond.rs" 94 42 94 50] inv7 produced} + predicate preservation_inv0 [#"../06_map_precond.rs" 93 4 93 73] (iter : i) (func : f) (produced : Seq.seq item0) = + [#"../06_map_precond.rs" 94 8 101 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv0 i -> inv5 b -> inv6 f -> inv1 e2 -> inv1 e1 -> inv7 s -> unnest0 func ( * f) -> produces0 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new (Seq.(++) produced s)) -> postcondition_mut0 f (e1, Ghost.new (Seq.(++) produced s)) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc (Seq.(++) produced s) e1)) + val preservation_inv0 [#"../06_map_precond.rs" 93 4 93 73] (iter : i) (func : f) (produced : Seq.seq item0) : bool + requires {[#"../06_map_precond.rs" 93 24 93 28] inv0 iter} + requires {[#"../06_map_precond.rs" 93 33 93 37] inv2 func} + requires {[#"../06_map_precond.rs" 93 42 93 50] inv7 produced} ensures { result = preservation_inv0 iter func produced } - axiom preservation_inv0_spec : forall iter : i, func : f, produced : Seq.seq item0 . ([#"../06_map_precond.rs" 94 24 94 28] inv0 iter) -> ([#"../06_map_precond.rs" 94 33 94 37] inv2 func) -> ([#"../06_map_precond.rs" 94 42 94 50] inv7 produced) -> ([#"../06_map_precond.rs" 93 4 93 83] produced = Seq.empty -> preservation_inv0 iter func produced = preservation0 iter func) + axiom preservation_inv0_spec : forall iter : i, func : f, produced : Seq.seq item0 . ([#"../06_map_precond.rs" 93 24 93 28] inv0 iter) -> ([#"../06_map_precond.rs" 93 33 93 37] inv2 func) -> ([#"../06_map_precond.rs" 93 42 93 50] inv7 produced) -> ([#"../06_map_precond.rs" 92 4 92 83] produced = Seq.empty -> preservation_inv0 iter func produced = preservation0 iter func) use prelude.Ghost predicate completed0 [#"../common.rs" 11 4 11 36] (self : borrowed i) val completed0 [#"../common.rs" 11 4 11 36] (self : borrowed i) : bool ensures { result = completed0 self } - predicate reinitialize0 [#"../06_map_precond.rs" 118 4 118 29] (_1 : ()) = - [#"../06_map_precond.rs" 119 8 124 9] forall func : f . forall iter : borrowed i . inv2 func -> inv4 iter -> completed0 iter -> next_precondition0 ( ^ iter) func (Seq.empty ) /\ preservation0 ( ^ iter) func - val reinitialize0 [#"../06_map_precond.rs" 118 4 118 29] (_1 : ()) : bool + predicate reinitialize0 [#"../06_map_precond.rs" 117 4 117 29] (_1 : ()) = + [#"../06_map_precond.rs" 118 8 123 9] forall func : f . forall iter : borrowed i . inv2 func -> inv4 iter -> completed0 iter -> next_precondition0 ( ^ iter) func (Seq.empty ) /\ preservation0 ( ^ iter) func + val reinitialize0 [#"../06_map_precond.rs" 117 4 117 29] (_1 : ()) : bool ensures { result = reinitialize0 _1 } use C06MapPrecond_Map_Type as C06MapPrecond_Map_Type - predicate invariant3 [#"../06_map_precond.rs" 158 4 158 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) = - [#"../06_map_precond.rs" 160 12 162 73] reinitialize0 () /\ preservation_inv0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) /\ next_precondition0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) - val invariant3 [#"../06_map_precond.rs" 158 4 158 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) : bool + predicate invariant3 [#"../06_map_precond.rs" 157 4 157 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) = + [#"../06_map_precond.rs" 159 12 161 73] reinitialize0 () /\ preservation_inv0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) /\ next_precondition0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) + val invariant3 [#"../06_map_precond.rs" 157 4 157 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) : bool ensures { result = invariant3 self } predicate inv3 (_x : C06MapPrecond_Map_Type.t_map i b f item0) @@ -1885,14 +1887,14 @@ module C06MapPrecond_Map ensures { result = produces_refl0 a } axiom produces_refl0_spec : forall a : i . ([#"../common.rs" 15 21 15 22] inv0 a) -> ([#"../common.rs" 14 14 14 39] produces0 a (Seq.empty ) a) - let rec cfg map [#"../06_map_precond.rs" 171 0 174 17] [@cfg:stackify] [@cfg:subregion_analysis] (iter : i) (func : f) : C06MapPrecond_Map_Type.t_map i b f item0 - requires {[#"../06_map_precond.rs" 167 0 167 128] forall i2 : i . forall e : item0 . inv0 i2 -> inv1 e -> produces0 iter (Seq.singleton e) i2 -> precondition0 func (e, Ghost.new (Seq.empty ))} - requires {[#"../06_map_precond.rs" 168 11 168 41] reinitialize0 ()} - requires {[#"../06_map_precond.rs" 169 11 169 51] preservation0 iter func} - requires {[#"../06_map_precond.rs" 172 4 172 8] inv0 iter} - requires {[#"../06_map_precond.rs" 173 4 173 8] inv2 func} - ensures { [#"../06_map_precond.rs" 170 10 170 72] result = C06MapPrecond_Map_Type.C_Map iter func (Ghost.new (Seq.empty )) } - ensures { [#"../06_map_precond.rs" 174 5 174 17] inv3 result } + let rec cfg map [#"../06_map_precond.rs" 170 0 173 17] [@cfg:stackify] [@cfg:subregion_analysis] (iter : i) (func : f) : C06MapPrecond_Map_Type.t_map i b f item0 + requires {[#"../06_map_precond.rs" 166 0 166 128] forall i2 : i . forall e : item0 . inv0 i2 -> inv1 e -> produces0 iter (Seq.singleton e) i2 -> precondition0 func (e, Ghost.new (Seq.empty ))} + requires {[#"../06_map_precond.rs" 167 11 167 41] reinitialize0 ()} + requires {[#"../06_map_precond.rs" 168 11 168 51] preservation0 iter func} + requires {[#"../06_map_precond.rs" 171 4 171 8] inv0 iter} + requires {[#"../06_map_precond.rs" 172 4 172 8] inv2 func} + ensures { [#"../06_map_precond.rs" 169 10 169 72] result = C06MapPrecond_Map_Type.C_Map iter func (Ghost.new (Seq.empty )) } + ensures { [#"../06_map_precond.rs" 173 5 173 17] inv3 result } = [@vc:do_not_keep_trace] [@vc:sp] var _0 : C06MapPrecond_Map_Type.t_map i b f item0; @@ -1912,13 +1914,13 @@ module C06MapPrecond_Map goto BB3 } BB3 { - [#"../06_map_precond.rs" 175 32 175 48] _9 <- ([#"../06_map_precond.rs" 175 32 175 48] Ghost.new (Seq.empty )); + [#"../06_map_precond.rs" 174 32 174 48] _9 <- ([#"../06_map_precond.rs" 174 32 174 48] Ghost.new (Seq.empty )); goto BB4 } BB4 { - [#"../06_map_precond.rs" 175 4 175 50] _0 <- ([#"../06_map_precond.rs" 175 4 175 50] C06MapPrecond_Map_Type.C_Map ([#"../06_map_precond.rs" 175 10 175 14] iter) ([#"../06_map_precond.rs" 175 16 175 20] func) _9); - [#"../06_map_precond.rs" 175 10 175 14] iter <- any i; - [#"../06_map_precond.rs" 175 16 175 20] func <- any f; + [#"../06_map_precond.rs" 174 4 174 50] _0 <- ([#"../06_map_precond.rs" 174 4 174 50] C06MapPrecond_Map_Type.C_Map ([#"../06_map_precond.rs" 174 10 174 14] iter) ([#"../06_map_precond.rs" 174 16 174 20] func) _9); + [#"../06_map_precond.rs" 174 10 174 14] iter <- any i; + [#"../06_map_precond.rs" 174 16 174 20] func <- any f; _9 <- any Ghost.ghost_ty (Seq.seq item0); goto BB5 } @@ -2014,7 +2016,7 @@ module C06MapPrecond_Identity_Closure0 axiom produces_refl0_spec : forall a : i . ([#"../common.rs" 15 21 15 22] inv2 a) -> ([#"../common.rs" 14 14 14 39] produces0 a (Seq.empty ) a) use prelude.Int16 use C06MapPrecond_Identity_Closure0_Type as C06MapPrecond_Identity_Closure0 - predicate unnest0 [#"../06_map_precond.rs" 179 14 179 20] (self : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) (_2 : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) + predicate unnest0 [#"../06_map_precond.rs" 178 14 178 20] (self : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) (_2 : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) = true @@ -2028,11 +2030,11 @@ module C06MapPrecond_Identity_Closure0 val resolve0 (self : Ghost.ghost_ty (Seq.seq item0)) : bool ensures { result = resolve0 self } - let rec cfg c06MapPrecond_Identity_Closure0 [#"../06_map_precond.rs" 179 14 179 20] [@cfg:stackify] [@cfg:subregion_analysis] (_1 : borrowed (C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i)) (x : item0) (_3 : Ghost.ghost_ty (Seq.seq item0)) : item0 - requires {[#"../06_map_precond.rs" 179 15 179 16] inv1 x} + let rec cfg c06MapPrecond_Identity_Closure0 [#"../06_map_precond.rs" 178 14 178 20] [@cfg:stackify] [@cfg:subregion_analysis] (_1 : borrowed (C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i)) (x : item0) (_3 : Ghost.ghost_ty (Seq.seq item0)) : item0 + requires {[#"../06_map_precond.rs" 178 15 178 16] inv1 x} requires {inv0 _3} ensures { unnest0 ( * _1) ( ^ _1) } - ensures { [#"../06_map_precond.rs" 179 14 179 20] inv1 result } + ensures { [#"../06_map_precond.rs" 178 14 178 20] inv1 result } = [@vc:do_not_keep_trace] [@vc:sp] var _0 : item0; @@ -2043,8 +2045,8 @@ module C06MapPrecond_Identity_Closure0 goto BB0 } BB0 { - [#"../06_map_precond.rs" 179 21 179 22] _0 <- ([#"../06_map_precond.rs" 179 21 179 22] x); - [#"../06_map_precond.rs" 179 21 179 22] x <- any item0; + [#"../06_map_precond.rs" 178 21 178 22] _0 <- ([#"../06_map_precond.rs" 178 21 178 22] x); + [#"../06_map_precond.rs" 178 21 178 22] x <- any item0; assert { [@expl:type invariant] inv0 _3 }; assume { resolve0 _3 }; assume { resolve1 _1 }; @@ -2151,62 +2153,62 @@ module C06MapPrecond_Identity ensures { result = produces_refl0 a } axiom produces_refl0_spec : forall a : i . ([#"../common.rs" 15 21 15 22] inv1 a) -> ([#"../common.rs" 14 14 14 39] produces0 a (Seq.empty ) a) - predicate precondition0 [#"../06_map_precond.rs" 179 14 179 20] (self : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) (args : (item0, Ghost.ghost_ty (Seq.seq item0))) + predicate precondition0 [#"../06_map_precond.rs" 178 14 178 20] (self : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) (args : (item0, Ghost.ghost_ty (Seq.seq item0))) = let (x, _3) = args in true use prelude.Ghost use seq.Seq - predicate next_precondition0 [#"../06_map_precond.rs" 84 4 84 74] (iter : i) (func : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) (produced : Seq.seq item0) + predicate next_precondition0 [#"../06_map_precond.rs" 83 4 83 74] (iter : i) (func : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) (produced : Seq.seq item0) = - [#"../06_map_precond.rs" 85 8 89 9] forall i : i . forall e : item0 . inv1 i -> inv2 e -> produces0 iter (Seq.singleton e) i -> precondition0 func (e, Ghost.new produced) - val next_precondition0 [#"../06_map_precond.rs" 84 4 84 74] (iter : i) (func : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) (produced : Seq.seq item0) : bool + [#"../06_map_precond.rs" 84 8 88 9] forall i : i . forall e : item0 . inv1 i -> inv2 e -> produces0 iter (Seq.singleton e) i -> precondition0 func (e, Ghost.new produced) + val next_precondition0 [#"../06_map_precond.rs" 83 4 83 74] (iter : i) (func : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) (produced : Seq.seq item0) : bool ensures { result = next_precondition0 iter func produced } - predicate unnest0 [#"../06_map_precond.rs" 179 14 179 20] (self : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) (_2 : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) + predicate unnest0 [#"../06_map_precond.rs" 178 14 178 20] (self : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) (_2 : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) = true - predicate postcondition_mut0 [#"../06_map_precond.rs" 179 14 179 20] (self : borrowed (C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i)) (args : (item0, Ghost.ghost_ty (Seq.seq item0))) (result : item0) + predicate postcondition_mut0 [#"../06_map_precond.rs" 178 14 178 20] (self : borrowed (C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i)) (args : (item0, Ghost.ghost_ty (Seq.seq item0))) (result : item0) = (let (x, _3) = args in true) /\ unnest0 ( * self) ( ^ self) use seq.Seq - predicate preservation0 [#"../06_map_precond.rs" 106 4 106 45] (iter : i) (func : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) + predicate preservation0 [#"../06_map_precond.rs" 105 4 105 45] (iter : i) (func : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) = - [#"../06_map_precond.rs" 107 8 114 9] forall i : i . forall b : item0 . forall f : borrowed (C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv1 i -> inv2 b -> inv5 f -> inv2 e2 -> inv2 e1 -> inv6 s -> unnest0 func ( * f) -> produces0 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new s) -> postcondition_mut0 f (e1, Ghost.new s) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc s e1)) - val preservation0 [#"../06_map_precond.rs" 106 4 106 45] (iter : i) (func : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) : bool + [#"../06_map_precond.rs" 106 8 113 9] forall i : i . forall b : item0 . forall f : borrowed (C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv1 i -> inv2 b -> inv5 f -> inv2 e2 -> inv2 e1 -> inv6 s -> unnest0 func ( * f) -> produces0 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new s) -> postcondition_mut0 f (e1, Ghost.new s) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc s e1)) + val preservation0 [#"../06_map_precond.rs" 105 4 105 45] (iter : i) (func : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) : bool ensures { result = preservation0 iter func } - predicate preservation_inv0 [#"../06_map_precond.rs" 94 4 94 73] (iter : i) (func : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) (produced : Seq.seq item0) + predicate preservation_inv0 [#"../06_map_precond.rs" 93 4 93 73] (iter : i) (func : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) (produced : Seq.seq item0) = - [#"../06_map_precond.rs" 95 8 102 9] forall i : i . forall b : item0 . forall f : borrowed (C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv1 i -> inv2 b -> inv5 f -> inv2 e2 -> inv2 e1 -> inv6 s -> unnest0 func ( * f) -> produces0 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new (Seq.(++) produced s)) -> postcondition_mut0 f (e1, Ghost.new (Seq.(++) produced s)) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc (Seq.(++) produced s) e1)) - val preservation_inv0 [#"../06_map_precond.rs" 94 4 94 73] (iter : i) (func : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) (produced : Seq.seq item0) : bool - requires {[#"../06_map_precond.rs" 94 24 94 28] inv1 iter} - requires {[#"../06_map_precond.rs" 94 33 94 37] inv3 func} - requires {[#"../06_map_precond.rs" 94 42 94 50] inv6 produced} + [#"../06_map_precond.rs" 94 8 101 9] forall i : i . forall b : item0 . forall f : borrowed (C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv1 i -> inv2 b -> inv5 f -> inv2 e2 -> inv2 e1 -> inv6 s -> unnest0 func ( * f) -> produces0 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new (Seq.(++) produced s)) -> postcondition_mut0 f (e1, Ghost.new (Seq.(++) produced s)) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc (Seq.(++) produced s) e1)) + val preservation_inv0 [#"../06_map_precond.rs" 93 4 93 73] (iter : i) (func : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) (produced : Seq.seq item0) : bool + requires {[#"../06_map_precond.rs" 93 24 93 28] inv1 iter} + requires {[#"../06_map_precond.rs" 93 33 93 37] inv3 func} + requires {[#"../06_map_precond.rs" 93 42 93 50] inv6 produced} ensures { result = preservation_inv0 iter func produced } - axiom preservation_inv0_spec : forall iter : i, func : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i, produced : Seq.seq item0 . ([#"../06_map_precond.rs" 94 24 94 28] inv1 iter) -> ([#"../06_map_precond.rs" 94 33 94 37] inv3 func) -> ([#"../06_map_precond.rs" 94 42 94 50] inv6 produced) -> ([#"../06_map_precond.rs" 93 4 93 83] produced = Seq.empty -> preservation_inv0 iter func produced = preservation0 iter func) + axiom preservation_inv0_spec : forall iter : i, func : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i, produced : Seq.seq item0 . ([#"../06_map_precond.rs" 93 24 93 28] inv1 iter) -> ([#"../06_map_precond.rs" 93 33 93 37] inv3 func) -> ([#"../06_map_precond.rs" 93 42 93 50] inv6 produced) -> ([#"../06_map_precond.rs" 92 4 92 83] produced = Seq.empty -> preservation_inv0 iter func produced = preservation0 iter func) use prelude.Ghost predicate completed0 [#"../common.rs" 11 4 11 36] (self : borrowed i) val completed0 [#"../common.rs" 11 4 11 36] (self : borrowed i) : bool ensures { result = completed0 self } - predicate reinitialize0 [#"../06_map_precond.rs" 118 4 118 29] (_1 : ()) = - [#"../06_map_precond.rs" 119 8 124 9] forall func : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i . forall iter : borrowed i . inv3 func -> inv4 iter -> completed0 iter -> next_precondition0 ( ^ iter) func (Seq.empty ) /\ preservation0 ( ^ iter) func - val reinitialize0 [#"../06_map_precond.rs" 118 4 118 29] (_1 : ()) : bool + predicate reinitialize0 [#"../06_map_precond.rs" 117 4 117 29] (_1 : ()) = + [#"../06_map_precond.rs" 118 8 123 9] forall func : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i . forall iter : borrowed i . inv3 func -> inv4 iter -> completed0 iter -> next_precondition0 ( ^ iter) func (Seq.empty ) /\ preservation0 ( ^ iter) func + val reinitialize0 [#"../06_map_precond.rs" 117 4 117 29] (_1 : ()) : bool ensures { result = reinitialize0 _1 } use C06MapPrecond_Map_Type as C06MapPrecond_Map_Type - predicate invariant0 [#"../06_map_precond.rs" 158 4 158 30] (self : C06MapPrecond_Map_Type.t_map i item0 (C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) item0) + predicate invariant0 [#"../06_map_precond.rs" 157 4 157 30] (self : C06MapPrecond_Map_Type.t_map i item0 (C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) item0) = - [#"../06_map_precond.rs" 160 12 162 73] reinitialize0 () /\ preservation_inv0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) /\ next_precondition0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) - val invariant0 [#"../06_map_precond.rs" 158 4 158 30] (self : C06MapPrecond_Map_Type.t_map i item0 (C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) item0) : bool + [#"../06_map_precond.rs" 159 12 161 73] reinitialize0 () /\ preservation_inv0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) /\ next_precondition0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) + val invariant0 [#"../06_map_precond.rs" 157 4 157 30] (self : C06MapPrecond_Map_Type.t_map i item0 (C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) item0) : bool ensures { result = invariant0 self } predicate inv0 (_x : C06MapPrecond_Map_Type.t_map i item0 (C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) item0) @@ -2222,17 +2224,17 @@ module C06MapPrecond_Identity val resolve0 (self : C06MapPrecond_Map_Type.t_map i item0 (C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) item0) : bool ensures { result = resolve0 self } - val map0 [#"../06_map_precond.rs" 171 0 174 17] (iter : i) (func : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) : C06MapPrecond_Map_Type.t_map i item0 (C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) item0 - requires {[#"../06_map_precond.rs" 167 0 167 128] forall i2 : i . forall e : item0 . inv1 i2 -> inv2 e -> produces0 iter (Seq.singleton e) i2 -> precondition0 func (e, Ghost.new (Seq.empty ))} - requires {[#"../06_map_precond.rs" 168 11 168 41] reinitialize0 ()} - requires {[#"../06_map_precond.rs" 169 11 169 51] preservation0 iter func} - requires {[#"../06_map_precond.rs" 172 4 172 8] inv1 iter} - requires {[#"../06_map_precond.rs" 173 4 173 8] inv3 func} - ensures { [#"../06_map_precond.rs" 170 10 170 72] result = C06MapPrecond_Map_Type.C_Map iter func (Ghost.new (Seq.empty )) } - ensures { [#"../06_map_precond.rs" 174 5 174 17] inv0 result } + val map0 [#"../06_map_precond.rs" 170 0 173 17] (iter : i) (func : C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) : C06MapPrecond_Map_Type.t_map i item0 (C06MapPrecond_Identity_Closure0.c06mapprecond_identity_closure0 i) item0 + requires {[#"../06_map_precond.rs" 166 0 166 128] forall i2 : i . forall e : item0 . inv1 i2 -> inv2 e -> produces0 iter (Seq.singleton e) i2 -> precondition0 func (e, Ghost.new (Seq.empty ))} + requires {[#"../06_map_precond.rs" 167 11 167 41] reinitialize0 ()} + requires {[#"../06_map_precond.rs" 168 11 168 51] preservation0 iter func} + requires {[#"../06_map_precond.rs" 171 4 171 8] inv1 iter} + requires {[#"../06_map_precond.rs" 172 4 172 8] inv3 func} + ensures { [#"../06_map_precond.rs" 169 10 169 72] result = C06MapPrecond_Map_Type.C_Map iter func (Ghost.new (Seq.empty )) } + ensures { [#"../06_map_precond.rs" 173 5 173 17] inv0 result } - let rec cfg identity [#"../06_map_precond.rs" 178 0 178 37] [@cfg:stackify] [@cfg:subregion_analysis] (iter : i) : () - requires {[#"../06_map_precond.rs" 178 29 178 33] inv1 iter} + let rec cfg identity [#"../06_map_precond.rs" 177 0 177 37] [@cfg:stackify] [@cfg:subregion_analysis] (iter : i) : () + requires {[#"../06_map_precond.rs" 177 29 177 33] inv1 iter} = [@vc:do_not_keep_trace] [@vc:sp] var _0 : (); @@ -2242,8 +2244,8 @@ module C06MapPrecond_Identity goto BB0 } BB0 { - [#"../06_map_precond.rs" 179 4 179 23] _2 <- ([#"../06_map_precond.rs" 179 4 179 23] map0 ([#"../06_map_precond.rs" 179 8 179 12] iter) ([#"../06_map_precond.rs" 179 14 179 22] C06MapPrecond_Identity_Closure0.C06MapPrecond_Identity_Closure0)); - [#"../06_map_precond.rs" 179 8 179 12] iter <- any i; + [#"../06_map_precond.rs" 178 4 178 23] _2 <- ([#"../06_map_precond.rs" 178 4 178 23] map0 ([#"../06_map_precond.rs" 178 8 178 12] iter) ([#"../06_map_precond.rs" 178 14 178 22] C06MapPrecond_Identity_Closure0.C06MapPrecond_Identity_Closure0)); + [#"../06_map_precond.rs" 178 8 178 12] iter <- any i; goto BB1 } BB1 { @@ -2252,7 +2254,7 @@ module C06MapPrecond_Identity goto BB2 } BB2 { - [#"../06_map_precond.rs" 178 38 180 1] _0 <- ([#"../06_map_precond.rs" 178 38 180 1] ()); + [#"../06_map_precond.rs" 177 38 179 1] _0 <- ([#"../06_map_precond.rs" 177 38 179 1] ()); goto BB3 } BB3 { @@ -2276,7 +2278,7 @@ module C06MapPrecond_Increment_Closure2 use seq.Seq use prelude.Ghost use C06MapPrecond_Increment_Closure2_Type as C06MapPrecond_Increment_Closure2 - predicate unnest0 [#"../06_map_precond.rs" 190 8 190 35] (self : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) (_2 : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) + predicate unnest0 [#"../06_map_precond.rs" 189 8 189 35] (self : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) (_2 : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) = true @@ -2288,9 +2290,9 @@ module C06MapPrecond_Increment_Closure2 val resolve0 (self : borrowed (C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u)) : bool ensures { result = resolve0 self } - let rec cfg c06MapPrecond_Increment_Closure2 [#"../06_map_precond.rs" 190 8 190 35] [@cfg:stackify] [@cfg:subregion_analysis] (_1 : borrowed (C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u)) (x : uint32) (_3 : Ghost.ghost_ty (Seq.seq uint32)) : uint32 - requires {[#"../06_map_precond.rs" 189 19 189 27] UInt32.to_int x <= 15} - ensures { [#"../06_map_precond.rs" 190 18 190 33] UInt32.to_int result = UInt32.to_int x + 1 } + let rec cfg c06MapPrecond_Increment_Closure2 [#"../06_map_precond.rs" 189 8 189 35] [@cfg:stackify] [@cfg:subregion_analysis] (_1 : borrowed (C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u)) (x : uint32) (_3 : Ghost.ghost_ty (Seq.seq uint32)) : uint32 + requires {[#"../06_map_precond.rs" 188 19 188 27] UInt32.to_int x <= 15} + ensures { [#"../06_map_precond.rs" 189 18 189 33] UInt32.to_int result = UInt32.to_int x + 1 } ensures { unnest0 ( * _1) ( ^ _1) } = [@vc:do_not_keep_trace] [@vc:sp] @@ -2304,9 +2306,9 @@ module C06MapPrecond_Increment_Closure2 } BB0 { assume { resolve0 _1 }; - [#"../06_map_precond.rs" 191 20 191 25] res1 <- ([#"../06_map_precond.rs" 191 20 191 25] ([#"../06_map_precond.rs" 191 20 191 21] x) + ([#"../06_map_precond.rs" 191 24 191 25] [#"../06_map_precond.rs" 191 24 191 25] (1 : uint32))); - [#"../06_map_precond.rs" 189 8 189 29] res <- ([#"../06_map_precond.rs" 189 8 189 29] res1); - [#"../06_map_precond.rs" 190 8 190 35] _0 <- ([#"../06_map_precond.rs" 190 8 190 35] res); + [#"../06_map_precond.rs" 190 20 190 25] res1 <- ([#"../06_map_precond.rs" 190 20 190 25] ([#"../06_map_precond.rs" 190 20 190 21] x) + ([#"../06_map_precond.rs" 190 24 190 25] [#"../06_map_precond.rs" 190 24 190 25] (1 : uint32))); + [#"../06_map_precond.rs" 188 8 188 29] res <- ([#"../06_map_precond.rs" 188 8 188 29] res1); + [#"../06_map_precond.rs" 189 8 189 35] _0 <- ([#"../06_map_precond.rs" 189 8 189 35] res); return _0 } @@ -2429,20 +2431,20 @@ module C06MapPrecond_Increment val inv0 (_x : C06MapPrecond_Map_Type.t_map u uint32 (C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) uint32) : bool ensures { result = inv0 _x } - predicate unnest0 [#"../06_map_precond.rs" 190 8 190 35] (self : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) (_2 : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) + predicate unnest0 [#"../06_map_precond.rs" 189 8 189 35] (self : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) (_2 : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) = true use prelude.UInt32 use prelude.Int - predicate postcondition_mut0 [#"../06_map_precond.rs" 190 8 190 35] (self : borrowed (C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u)) (args : (uint32, Ghost.ghost_ty (Seq.seq uint32))) (result : uint32) + predicate postcondition_mut0 [#"../06_map_precond.rs" 189 8 189 35] (self : borrowed (C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u)) (args : (uint32, Ghost.ghost_ty (Seq.seq uint32))) (result : uint32) = (let (x, _3) = args in UInt32.to_int result = UInt32.to_int x + 1) /\ unnest0 ( * self) ( ^ self) - predicate precondition0 [#"../06_map_precond.rs" 190 8 190 35] (self : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) (args : (uint32, Ghost.ghost_ty (Seq.seq uint32))) + predicate precondition0 [#"../06_map_precond.rs" 189 8 189 35] (self : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) (args : (uint32, Ghost.ghost_ty (Seq.seq uint32))) = - [#"../06_map_precond.rs" 189 19 189 27] let (x, _3) = args in UInt32.to_int x <= 15 + [#"../06_map_precond.rs" 188 19 188 27] let (x, _3) = args in UInt32.to_int x <= 15 use prelude.Ghost use seq_ext.SeqExt use seq.Seq @@ -2487,46 +2489,46 @@ module C06MapPrecond_Increment axiom produces_refl0_spec : forall a : C06MapPrecond_Map_Type.t_map u uint32 (C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) uint32 . ([#"../06_map_precond.rs" 31 21 31 22] inv0 a) -> ([#"../06_map_precond.rs" 30 14 30 39] produces0 a (Seq.empty ) a) use seq.Seq - predicate next_precondition0 [#"../06_map_precond.rs" 84 4 84 74] (iter : u) (func : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) (produced : Seq.seq uint32) + predicate next_precondition0 [#"../06_map_precond.rs" 83 4 83 74] (iter : u) (func : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) (produced : Seq.seq uint32) = - [#"../06_map_precond.rs" 85 8 89 9] forall i : u . forall e : uint32 . inv2 i -> inv3 e -> produces1 iter (Seq.singleton e) i -> precondition0 func (e, Ghost.new produced) - val next_precondition0 [#"../06_map_precond.rs" 84 4 84 74] (iter : u) (func : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) (produced : Seq.seq uint32) : bool + [#"../06_map_precond.rs" 84 8 88 9] forall i : u . forall e : uint32 . inv2 i -> inv3 e -> produces1 iter (Seq.singleton e) i -> precondition0 func (e, Ghost.new produced) + val next_precondition0 [#"../06_map_precond.rs" 83 4 83 74] (iter : u) (func : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) (produced : Seq.seq uint32) : bool ensures { result = next_precondition0 iter func produced } use seq.Seq - predicate preservation0 [#"../06_map_precond.rs" 106 4 106 45] (iter : u) (func : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) + predicate preservation0 [#"../06_map_precond.rs" 105 4 105 45] (iter : u) (func : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) = - [#"../06_map_precond.rs" 107 8 114 9] forall i : u . forall b : uint32 . forall f : borrowed (C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) . forall e2 : uint32 . forall e1 : uint32 . forall s : Seq.seq uint32 . inv2 i -> inv3 b -> inv7 f -> inv3 e2 -> inv3 e1 -> inv5 s -> unnest0 func ( * f) -> produces1 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new s) -> postcondition_mut0 f (e1, Ghost.new s) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc s e1)) - val preservation0 [#"../06_map_precond.rs" 106 4 106 45] (iter : u) (func : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) : bool + [#"../06_map_precond.rs" 106 8 113 9] forall i : u . forall b : uint32 . forall f : borrowed (C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) . forall e2 : uint32 . forall e1 : uint32 . forall s : Seq.seq uint32 . inv2 i -> inv3 b -> inv7 f -> inv3 e2 -> inv3 e1 -> inv5 s -> unnest0 func ( * f) -> produces1 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new s) -> postcondition_mut0 f (e1, Ghost.new s) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc s e1)) + val preservation0 [#"../06_map_precond.rs" 105 4 105 45] (iter : u) (func : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) : bool ensures { result = preservation0 iter func } - predicate preservation_inv0 [#"../06_map_precond.rs" 94 4 94 73] (iter : u) (func : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) (produced : Seq.seq uint32) + predicate preservation_inv0 [#"../06_map_precond.rs" 93 4 93 73] (iter : u) (func : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) (produced : Seq.seq uint32) = - [#"../06_map_precond.rs" 95 8 102 9] forall i : u . forall b : uint32 . forall f : borrowed (C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) . forall e2 : uint32 . forall e1 : uint32 . forall s : Seq.seq uint32 . inv2 i -> inv3 b -> inv7 f -> inv3 e2 -> inv3 e1 -> inv5 s -> unnest0 func ( * f) -> produces1 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new (Seq.(++) produced s)) -> postcondition_mut0 f (e1, Ghost.new (Seq.(++) produced s)) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc (Seq.(++) produced s) e1)) - val preservation_inv0 [#"../06_map_precond.rs" 94 4 94 73] (iter : u) (func : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) (produced : Seq.seq uint32) : bool - requires {[#"../06_map_precond.rs" 94 24 94 28] inv2 iter} - requires {[#"../06_map_precond.rs" 94 33 94 37] inv4 func} - requires {[#"../06_map_precond.rs" 94 42 94 50] inv5 produced} + [#"../06_map_precond.rs" 94 8 101 9] forall i : u . forall b : uint32 . forall f : borrowed (C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) . forall e2 : uint32 . forall e1 : uint32 . forall s : Seq.seq uint32 . inv2 i -> inv3 b -> inv7 f -> inv3 e2 -> inv3 e1 -> inv5 s -> unnest0 func ( * f) -> produces1 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new (Seq.(++) produced s)) -> postcondition_mut0 f (e1, Ghost.new (Seq.(++) produced s)) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc (Seq.(++) produced s) e1)) + val preservation_inv0 [#"../06_map_precond.rs" 93 4 93 73] (iter : u) (func : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) (produced : Seq.seq uint32) : bool + requires {[#"../06_map_precond.rs" 93 24 93 28] inv2 iter} + requires {[#"../06_map_precond.rs" 93 33 93 37] inv4 func} + requires {[#"../06_map_precond.rs" 93 42 93 50] inv5 produced} ensures { result = preservation_inv0 iter func produced } - axiom preservation_inv0_spec : forall iter : u, func : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u, produced : Seq.seq uint32 . ([#"../06_map_precond.rs" 94 24 94 28] inv2 iter) -> ([#"../06_map_precond.rs" 94 33 94 37] inv4 func) -> ([#"../06_map_precond.rs" 94 42 94 50] inv5 produced) -> ([#"../06_map_precond.rs" 93 4 93 83] produced = Seq.empty -> preservation_inv0 iter func produced = preservation0 iter func) + axiom preservation_inv0_spec : forall iter : u, func : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u, produced : Seq.seq uint32 . ([#"../06_map_precond.rs" 93 24 93 28] inv2 iter) -> ([#"../06_map_precond.rs" 93 33 93 37] inv4 func) -> ([#"../06_map_precond.rs" 93 42 93 50] inv5 produced) -> ([#"../06_map_precond.rs" 92 4 92 83] produced = Seq.empty -> preservation_inv0 iter func produced = preservation0 iter func) predicate completed0 [#"../common.rs" 11 4 11 36] (self : borrowed u) val completed0 [#"../common.rs" 11 4 11 36] (self : borrowed u) : bool ensures { result = completed0 self } - predicate reinitialize0 [#"../06_map_precond.rs" 118 4 118 29] (_1 : ()) = - [#"../06_map_precond.rs" 119 8 124 9] forall func : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u . forall iter : borrowed u . inv4 func -> inv1 iter -> completed0 iter -> next_precondition0 ( ^ iter) func (Seq.empty ) /\ preservation0 ( ^ iter) func - val reinitialize0 [#"../06_map_precond.rs" 118 4 118 29] (_1 : ()) : bool + predicate reinitialize0 [#"../06_map_precond.rs" 117 4 117 29] (_1 : ()) = + [#"../06_map_precond.rs" 118 8 123 9] forall func : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u . forall iter : borrowed u . inv4 func -> inv1 iter -> completed0 iter -> next_precondition0 ( ^ iter) func (Seq.empty ) /\ preservation0 ( ^ iter) func + val reinitialize0 [#"../06_map_precond.rs" 117 4 117 29] (_1 : ()) : bool ensures { result = reinitialize0 _1 } - predicate invariant0 [#"../06_map_precond.rs" 158 4 158 30] (self : C06MapPrecond_Map_Type.t_map u uint32 (C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) uint32) + predicate invariant0 [#"../06_map_precond.rs" 157 4 157 30] (self : C06MapPrecond_Map_Type.t_map u uint32 (C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) uint32) = - [#"../06_map_precond.rs" 160 12 162 73] reinitialize0 () /\ preservation_inv0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) /\ next_precondition0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) - val invariant0 [#"../06_map_precond.rs" 158 4 158 30] (self : C06MapPrecond_Map_Type.t_map u uint32 (C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) uint32) : bool + [#"../06_map_precond.rs" 159 12 161 73] reinitialize0 () /\ preservation_inv0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) /\ next_precondition0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) + val invariant0 [#"../06_map_precond.rs" 157 4 157 30] (self : C06MapPrecond_Map_Type.t_map u uint32 (C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) uint32) : bool ensures { result = invariant0 self } axiom inv0 : forall x : C06MapPrecond_Map_Type.t_map u uint32 (C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) uint32 . inv0 x = (invariant0 x /\ match x with @@ -2537,19 +2539,19 @@ module C06MapPrecond_Increment val resolve0 (self : C06MapPrecond_Map_Type.t_map u uint32 (C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) uint32) : bool ensures { result = resolve0 self } - val map0 [#"../06_map_precond.rs" 171 0 174 17] (iter : u) (func : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) : C06MapPrecond_Map_Type.t_map u uint32 (C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) uint32 - requires {[#"../06_map_precond.rs" 167 0 167 128] forall i2 : u . forall e : uint32 . inv2 i2 -> inv3 e -> produces1 iter (Seq.singleton e) i2 -> precondition0 func (e, Ghost.new (Seq.empty ))} - requires {[#"../06_map_precond.rs" 168 11 168 41] reinitialize0 ()} - requires {[#"../06_map_precond.rs" 169 11 169 51] preservation0 iter func} - requires {[#"../06_map_precond.rs" 172 4 172 8] inv2 iter} - requires {[#"../06_map_precond.rs" 173 4 173 8] inv4 func} - ensures { [#"../06_map_precond.rs" 170 10 170 72] result = C06MapPrecond_Map_Type.C_Map iter func (Ghost.new (Seq.empty )) } - ensures { [#"../06_map_precond.rs" 174 5 174 17] inv0 result } + val map0 [#"../06_map_precond.rs" 170 0 173 17] (iter : u) (func : C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) : C06MapPrecond_Map_Type.t_map u uint32 (C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) uint32 + requires {[#"../06_map_precond.rs" 166 0 166 128] forall i2 : u . forall e : uint32 . inv2 i2 -> inv3 e -> produces1 iter (Seq.singleton e) i2 -> precondition0 func (e, Ghost.new (Seq.empty ))} + requires {[#"../06_map_precond.rs" 167 11 167 41] reinitialize0 ()} + requires {[#"../06_map_precond.rs" 168 11 168 51] preservation0 iter func} + requires {[#"../06_map_precond.rs" 171 4 171 8] inv2 iter} + requires {[#"../06_map_precond.rs" 172 4 172 8] inv4 func} + ensures { [#"../06_map_precond.rs" 169 10 169 72] result = C06MapPrecond_Map_Type.C_Map iter func (Ghost.new (Seq.empty )) } + ensures { [#"../06_map_precond.rs" 173 5 173 17] inv0 result } - let rec cfg increment [#"../06_map_precond.rs" 186 0 186 50] [@cfg:stackify] [@cfg:subregion_analysis] (iter : u) : () - requires {[#"../06_map_precond.rs" 182 0 182 162] forall done_ : borrowed u . inv1 done_ -> completed0 done_ -> (forall steps : Seq.seq uint32 . forall next : u . inv2 next -> produces1 ( ^ done_) steps next -> steps = Seq.empty /\ ^ done_ = next)} - requires {[#"../06_map_precond.rs" 183 0 185 2] forall fin : u . forall prod : Seq.seq uint32 . inv2 fin -> produces1 iter prod fin -> (forall x : int . 0 <= x /\ x < Seq.length prod -> Seq.get prod x <= (10 : uint32))} - requires {[#"../06_map_precond.rs" 186 42 186 46] inv2 iter} + let rec cfg increment [#"../06_map_precond.rs" 185 0 185 50] [@cfg:stackify] [@cfg:subregion_analysis] (iter : u) : () + requires {[#"../06_map_precond.rs" 181 0 181 162] forall done_ : borrowed u . inv1 done_ -> completed0 done_ -> (forall steps : Seq.seq uint32 . forall next : u . inv2 next -> produces1 ( ^ done_) steps next -> steps = Seq.empty /\ ^ done_ = next)} + requires {[#"../06_map_precond.rs" 182 0 184 2] forall fin : u . forall prod : Seq.seq uint32 . inv2 fin -> produces1 iter prod fin -> (forall x : int . 0 <= x /\ x < Seq.length prod -> Seq.get prod x <= (10 : uint32))} + requires {[#"../06_map_precond.rs" 185 42 185 46] inv2 iter} = [@vc:do_not_keep_trace] [@vc:sp] var _0 : (); @@ -2562,18 +2564,18 @@ module C06MapPrecond_Increment goto BB1 } BB1 { - [#"../06_map_precond.rs" 187 12 192 5] i <- ([#"../06_map_precond.rs" 187 12 192 5] map0 ([#"../06_map_precond.rs" 188 8 188 12] iter) ([#"../06_map_precond.rs" 190 8 190 35] C06MapPrecond_Increment_Closure2.C06MapPrecond_Increment_Closure2)); - [#"../06_map_precond.rs" 188 8 188 12] iter <- any u; + [#"../06_map_precond.rs" 186 12 191 5] i <- ([#"../06_map_precond.rs" 186 12 191 5] map0 ([#"../06_map_precond.rs" 187 8 187 12] iter) ([#"../06_map_precond.rs" 189 8 189 35] C06MapPrecond_Increment_Closure2.C06MapPrecond_Increment_Closure2)); + [#"../06_map_precond.rs" 187 8 187 12] iter <- any u; goto BB2 } BB2 { assert { [@expl:type invariant] inv0 i }; assume { resolve0 i }; - assert { [@expl:assertion] [#"../06_map_precond.rs" 194 4 197 5] forall fin : C06MapPrecond_Map_Type.t_map u uint32 (C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) uint32 . forall prod : Seq.seq uint32 . inv0 fin -> produces0 i prod fin -> (forall x : int . 0 <= x /\ x < Seq.length prod -> Seq.get prod x <= (11 : uint32)) }; + assert { [@expl:assertion] [#"../06_map_precond.rs" 193 4 196 5] forall fin : C06MapPrecond_Map_Type.t_map u uint32 (C06MapPrecond_Increment_Closure2.c06mapprecond_increment_closure2 u) uint32 . forall prod : Seq.seq uint32 . inv0 fin -> produces0 i prod fin -> (forall x : int . 0 <= x /\ x < Seq.length prod -> Seq.get prod x <= (11 : uint32)) }; goto BB3 } BB3 { - [#"../06_map_precond.rs" 186 51 198 1] _0 <- ([#"../06_map_precond.rs" 186 51 198 1] ()); + [#"../06_map_precond.rs" 185 51 197 1] _0 <- ([#"../06_map_precond.rs" 185 51 197 1] ()); goto BB4 } BB4 { @@ -2606,14 +2608,14 @@ module C06MapPrecond_Counter_Closure2 use prelude.UIntSize use prelude.Borrow use C06MapPrecond_Counter_Closure2_Type as C06MapPrecond_Counter_Closure2 - function field_00 [#"../06_map_precond.rs" 207 8 207 41] (self : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) : borrowed usize + function field_00 [#"../06_map_precond.rs" 206 8 206 41] (self : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) : borrowed usize = let C06MapPrecond_Counter_Closure2.C06MapPrecond_Counter_Closure2 a = self in a - val field_00 [#"../06_map_precond.rs" 207 8 207 41] (self : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) : borrowed usize + val field_00 [#"../06_map_precond.rs" 206 8 206 41] (self : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) : borrowed usize ensures { result = field_00 self } - predicate unnest0 [#"../06_map_precond.rs" 207 8 207 41] (self : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) (_2 : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) + predicate unnest0 [#"../06_map_precond.rs" 206 8 206 41] (self : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) (_2 : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) = ^ field_00 _2 = ^ field_00 self @@ -2627,9 +2629,9 @@ module C06MapPrecond_Counter_Closure2 val resolve0 (self : borrowed (C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i)) : bool ensures { result = resolve0 self } - let rec cfg c06MapPrecond_Counter_Closure2 [#"../06_map_precond.rs" 207 8 207 41] [@cfg:stackify] [@cfg:subregion_analysis] (_1 : borrowed (C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i)) (x : uint32) (_prod : Ghost.ghost_ty (Seq.seq uint32)) : uint32 - requires {[#"../06_map_precond.rs" 206 19 206 61] UIntSize.to_int ( * field_00 ( * _1)) = Seq.length (Ghost.inner _prod) /\ * field_00 ( * _1) < max0} - ensures { [#"../06_map_precond.rs" 207 18 207 39] UIntSize.to_int ( * field_00 ( ^ _1)) = UIntSize.to_int ( * field_00 ( * _1)) + 1 } + let rec cfg c06MapPrecond_Counter_Closure2 [#"../06_map_precond.rs" 206 8 206 41] [@cfg:stackify] [@cfg:subregion_analysis] (_1 : borrowed (C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i)) (x : uint32) (_prod : Ghost.ghost_ty (Seq.seq uint32)) : uint32 + requires {[#"../06_map_precond.rs" 205 19 205 61] UIntSize.to_int ( * field_00 ( * _1)) = Seq.length (Ghost.inner _prod) /\ * field_00 ( * _1) < max0} + ensures { [#"../06_map_precond.rs" 206 18 206 39] UIntSize.to_int ( * field_00 ( ^ _1)) = UIntSize.to_int ( * field_00 ( * _1)) + 1 } ensures { unnest0 ( * _1) ( ^ _1) } = [@vc:do_not_keep_trace] [@vc:sp] @@ -2642,11 +2644,11 @@ module C06MapPrecond_Counter_Closure2 goto BB0 } BB0 { - [#"../06_map_precond.rs" 209 12 209 20] _1 <- { _1 with current = (let C06MapPrecond_Counter_Closure2.C06MapPrecond_Counter_Closure2 x0 = * _1 in C06MapPrecond_Counter_Closure2.C06MapPrecond_Counter_Closure2 ({ (field_00 ( * _1)) with current = ([#"../06_map_precond.rs" 209 12 209 20] * field_00 ( * _1) + ([#"../06_map_precond.rs" 209 19 209 20] [#"../06_map_precond.rs" 209 19 209 20] (1 : usize))) })) }; + [#"../06_map_precond.rs" 208 12 208 20] _1 <- { _1 with current = (let C06MapPrecond_Counter_Closure2.C06MapPrecond_Counter_Closure2 x0 = * _1 in C06MapPrecond_Counter_Closure2.C06MapPrecond_Counter_Closure2 ({ (field_00 ( * _1)) with current = ([#"../06_map_precond.rs" 208 12 208 20] * field_00 ( * _1) + ([#"../06_map_precond.rs" 208 19 208 20] [#"../06_map_precond.rs" 208 19 208 20] (1 : usize))) ; })) ; }; assume { resolve0 _1 }; - [#"../06_map_precond.rs" 210 12 210 13] res1 <- ([#"../06_map_precond.rs" 210 12 210 13] x); - [#"../06_map_precond.rs" 206 8 206 63] res <- ([#"../06_map_precond.rs" 206 8 206 63] res1); - [#"../06_map_precond.rs" 207 8 207 41] _0 <- ([#"../06_map_precond.rs" 207 8 207 41] res); + [#"../06_map_precond.rs" 209 12 209 13] res1 <- ([#"../06_map_precond.rs" 209 12 209 13] x); + [#"../06_map_precond.rs" 205 8 205 63] res <- ([#"../06_map_precond.rs" 205 8 205 63] res1); + [#"../06_map_precond.rs" 206 8 206 41] _0 <- ([#"../06_map_precond.rs" 206 8 206 41] res); return _0 } @@ -2759,68 +2761,68 @@ module C06MapPrecond_Counter use seq.Seq use prelude.Ghost use prelude.UIntSize - function field_00 [#"../06_map_precond.rs" 207 8 207 41] (self : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) : borrowed usize + function field_00 [#"../06_map_precond.rs" 206 8 206 41] (self : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) : borrowed usize = let C06MapPrecond_Counter_Closure2.C06MapPrecond_Counter_Closure2 a = self in a - val field_00 [#"../06_map_precond.rs" 207 8 207 41] (self : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) : borrowed usize + val field_00 [#"../06_map_precond.rs" 206 8 206 41] (self : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) : borrowed usize ensures { result = field_00 self } - predicate precondition0 [#"../06_map_precond.rs" 207 8 207 41] (self : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) (args : (uint32, Ghost.ghost_ty (Seq.seq uint32))) + predicate precondition0 [#"../06_map_precond.rs" 206 8 206 41] (self : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) (args : (uint32, Ghost.ghost_ty (Seq.seq uint32))) = - [#"../06_map_precond.rs" 206 19 206 61] let (x, _prod) = args in UIntSize.to_int ( * field_00 self) = Seq.length (Ghost.inner _prod) /\ * field_00 self < max0 + [#"../06_map_precond.rs" 205 19 205 61] let (x, _prod) = args in UIntSize.to_int ( * field_00 self) = Seq.length (Ghost.inner _prod) /\ * field_00 self < max0 use prelude.Ghost use seq.Seq - predicate next_precondition0 [#"../06_map_precond.rs" 84 4 84 74] (iter : i) (func : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) (produced : Seq.seq uint32) + predicate next_precondition0 [#"../06_map_precond.rs" 83 4 83 74] (iter : i) (func : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) (produced : Seq.seq uint32) = - [#"../06_map_precond.rs" 85 8 89 9] forall i : i . forall e : uint32 . inv2 i -> inv3 e -> produces0 iter (Seq.singleton e) i -> precondition0 func (e, Ghost.new produced) - val next_precondition0 [#"../06_map_precond.rs" 84 4 84 74] (iter : i) (func : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) (produced : Seq.seq uint32) : bool + [#"../06_map_precond.rs" 84 8 88 9] forall i : i . forall e : uint32 . inv2 i -> inv3 e -> produces0 iter (Seq.singleton e) i -> precondition0 func (e, Ghost.new produced) + val next_precondition0 [#"../06_map_precond.rs" 83 4 83 74] (iter : i) (func : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) (produced : Seq.seq uint32) : bool ensures { result = next_precondition0 iter func produced } - predicate unnest0 [#"../06_map_precond.rs" 207 8 207 41] (self : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) (_2 : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) + predicate unnest0 [#"../06_map_precond.rs" 206 8 206 41] (self : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) (_2 : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) = ^ field_00 _2 = ^ field_00 self - predicate postcondition_mut0 [#"../06_map_precond.rs" 207 8 207 41] (self : borrowed (C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i)) (args : (uint32, Ghost.ghost_ty (Seq.seq uint32))) (result : uint32) + predicate postcondition_mut0 [#"../06_map_precond.rs" 206 8 206 41] (self : borrowed (C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i)) (args : (uint32, Ghost.ghost_ty (Seq.seq uint32))) (result : uint32) = (let (x, _prod) = args in UIntSize.to_int ( * field_00 ( ^ self)) = UIntSize.to_int ( * field_00 ( * self)) + 1) /\ unnest0 ( * self) ( ^ self) use seq.Seq - predicate preservation0 [#"../06_map_precond.rs" 106 4 106 45] (iter : i) (func : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) + predicate preservation0 [#"../06_map_precond.rs" 105 4 105 45] (iter : i) (func : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) = - [#"../06_map_precond.rs" 107 8 114 9] forall i : i . forall b : uint32 . forall f : borrowed (C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) . forall e2 : uint32 . forall e1 : uint32 . forall s : Seq.seq uint32 . inv2 i -> inv3 b -> inv5 f -> inv3 e2 -> inv3 e1 -> inv6 s -> unnest0 func ( * f) -> produces0 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new s) -> postcondition_mut0 f (e1, Ghost.new s) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc s e1)) - val preservation0 [#"../06_map_precond.rs" 106 4 106 45] (iter : i) (func : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) : bool + [#"../06_map_precond.rs" 106 8 113 9] forall i : i . forall b : uint32 . forall f : borrowed (C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) . forall e2 : uint32 . forall e1 : uint32 . forall s : Seq.seq uint32 . inv2 i -> inv3 b -> inv5 f -> inv3 e2 -> inv3 e1 -> inv6 s -> unnest0 func ( * f) -> produces0 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new s) -> postcondition_mut0 f (e1, Ghost.new s) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc s e1)) + val preservation0 [#"../06_map_precond.rs" 105 4 105 45] (iter : i) (func : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) : bool ensures { result = preservation0 iter func } - predicate preservation_inv0 [#"../06_map_precond.rs" 94 4 94 73] (iter : i) (func : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) (produced : Seq.seq uint32) + predicate preservation_inv0 [#"../06_map_precond.rs" 93 4 93 73] (iter : i) (func : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) (produced : Seq.seq uint32) = - [#"../06_map_precond.rs" 95 8 102 9] forall i : i . forall b : uint32 . forall f : borrowed (C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) . forall e2 : uint32 . forall e1 : uint32 . forall s : Seq.seq uint32 . inv2 i -> inv3 b -> inv5 f -> inv3 e2 -> inv3 e1 -> inv6 s -> unnest0 func ( * f) -> produces0 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new (Seq.(++) produced s)) -> postcondition_mut0 f (e1, Ghost.new (Seq.(++) produced s)) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc (Seq.(++) produced s) e1)) - val preservation_inv0 [#"../06_map_precond.rs" 94 4 94 73] (iter : i) (func : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) (produced : Seq.seq uint32) : bool - requires {[#"../06_map_precond.rs" 94 24 94 28] inv2 iter} - requires {[#"../06_map_precond.rs" 94 33 94 37] inv4 func} - requires {[#"../06_map_precond.rs" 94 42 94 50] inv6 produced} + [#"../06_map_precond.rs" 94 8 101 9] forall i : i . forall b : uint32 . forall f : borrowed (C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) . forall e2 : uint32 . forall e1 : uint32 . forall s : Seq.seq uint32 . inv2 i -> inv3 b -> inv5 f -> inv3 e2 -> inv3 e1 -> inv6 s -> unnest0 func ( * f) -> produces0 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new (Seq.(++) produced s)) -> postcondition_mut0 f (e1, Ghost.new (Seq.(++) produced s)) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc (Seq.(++) produced s) e1)) + val preservation_inv0 [#"../06_map_precond.rs" 93 4 93 73] (iter : i) (func : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) (produced : Seq.seq uint32) : bool + requires {[#"../06_map_precond.rs" 93 24 93 28] inv2 iter} + requires {[#"../06_map_precond.rs" 93 33 93 37] inv4 func} + requires {[#"../06_map_precond.rs" 93 42 93 50] inv6 produced} ensures { result = preservation_inv0 iter func produced } - axiom preservation_inv0_spec : forall iter : i, func : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i, produced : Seq.seq uint32 . ([#"../06_map_precond.rs" 94 24 94 28] inv2 iter) -> ([#"../06_map_precond.rs" 94 33 94 37] inv4 func) -> ([#"../06_map_precond.rs" 94 42 94 50] inv6 produced) -> ([#"../06_map_precond.rs" 93 4 93 83] produced = Seq.empty -> preservation_inv0 iter func produced = preservation0 iter func) + axiom preservation_inv0_spec : forall iter : i, func : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i, produced : Seq.seq uint32 . ([#"../06_map_precond.rs" 93 24 93 28] inv2 iter) -> ([#"../06_map_precond.rs" 93 33 93 37] inv4 func) -> ([#"../06_map_precond.rs" 93 42 93 50] inv6 produced) -> ([#"../06_map_precond.rs" 92 4 92 83] produced = Seq.empty -> preservation_inv0 iter func produced = preservation0 iter func) predicate completed0 [#"../common.rs" 11 4 11 36] (self : borrowed i) val completed0 [#"../common.rs" 11 4 11 36] (self : borrowed i) : bool ensures { result = completed0 self } - predicate reinitialize0 [#"../06_map_precond.rs" 118 4 118 29] (_1 : ()) = - [#"../06_map_precond.rs" 119 8 124 9] forall func : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i . forall iter : borrowed i . inv4 func -> inv1 iter -> completed0 iter -> next_precondition0 ( ^ iter) func (Seq.empty ) /\ preservation0 ( ^ iter) func - val reinitialize0 [#"../06_map_precond.rs" 118 4 118 29] (_1 : ()) : bool + predicate reinitialize0 [#"../06_map_precond.rs" 117 4 117 29] (_1 : ()) = + [#"../06_map_precond.rs" 118 8 123 9] forall func : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i . forall iter : borrowed i . inv4 func -> inv1 iter -> completed0 iter -> next_precondition0 ( ^ iter) func (Seq.empty ) /\ preservation0 ( ^ iter) func + val reinitialize0 [#"../06_map_precond.rs" 117 4 117 29] (_1 : ()) : bool ensures { result = reinitialize0 _1 } use C06MapPrecond_Map_Type as C06MapPrecond_Map_Type - predicate invariant0 [#"../06_map_precond.rs" 158 4 158 30] (self : C06MapPrecond_Map_Type.t_map i uint32 (C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) uint32) + predicate invariant0 [#"../06_map_precond.rs" 157 4 157 30] (self : C06MapPrecond_Map_Type.t_map i uint32 (C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) uint32) = - [#"../06_map_precond.rs" 160 12 162 73] reinitialize0 () /\ preservation_inv0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) /\ next_precondition0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) - val invariant0 [#"../06_map_precond.rs" 158 4 158 30] (self : C06MapPrecond_Map_Type.t_map i uint32 (C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) uint32) : bool + [#"../06_map_precond.rs" 159 12 161 73] reinitialize0 () /\ preservation_inv0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) /\ next_precondition0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) + val invariant0 [#"../06_map_precond.rs" 157 4 157 30] (self : C06MapPrecond_Map_Type.t_map i uint32 (C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) uint32) : bool ensures { result = invariant0 self } predicate inv0 (_x : C06MapPrecond_Map_Type.t_map i uint32 (C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) uint32) @@ -2836,19 +2838,19 @@ module C06MapPrecond_Counter val resolve0 (self : C06MapPrecond_Map_Type.t_map i uint32 (C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) uint32) : bool ensures { result = resolve0 self } - val map0 [#"../06_map_precond.rs" 171 0 174 17] (iter : i) (func : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) : C06MapPrecond_Map_Type.t_map i uint32 (C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) uint32 - requires {[#"../06_map_precond.rs" 167 0 167 128] forall i2 : i . forall e : uint32 . inv2 i2 -> inv3 e -> produces0 iter (Seq.singleton e) i2 -> precondition0 func (e, Ghost.new (Seq.empty ))} - requires {[#"../06_map_precond.rs" 168 11 168 41] reinitialize0 ()} - requires {[#"../06_map_precond.rs" 169 11 169 51] preservation0 iter func} - requires {[#"../06_map_precond.rs" 172 4 172 8] inv2 iter} - requires {[#"../06_map_precond.rs" 173 4 173 8] inv4 func} - ensures { [#"../06_map_precond.rs" 170 10 170 72] result = C06MapPrecond_Map_Type.C_Map iter func (Ghost.new (Seq.empty )) } - ensures { [#"../06_map_precond.rs" 174 5 174 17] inv0 result } + val map0 [#"../06_map_precond.rs" 170 0 173 17] (iter : i) (func : C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) : C06MapPrecond_Map_Type.t_map i uint32 (C06MapPrecond_Counter_Closure2.c06mapprecond_counter_closure2 i) uint32 + requires {[#"../06_map_precond.rs" 166 0 166 128] forall i2 : i . forall e : uint32 . inv2 i2 -> inv3 e -> produces0 iter (Seq.singleton e) i2 -> precondition0 func (e, Ghost.new (Seq.empty ))} + requires {[#"../06_map_precond.rs" 167 11 167 41] reinitialize0 ()} + requires {[#"../06_map_precond.rs" 168 11 168 51] preservation0 iter func} + requires {[#"../06_map_precond.rs" 171 4 171 8] inv2 iter} + requires {[#"../06_map_precond.rs" 172 4 172 8] inv4 func} + ensures { [#"../06_map_precond.rs" 169 10 169 72] result = C06MapPrecond_Map_Type.C_Map iter func (Ghost.new (Seq.empty )) } + ensures { [#"../06_map_precond.rs" 173 5 173 17] inv0 result } - let rec cfg counter [#"../06_map_precond.rs" 202 0 202 48] [@cfg:stackify] [@cfg:subregion_analysis] (iter : i) : () - requires {[#"../06_map_precond.rs" 200 0 200 162] forall done_ : borrowed i . inv1 done_ -> completed0 done_ -> (forall steps : Seq.seq uint32 . forall next : i . inv2 next -> produces0 ( ^ done_) steps next -> steps = Seq.empty /\ ^ done_ = next)} - requires {[#"../06_map_precond.rs" 201 0 201 92] forall fin : i . forall prod : Seq.seq uint32 . inv2 fin -> produces0 iter prod fin -> Seq.length prod <= UIntSize.to_int max0} - requires {[#"../06_map_precond.rs" 202 40 202 44] inv2 iter} + let rec cfg counter [#"../06_map_precond.rs" 201 0 201 48] [@cfg:stackify] [@cfg:subregion_analysis] (iter : i) : () + requires {[#"../06_map_precond.rs" 199 0 199 162] forall done_ : borrowed i . inv1 done_ -> completed0 done_ -> (forall steps : Seq.seq uint32 . forall next : i . inv2 next -> produces0 ( ^ done_) steps next -> steps = Seq.empty /\ ^ done_ = next)} + requires {[#"../06_map_precond.rs" 200 0 200 92] forall fin : i . forall prod : Seq.seq uint32 . inv2 fin -> produces0 iter prod fin -> Seq.length prod <= UIntSize.to_int max0} + requires {[#"../06_map_precond.rs" 201 40 201 44] inv2 iter} = [@vc:do_not_keep_trace] [@vc:sp] var _0 : (); @@ -2863,11 +2865,11 @@ module C06MapPrecond_Counter goto BB1 } BB1 { - [#"../06_map_precond.rs" 203 18 203 19] cnt <- ([#"../06_map_precond.rs" 203 18 203 19] [#"../06_map_precond.rs" 203 18 203 19] (0 : usize)); - [#"../06_map_precond.rs" 207 8 207 41] _8 <- Borrow.borrow_mut cnt; - [#"../06_map_precond.rs" 207 8 207 41] cnt <- ^ _8; - [#"../06_map_precond.rs" 204 4 212 5] _5 <- ([#"../06_map_precond.rs" 204 4 212 5] map0 ([#"../06_map_precond.rs" 205 8 205 12] iter) ([#"../06_map_precond.rs" 207 8 207 41] C06MapPrecond_Counter_Closure2.C06MapPrecond_Counter_Closure2 _8)); - [#"../06_map_precond.rs" 205 8 205 12] iter <- any i; + [#"../06_map_precond.rs" 202 18 202 19] cnt <- ([#"../06_map_precond.rs" 202 18 202 19] [#"../06_map_precond.rs" 202 18 202 19] (0 : usize)); + [#"../06_map_precond.rs" 206 8 206 41] _8 <- Borrow.borrow_mut cnt; + [#"../06_map_precond.rs" 206 8 206 41] cnt <- ^ _8; + [#"../06_map_precond.rs" 203 4 211 5] _5 <- ([#"../06_map_precond.rs" 203 4 211 5] map0 ([#"../06_map_precond.rs" 204 8 204 12] iter) ([#"../06_map_precond.rs" 206 8 206 41] C06MapPrecond_Counter_Closure2.C06MapPrecond_Counter_Closure2 _8)); + [#"../06_map_precond.rs" 204 8 204 12] iter <- any i; _8 <- any borrowed usize; goto BB2 } @@ -2877,7 +2879,7 @@ module C06MapPrecond_Counter goto BB3 } BB3 { - [#"../06_map_precond.rs" 202 49 213 1] _0 <- ([#"../06_map_precond.rs" 202 49 213 1] ()); + [#"../06_map_precond.rs" 201 49 212 1] _0 <- ([#"../06_map_precond.rs" 201 49 212 1] ()); goto BB4 } BB4 { @@ -3017,9 +3019,9 @@ module C06MapPrecond_Impl0 ensures { result = produces1 self visited _o } use seq.Seq - predicate next_precondition0 [#"../06_map_precond.rs" 84 4 84 74] (iter : i) (func : f) (produced : Seq.seq item0) = - [#"../06_map_precond.rs" 85 8 89 9] forall i : i . forall e : item0 . inv9 i -> inv8 e -> produces1 iter (Seq.singleton e) i -> precondition0 func (e, Ghost.new produced) - val next_precondition0 [#"../06_map_precond.rs" 84 4 84 74] (iter : i) (func : f) (produced : Seq.seq item0) : bool + predicate next_precondition0 [#"../06_map_precond.rs" 83 4 83 74] (iter : i) (func : f) (produced : Seq.seq item0) = + [#"../06_map_precond.rs" 84 8 88 9] forall i : i . forall e : item0 . inv9 i -> inv8 e -> produces1 iter (Seq.singleton e) i -> precondition0 func (e, Ghost.new produced) + val next_precondition0 [#"../06_map_precond.rs" 83 4 83 74] (iter : i) (func : f) (produced : Seq.seq item0) : bool ensures { result = next_precondition0 iter func produced } predicate postcondition_mut0 (self : borrowed f) (_2 : (item0, Ghost.ghost_ty (Seq.seq item0))) (_3 : b) @@ -3032,34 +3034,34 @@ module C06MapPrecond_Impl0 val unnest0 (self : f) (_2 : f) : bool ensures { result = unnest0 self _2 } - predicate preservation0 [#"../06_map_precond.rs" 106 4 106 45] (iter : i) (func : f) = - [#"../06_map_precond.rs" 107 8 114 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv9 i -> inv6 b -> inv7 f -> inv8 e2 -> inv8 e1 -> inv4 s -> unnest0 func ( * f) -> produces1 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new s) -> postcondition_mut0 f (e1, Ghost.new s) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc s e1)) - val preservation0 [#"../06_map_precond.rs" 106 4 106 45] (iter : i) (func : f) : bool + predicate preservation0 [#"../06_map_precond.rs" 105 4 105 45] (iter : i) (func : f) = + [#"../06_map_precond.rs" 106 8 113 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv9 i -> inv6 b -> inv7 f -> inv8 e2 -> inv8 e1 -> inv4 s -> unnest0 func ( * f) -> produces1 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new s) -> postcondition_mut0 f (e1, Ghost.new s) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc s e1)) + val preservation0 [#"../06_map_precond.rs" 105 4 105 45] (iter : i) (func : f) : bool ensures { result = preservation0 iter func } use seq.Seq - predicate preservation_inv0 [#"../06_map_precond.rs" 94 4 94 73] (iter : i) (func : f) (produced : Seq.seq item0) = - [#"../06_map_precond.rs" 95 8 102 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv9 i -> inv6 b -> inv7 f -> inv8 e2 -> inv8 e1 -> inv4 s -> unnest0 func ( * f) -> produces1 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new (Seq.(++) produced s)) -> postcondition_mut0 f (e1, Ghost.new (Seq.(++) produced s)) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc (Seq.(++) produced s) e1)) - val preservation_inv0 [#"../06_map_precond.rs" 94 4 94 73] (iter : i) (func : f) (produced : Seq.seq item0) : bool - requires {[#"../06_map_precond.rs" 94 24 94 28] inv9 iter} - requires {[#"../06_map_precond.rs" 94 33 94 37] inv10 func} - requires {[#"../06_map_precond.rs" 94 42 94 50] inv4 produced} + predicate preservation_inv0 [#"../06_map_precond.rs" 93 4 93 73] (iter : i) (func : f) (produced : Seq.seq item0) = + [#"../06_map_precond.rs" 94 8 101 9] forall i : i . forall b : b . forall f : borrowed f . forall e2 : item0 . forall e1 : item0 . forall s : Seq.seq item0 . inv9 i -> inv6 b -> inv7 f -> inv8 e2 -> inv8 e1 -> inv4 s -> unnest0 func ( * f) -> produces1 iter (Seq.snoc (Seq.snoc s e1) e2) i -> precondition0 ( * f) (e1, Ghost.new (Seq.(++) produced s)) -> postcondition_mut0 f (e1, Ghost.new (Seq.(++) produced s)) b -> precondition0 ( ^ f) (e2, Ghost.new (Seq.snoc (Seq.(++) produced s) e1)) + val preservation_inv0 [#"../06_map_precond.rs" 93 4 93 73] (iter : i) (func : f) (produced : Seq.seq item0) : bool + requires {[#"../06_map_precond.rs" 93 24 93 28] inv9 iter} + requires {[#"../06_map_precond.rs" 93 33 93 37] inv10 func} + requires {[#"../06_map_precond.rs" 93 42 93 50] inv4 produced} ensures { result = preservation_inv0 iter func produced } - axiom preservation_inv0_spec : forall iter : i, func : f, produced : Seq.seq item0 . ([#"../06_map_precond.rs" 94 24 94 28] inv9 iter) -> ([#"../06_map_precond.rs" 94 33 94 37] inv10 func) -> ([#"../06_map_precond.rs" 94 42 94 50] inv4 produced) -> ([#"../06_map_precond.rs" 93 4 93 83] produced = Seq.empty -> preservation_inv0 iter func produced = preservation0 iter func) + axiom preservation_inv0_spec : forall iter : i, func : f, produced : Seq.seq item0 . ([#"../06_map_precond.rs" 93 24 93 28] inv9 iter) -> ([#"../06_map_precond.rs" 93 33 93 37] inv10 func) -> ([#"../06_map_precond.rs" 93 42 93 50] inv4 produced) -> ([#"../06_map_precond.rs" 92 4 92 83] produced = Seq.empty -> preservation_inv0 iter func produced = preservation0 iter func) use prelude.Ghost predicate completed1 [#"../common.rs" 11 4 11 36] (self : borrowed i) val completed1 [#"../common.rs" 11 4 11 36] (self : borrowed i) : bool ensures { result = completed1 self } - predicate reinitialize0 [#"../06_map_precond.rs" 118 4 118 29] (_1 : ()) = - [#"../06_map_precond.rs" 119 8 124 9] forall func : f . forall iter : borrowed i . inv10 func -> inv12 iter -> completed1 iter -> next_precondition0 ( ^ iter) func (Seq.empty ) /\ preservation0 ( ^ iter) func - val reinitialize0 [#"../06_map_precond.rs" 118 4 118 29] (_1 : ()) : bool + predicate reinitialize0 [#"../06_map_precond.rs" 117 4 117 29] (_1 : ()) = + [#"../06_map_precond.rs" 118 8 123 9] forall func : f . forall iter : borrowed i . inv10 func -> inv12 iter -> completed1 iter -> next_precondition0 ( ^ iter) func (Seq.empty ) /\ preservation0 ( ^ iter) func + val reinitialize0 [#"../06_map_precond.rs" 117 4 117 29] (_1 : ()) : bool ensures { result = reinitialize0 _1 } - predicate invariant0 [#"../06_map_precond.rs" 158 4 158 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) = - [#"../06_map_precond.rs" 160 12 162 73] reinitialize0 () /\ preservation_inv0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) /\ next_precondition0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) - val invariant0 [#"../06_map_precond.rs" 158 4 158 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) : bool + predicate invariant0 [#"../06_map_precond.rs" 157 4 157 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) = + [#"../06_map_precond.rs" 159 12 161 73] reinitialize0 () /\ preservation_inv0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) /\ next_precondition0 (C06MapPrecond_Map_Type.map_iter self) (C06MapPrecond_Map_Type.map_func self) (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) + val invariant0 [#"../06_map_precond.rs" 157 4 157 30] (self : C06MapPrecond_Map_Type.t_map i b f item0) : bool ensures { result = invariant0 self } axiom inv0 : forall x : C06MapPrecond_Map_Type.t_map i b f item0 . inv0 x = (invariant0 x /\ match x with @@ -3087,20 +3089,20 @@ module C06MapPrecond_Impl0 val produces0 [@inline:trivial] [#"../06_map_precond.rs" 43 4 43 67] (self : C06MapPrecond_Map_Type.t_map i b f item0) (visited : Seq.seq b) (succ : C06MapPrecond_Map_Type.t_map i b f item0) : bool ensures { result = produces0 self visited succ } - predicate produces_one0 [#"../06_map_precond.rs" 143 4 143 57] (self : C06MapPrecond_Map_Type.t_map i b f item0) (visited : b) (succ : C06MapPrecond_Map_Type.t_map i b f item0) + predicate produces_one0 [#"../06_map_precond.rs" 142 4 142 57] (self : C06MapPrecond_Map_Type.t_map i b f item0) (visited : b) (succ : C06MapPrecond_Map_Type.t_map i b f item0) = - [#"../06_map_precond.rs" 144 8 150 9] exists f : borrowed f . inv7 f /\ * f = C06MapPrecond_Map_Type.map_func self /\ ^ f = C06MapPrecond_Map_Type.map_func succ /\ (exists e : item0 . inv8 e /\ produces1 (C06MapPrecond_Map_Type.map_iter self) (Seq.singleton e) (C06MapPrecond_Map_Type.map_iter succ) /\ Ghost.inner (C06MapPrecond_Map_Type.map_produced succ) = Seq.snoc (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) e /\ precondition0 ( * f) (e, C06MapPrecond_Map_Type.map_produced self) /\ postcondition_mut0 f (e, C06MapPrecond_Map_Type.map_produced self) visited) - val produces_one0 [#"../06_map_precond.rs" 143 4 143 57] (self : C06MapPrecond_Map_Type.t_map i b f item0) (visited : b) (succ : C06MapPrecond_Map_Type.t_map i b f item0) : bool - requires {[#"../06_map_precond.rs" 143 20 143 24] inv0 self} - requires {[#"../06_map_precond.rs" 143 26 143 33] inv6 visited} - requires {[#"../06_map_precond.rs" 143 38 143 42] inv0 succ} + [#"../06_map_precond.rs" 143 8 149 9] exists f : borrowed f . inv7 f /\ * f = C06MapPrecond_Map_Type.map_func self /\ ^ f = C06MapPrecond_Map_Type.map_func succ /\ (exists e : item0 . inv8 e /\ produces1 (C06MapPrecond_Map_Type.map_iter self) (Seq.singleton e) (C06MapPrecond_Map_Type.map_iter succ) /\ Ghost.inner (C06MapPrecond_Map_Type.map_produced succ) = Seq.snoc (Ghost.inner (C06MapPrecond_Map_Type.map_produced self)) e /\ precondition0 ( * f) (e, C06MapPrecond_Map_Type.map_produced self) /\ postcondition_mut0 f (e, C06MapPrecond_Map_Type.map_produced self) visited) + val produces_one0 [#"../06_map_precond.rs" 142 4 142 57] (self : C06MapPrecond_Map_Type.t_map i b f item0) (visited : b) (succ : C06MapPrecond_Map_Type.t_map i b f item0) : bool + requires {[#"../06_map_precond.rs" 142 20 142 24] inv0 self} + requires {[#"../06_map_precond.rs" 142 26 142 33] inv6 visited} + requires {[#"../06_map_precond.rs" 142 38 142 42] inv0 succ} ensures { result = produces_one0 self visited succ } - axiom produces_one0_spec : forall self : C06MapPrecond_Map_Type.t_map i b f item0, visited : b, succ : C06MapPrecond_Map_Type.t_map i b f item0 . ([#"../06_map_precond.rs" 143 20 143 24] inv0 self) -> ([#"../06_map_precond.rs" 143 26 143 33] inv6 visited) -> ([#"../06_map_precond.rs" 143 38 143 42] inv0 succ) -> ([#"../06_map_precond.rs" 142 14 142 68] produces_one0 self visited succ = produces0 self (Seq.singleton visited) succ) + axiom produces_one0_spec : forall self : C06MapPrecond_Map_Type.t_map i b f item0, visited : b, succ : C06MapPrecond_Map_Type.t_map i b f item0 . ([#"../06_map_precond.rs" 142 20 142 24] inv0 self) -> ([#"../06_map_precond.rs" 142 26 142 33] inv6 visited) -> ([#"../06_map_precond.rs" 142 38 142 42] inv0 succ) -> ([#"../06_map_precond.rs" 141 14 141 68] produces_one0 self visited succ = produces0 self (Seq.singleton visited) succ) predicate completed0 [#"../06_map_precond.rs" 21 4 21 35] (self : borrowed (C06MapPrecond_Map_Type.t_map i b f item0)) = - [#"../06_map_precond.rs" 22 8 25 9] Ghost.inner (C06MapPrecond_Map_Type.map_produced ( ^ self)) = Seq.empty /\ completed1 {current = C06MapPrecond_Map_Type.map_iter ( * self); final = C06MapPrecond_Map_Type.map_iter ( ^ self)} /\ C06MapPrecond_Map_Type.map_func ( * self) = C06MapPrecond_Map_Type.map_func ( ^ self) + [#"../06_map_precond.rs" 22 8 25 9] Ghost.inner (C06MapPrecond_Map_Type.map_produced ( ^ self)) = Seq.empty /\ completed1 (Borrow.borrow_logic (C06MapPrecond_Map_Type.map_iter ( * self)) (C06MapPrecond_Map_Type.map_iter ( ^ self)) (Borrow.inherit_id (Borrow.get_id self) 1)) /\ C06MapPrecond_Map_Type.map_func ( * self) = C06MapPrecond_Map_Type.map_func ( ^ self) val completed0 [#"../06_map_precond.rs" 21 4 21 35] (self : borrowed (C06MapPrecond_Map_Type.t_map i b f item0)) : bool ensures { result = completed0 self } diff --git a/creusot/tests/should_succeed/iterators/06_map_precond/why3session.xml b/creusot/tests/should_succeed/iterators/06_map_precond/why3session.xml index fe3e0c37ce..2bc88e4ac6 100644 --- a/creusot/tests/should_succeed/iterators/06_map_precond/why3session.xml +++ b/creusot/tests/should_succeed/iterators/06_map_precond/why3session.xml @@ -11,7 +11,7 @@ - + @@ -24,7 +24,7 @@ - + @@ -84,7 +84,7 @@ - + @@ -93,7 +93,7 @@ - + @@ -108,7 +108,7 @@ - + @@ -147,25 +147,25 @@ - - + + - - + + - - + + - - + + @@ -175,45 +175,45 @@ - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - - + + + @@ -221,8 +221,8 @@ - - + + @@ -241,7 +241,7 @@ - + @@ -256,13 +256,13 @@ - + - + - + @@ -273,53 +273,56 @@ - + - + - + - + - + - + - + - + - + - + - + - - + + - - + + - + + + + - + @@ -359,14 +362,14 @@ - + - + @@ -379,7 +382,7 @@ - + diff --git a/creusot/tests/should_succeed/iterators/06_map_precond/why3shapes.gz b/creusot/tests/should_succeed/iterators/06_map_precond/why3shapes.gz index 9c64aade76966001ac10a54f17f276fbe3fa0df2..8583c0cd0c4158cbc7bc5cb59115ab3f9f99d4d3 100644 GIT binary patch literal 9074 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 goto BB1 @@ -201,11 +201,11 @@ module C07Fuse_Impl0_Next goto BB4 } BB2 { - [#"../07_fuse.rs" 42 17 42 21] iter <- Borrow.borrow_mut (Core_Option_Option_Type.some_0 ( * _3)); - [#"../07_fuse.rs" 42 17 42 21] _3 <- { _3 with current = (let Core_Option_Option_Type.C_Some x0 = * _3 in Core_Option_Option_Type.C_Some ( ^ iter)) }; + [#"../07_fuse.rs" 42 17 42 21] iter <- Borrow.borrow_final (Core_Option_Option_Type.some_0 ( * _3)) (Borrow.inherit_id (Borrow.get_id _3) 1); + [#"../07_fuse.rs" 42 17 42 21] _3 <- { _3 with current = (let Core_Option_Option_Type.C_Some x0 = * _3 in Core_Option_Option_Type.C_Some ( ^ iter)) ; }; assume { inv3 ( ^ iter) }; - [#"../07_fuse.rs" 42 32 42 43] _7 <- Borrow.borrow_mut ( * iter); - [#"../07_fuse.rs" 42 32 42 43] iter <- { iter with current = ^ _7 }; + [#"../07_fuse.rs" 42 32 42 43] _7 <- Borrow.borrow_final ( * iter) (Borrow.get_id iter); + [#"../07_fuse.rs" 42 32 42 43] iter <- { iter with current = ( ^ _7) ; }; assume { inv3 ( ^ _7) }; [#"../07_fuse.rs" 42 32 42 43] _6 <- ([#"../07_fuse.rs" 42 32 42 43] next0 _7); _7 <- any borrowed i; @@ -255,7 +255,7 @@ module C07Fuse_Impl0_Next goto BB9 } BB9 { - [#"../07_fuse.rs" 44 20 44 29] self <- { self with current = (let C07Fuse_Fuse_Type.C_Fuse x0 = * self in C07Fuse_Fuse_Type.C_Fuse ([#"../07_fuse.rs" 44 32 44 36] Core_Option_Option_Type.C_None)) }; + [#"../07_fuse.rs" 44 20 44 29] self <- { self with current = (let C07Fuse_Fuse_Type.C_Fuse x0 = * self in C07Fuse_Fuse_Type.C_Fuse ([#"../07_fuse.rs" 44 32 44 36] Core_Option_Option_Type.C_None)) ; }; assert { [@expl:type invariant] inv0 (C07Fuse_Fuse_Type.fuse_iter ( * self)) }; assume { resolve4 (C07Fuse_Fuse_Type.fuse_iter ( * self)) }; assert { [@expl:type invariant] inv2 self }; diff --git a/creusot/tests/should_succeed/iterators/07_fuse/why3session.xml b/creusot/tests/should_succeed/iterators/07_fuse/why3session.xml index 3432c79dd2..ad07cedb8b 100644 --- a/creusot/tests/should_succeed/iterators/07_fuse/why3session.xml +++ b/creusot/tests/should_succeed/iterators/07_fuse/why3session.xml @@ -8,7 +8,7 @@ - + @@ -26,7 +26,7 @@ - + diff --git a/creusot/tests/should_succeed/iterators/07_fuse/why3shapes.gz b/creusot/tests/should_succeed/iterators/07_fuse/why3shapes.gz index b8cd72f9ab6de4cccee0ee820946693f407edbaf..8fce346ab24d023b05c6b7e2ad41f30c0a05dc00 100644 GIT binary patch literal 1435 zcmV;M1!VdkiwFP!00000|Fu_3j~h1(zWZ1B)^>9dMLi4TU>Iv?fuKDU(6I}RMoNtC z+FRR6+J9e3BhAC>CT)ZIU`rG~zC=>=_jl{_2lo=r>rdfy-X9M?uEqN9ht=hGw?BLm zmh9@1TWCvW>2Bp-PRIVE4`;CG-n_BQ3M(J-G1gyUMcwndXLXMcGc+H7GjT~4Uno#6 zJilE2w5sA&vjnYfOKM@X6)cR#5)0Yd!2`D0I)8kAc?y@%rxSGB$DfXeFzO=iE>q9@ z!~4W@JXqlF*MaYs<8!b{#KU$QD{Q;ny0?i`w;Oi~=i}3-kbEGU!Kl2bRJOGUiFNn! z9Bk54c}ODDEArd)?YiUXbo?Cp@1B3F$IaTfKe#6g+U@)FeLn+(9@U|xYBTsvRYPWL zEn?A-8SZB`XY3G2{kdT439%G6Ls;{oQmLh4Q?o&2c~n^{@0&(Bk8}d^>qtYgHc_WY zBTJDkd_$z0Ff8PvK`dfYxQ9?s$f2NcU)Yj*mRE(w-1~5OET@@tmnnAxYZDFyg;xR3 zR+Q5gZdt-D@0*43a}KyH;N&40Rgxt6LpbfT+NK?(Z~BQlC-`GYwNYA=l@lUoToIdY z_(l@s(`FMEn{bf=<#s_@5X~YGw=BYD5r~w6d?Dig=akx0Hn+^ki(3g#EXtZ9DC=RI zd4`i`SUkhO@eIH28A^+zXZU5$FnPvE6|u70bv&Ndhw#T`Y#Q^PvFJH8H#N-N>0vk? zerauHP@5Ue&1|TRc@JX)a3(IdwS@v%o0_b6Idv>GV@zF&R8AldwWE=DEi9@3Rks@8 z@f70IToGhXXg2BV9t`#WsvFM<#g~OAqT1IYB&L|kxhL(K)2D0e?#6lNI^WiQH6%`h zmMyr9o71~W@2>d$Ds^ZV)ADhD38#_#n&fiEym{jW?Zu(iwKzEDutZztRJ+ zP;rAp4g3&I+O))J zq#@Hx@x?~K#)iP_p4C0p{kJs&HZ=k|4LUFlI;0Fbb6-n=mk=b6TMf4&hgRj#${fZz zpA~u@hMIu6=pq+)SJzhiQ7d>z6`!gnKTPR)D^Eln*(w7i?Fv=9LOIW%f&^9g=JT1H zu4-y@`}1S2rhbePouY(Ol-R;(UTt2uHxhT%DqfQ?ji2S@vCPJ+#nAX_lF1MGe2|gJ zooS2__30E3|4xd!EoHZvCm$>Zu~Z#%vioc}uj{wA~_^*fQZtVb-X&mcy$_DX;${FnhA< zR2RMKJyBdr9fFiJD&|pR#}ItK24b{PMjBzbVFnE~V8}`-p+b*H=GXG$0Ic1Iz##NHAE1NLcRx0;Na*fl=)^kWPrM_g?TdQiGULlo-$kR7O!1(!T=M zi!S!G2Tl7PNbh^*sb^7(f`V%l4^+xXJdrvI+B+12gvcTjk?5|EYpM+rL#3g@(1c}% zChw@B|EDOea)5j%NlyuSskrJK@i9`)Wk?Z7qNw^uq6B4<6V-DWsdHK@mLl1?EEGGf zam|=vXc#pN3?l}Uk;<(u2DLAfvlGroRm%l6r|VQs}#(rsq+N|*C-Z! pk3!47>xqJ7s~3z)kjh6)*~beiWhOVA8IFe2)n5t52lplr005lAyBz=k literal 1435 zcmV;M1!VdkiwFP!00000|Fu_3ZzDGhzWZ1B)^>9d^;UsB7)A^kShR-%IyTT~G;Pqt zPHpdQ`|nF>q#2FvZeOT@#1h5FM~bBAuivfDKl`_MUVnYopv zq$9hs6b|Z=JGxu>x6`rz7~&Zm^A8V>JL%Lu9kcQ+oh*A%_Pp%bzL6HAV51IoiG=~} z%;N&?Im7fk0;D;pT0XD;$(~XcZqs_ zKKz6{$Abgme;oOKIKD=QD)!s$P{g*|t$&ZCvfcPoJRe^^Mf8DeMo?){sC?@fAnWeq zIXbjccnFf|75P2>_ucVyI)0A*SFgX6doje)m0|pbc|)) ziQ%z9n`Fljn$KCboDfIZW(;Ur6e@L8Zb}}=q>pMx)nm1&+8CptxQ;O(TBOb~W*lRj z`NkMmWh|4k1-Xbu<{pDU;W0CyVV+h=H&6ed(E*u-T}3n*%cnJ->aju?KBtJPEQT(S zs+ssR9zW$QnYb%&y33R-Sq#j*`%92$Yn^UY_T3X!8 zLgJVzx5rdD92(4Q#>_Hi_9vLxmoPKsSjEf`Gbc;TyA6WQI60R8d&g@&?DjKIPWK~F zPB(SY)L0f5a^F;vP>mTeHX5uXp%>&@V8X22c0C+V>qGqQGIfl$VJsRBO&yJ;)>Lqf z-?VfxD4mR^PBxZD+raoJ*r-cAZDBx_j;4ydn%k9b7_mi>!U<$w+8Oy!eZ=Nh+^Pak zr#QT{h9G%D6QsZPU~B<5t+*v*UlyLog0DtM&M{T3CpDe$)75o%=e+Y>sOzvA6SRuv zE%+qY(z`Lz|auo@dBB zP<*iw@Tnn)vgc*b%KpDK0zNkaI!`$;PdOw{Ijyg`z;g)D<66VD$e~s_)G~*u&YMC{ zlTcOAs?K`Z?&{h~KdJ=}Sn*gr>1o3UGCxISUMmcg)GO5W3RRmySrT;SYlky6U)9{` zp3hIIn))e9bdD06qr?}WMZvsqZzAprDp8UUXU}}{ln3M0Vq&}*X3{9o&N2$!nI{=p zo@lxMXIk`qExS#de6X03lUB?G>9jNZyVPA2`aJFNQ|RXF-)8)`+9#%1OG|W zE`6rrBh55F-z%N(m6crME>E7KCfY4+w@4^&v>HX4Ep4q$sgqEa)Ufb;KVAyqDe3 z(;f`%dmw%2d7yz0MrJ9vmJ*RFHIP7*86@pJlaj=NC;y1)`e99tWyDftsk9VjxuxhG zwep@CQh3-RS3ZpbABYM#fh5&|k z&AH{wa%wqPPAo%^+A?LCv`kpWS3y(FCD%O}5LRcT6x=A&L*&B%0Bde6*On{GrRAbZ zDG)tTGDhhs3tBOQN>q@M;h!)`N{|~VP^ekqvnzvQ8Z~qg^GiZ7eJ^R3rQljhAuLb3 p9)FsJ7`((EKX~;+r&Ofe3?xfoW(q5~70e2{`UA1mO&uc;001X?u$BM- diff --git a/creusot/tests/should_succeed/iterators/08_collect_extend.mlcfg b/creusot/tests/should_succeed/iterators/08_collect_extend.mlcfg index 42933b799e..4f1d2fb47e 100644 --- a/creusot/tests/should_succeed/iterators/08_collect_extend.mlcfg +++ b/creusot/tests/should_succeed/iterators/08_collect_extend.mlcfg @@ -348,8 +348,8 @@ module C08CollectExtend_Extend [#"../08_collect_extend.rs" 27 4 27 35] _19 <- Borrow.borrow_mut iter1; [#"../08_collect_extend.rs" 27 4 27 35] iter1 <- ^ _19; assume { inv3 ( ^ _19) }; - [#"../08_collect_extend.rs" 27 4 27 35] _18 <- Borrow.borrow_mut ( * _19); - [#"../08_collect_extend.rs" 27 4 27 35] _19 <- { _19 with current = ^ _18 }; + [#"../08_collect_extend.rs" 27 4 27 35] _18 <- Borrow.borrow_final ( * _19) (Borrow.get_id _19); + [#"../08_collect_extend.rs" 27 4 27 35] _19 <- { _19 with current = ( ^ _18) ; }; assume { inv3 ( ^ _18) }; [#"../08_collect_extend.rs" 27 4 27 35] _17 <- ([#"../08_collect_extend.rs" 27 4 27 35] next0 _18); _18 <- any borrowed i; @@ -402,7 +402,7 @@ module C08CollectExtend_Extend [#"../../../../../creusot-contracts-proc/src/lib.rs" 664 0 664 51] x <- ([#"../../../../../creusot-contracts-proc/src/lib.rs" 664 0 664 51] __creusot_proc_iter_elem); [#"../../../../../creusot-contracts-proc/src/lib.rs" 664 0 664 51] __creusot_proc_iter_elem <- any t; [#"../08_collect_extend.rs" 30 8 30 19] _26 <- Borrow.borrow_mut ( * vec); - [#"../08_collect_extend.rs" 30 8 30 19] vec <- { vec with current = ^ _26 }; + [#"../08_collect_extend.rs" 30 8 30 19] vec <- { vec with current = ( ^ _26) ; }; assume { inv6 ( ^ _26) }; [#"../08_collect_extend.rs" 30 8 30 19] _25 <- ([#"../08_collect_extend.rs" 30 8 30 19] push0 _26 ([#"../08_collect_extend.rs" 30 17 30 18] x)); _26 <- any borrowed (Alloc_Vec_Vec_Type.t_vec t (Alloc_Alloc_Global_Type.t_global)); @@ -718,8 +718,8 @@ module C08CollectExtend_Collect [#"../08_collect_extend.rs" 45 4 45 40] _17 <- Borrow.borrow_mut iter1; [#"../08_collect_extend.rs" 45 4 45 40] iter1 <- ^ _17; assume { inv2 ( ^ _17) }; - [#"../08_collect_extend.rs" 45 4 45 40] _16 <- Borrow.borrow_mut ( * _17); - [#"../08_collect_extend.rs" 45 4 45 40] _17 <- { _17 with current = ^ _16 }; + [#"../08_collect_extend.rs" 45 4 45 40] _16 <- Borrow.borrow_final ( * _17) (Borrow.get_id _17); + [#"../08_collect_extend.rs" 45 4 45 40] _17 <- { _17 with current = ( ^ _16) ; }; assume { inv2 ( ^ _16) }; [#"../08_collect_extend.rs" 45 4 45 40] _15 <- ([#"../08_collect_extend.rs" 45 4 45 40] next0 _16); _16 <- any borrowed i; @@ -1091,8 +1091,8 @@ module C08CollectExtend_ExtendIndex BB2 { [#"../08_collect_extend.rs" 55 11 55 18] _9 <- Borrow.borrow_mut v1; [#"../08_collect_extend.rs" 55 11 55 18] v1 <- ^ _9; - [#"../08_collect_extend.rs" 55 11 55 18] _8 <- Borrow.borrow_mut ( * _9); - [#"../08_collect_extend.rs" 55 11 55 18] _9 <- { _9 with current = ^ _8 }; + [#"../08_collect_extend.rs" 55 11 55 18] _8 <- Borrow.borrow_final ( * _9) (Borrow.get_id _9); + [#"../08_collect_extend.rs" 55 11 55 18] _9 <- { _9 with current = ( ^ _8) ; }; [#"../08_collect_extend.rs" 55 20 55 34] _10 <- ([#"../08_collect_extend.rs" 55 20 55 34] into_iter0 ([#"../08_collect_extend.rs" 55 20 55 22] v2)); [#"../08_collect_extend.rs" 55 20 55 22] v2 <- any Alloc_Vec_Vec_Type.t_vec uint32 (Alloc_Alloc_Global_Type.t_global); goto BB3 diff --git a/creusot/tests/should_succeed/iterators/08_collect_extend/why3session.xml b/creusot/tests/should_succeed/iterators/08_collect_extend/why3session.xml index 156d75f02c..27d4fc54eb 100644 --- a/creusot/tests/should_succeed/iterators/08_collect_extend/why3session.xml +++ b/creusot/tests/should_succeed/iterators/08_collect_extend/why3session.xml @@ -33,52 +33,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -108,53 +108,53 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/creusot/tests/should_succeed/iterators/08_collect_extend/why3shapes.gz b/creusot/tests/should_succeed/iterators/08_collect_extend/why3shapes.gz index c6dc966381aa5e807e3b97e0b5fab6894db5c319..dd3cdebfa3f5186abba1f2ad3ecacf780f9b2e01 100644 GIT binary patch literal 3714 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 literal 3653 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 XD2O`YU - + diff --git a/creusot/tests/should_succeed/iterators/09_empty/why3shapes.gz b/creusot/tests/should_succeed/iterators/09_empty/why3shapes.gz index 4414424b20cdeefd9ee090f2744e2b06441be47f..d7a57fcd7f6c24cb44d19fe50687308ccc075c8c 100644 GIT binary patch literal 485 zcmV{ zpJ2EDIF{-B@(j(;o<6_;ncd~F?eZ7JzQcITh97WfE=gT3dr5eDveYum>-m{&=aX(1 zEHM(6fJ_?kkMXaA%fH+X9W;IR;${cFJ)Ms@U`VEt_H*0d-3e?G*dLnjiP1Ke!?%g_ zwLPJ=tcLfNT{UG59ro?$>R2U1nEobd_=NLOKy6VJ3JNeNZaK!V>|KqhdL&NX7*VKA_^r zfm6+dbBafVh*T@?Fc%fCSVnXKh82K}7)5oVd_g3IU?MO=4d$wni3Tn>jD?eh2;2w+ z7D1u&)CEik&nc@YtthFA%2YbzF?i(wxg^pPg$A_YUOH`rl+u`q&+mLAm@$R%8bbQL bFe(6*29(sEM~V|)-1&b1e;}4RCyHG9Lsf_p2_YmTAF0;%npde! zN)jsg_c%#kKSYsux$Js9GoFn0%_<+B@km2{qJG$Q?Yms(tG5{*`!4+SG%(AM4#)Ag zWuI`f{W!I$etE`r><%Ar#LRB;*!B4fW7|{QXX6jtwWq|cZnYFXJy~vrg=V=H>!tGb z4N6Xc+kr|P`H$ycH?ID2JNDQP*^8SE`tESt(?}tiO5D#~OIIhjO2c8-eou(5wSeDd z(AVxj)`|w-TXE)84fZs2`x7Od%d0K@8qd+d6wT6#39+;(o9dDs++`=H?36XOXdX_h z`v{fQw*x&v*2@#>Tut+TjC6U&WD{^vIG>AZ`m%XZw(~;WJ6|?PHjjqYc@<=p-K8%d zr7v&N*C~B@Nq?~hRyD6vF^^RiS7LIN0eY#NjFE{Vco%)pI>yp7i3&)IoYyP^DS{8A zfdGLUA)V6@2_tc%!BH-2s72;O5t&l12s|}qDRrSCNxLWsfGF3snqdJ|48fI*AqZ1& z&AfEX36B&^%($>($S4PzX;nx) - + - + diff --git a/creusot/tests/should_succeed/iterators/10_once/why3shapes.gz b/creusot/tests/should_succeed/iterators/10_once/why3shapes.gz index af1d12fbf877c08234a829da764585d9840381a8..22af7df85bc79cc64176d1375f6ec9c8197511ca 100644 GIT binary patch delta 635 zcmV->0)+kW1cn8W7Jqav9)HG2d#EZ!uC#&!l8;nQJl>6HlaiDL{yk3XB<<1*61_At zp7;Fb&G`K)A70!Mhx`@$q3PO>xy)A|veS3hw69=EnLdeyGIPhi^FL}Fh-D5B$J1}i zwwF`(+`94*JIcx9=cG%NI9|78+IV>;eWw$D{YbZi}eK}*OyqQ zn5P)X`UTlhr-nB!L$QI#r5e}p9sRveOn_11q)!pH^#}oQ^ zcf90N*W#kctzvR$+UHo&wHCmAJy(6{4rn8O>v|lz{VS4W0n8S}_;GAVm)qHk#|W3{ zlBdXhv58uFDSsJHM^xdeuJ5~_=-(Z_rN+<5(6nwJ1vK9Ba&lzUIHIH#@v6u1P(->H z?3>fB@$MPNKg(+v1+1*tSfJP7GAZY?wJrWSCBOJ$C|eAri=i+YI(f@)_CuuY6We>q zGVO#&{)jR=pX|=7p507F+?$NJnv9D6h007x4Liqpy delta 613 zcmV-r0-F7X1@Hur7JuwsJpPQ4_E1%dTxkUdBp+Eh_82PKq$Fj5e~;5TNn3hBA}7yy z-kUeileZ7$@YNk~C||K3wq5(al;y*_;`rTd+gGrp&PQUQF5IE-!VixFvCQHAaQtoA z=6uVZ-TLKY>(SD>u`S!eJCX&A{qnJ*!ze-|Y`OJYq<_ zQalg9&N&JT#rMydqt8hfZ2i+KaB(FdNX_Rl;AQq zc~0DCo2ZrNl7I1bL{+Zo`o8;#;m!VA9{hxi+t%$YuO~A`c_Tntk-9vkP^>M`%j-JJ z;U0m3% z((qz-eKGCdSgQLhb$&0AjS@FgrVUS9YW3!Bw!U0nk$-aPGNHzj$%)n3=IPf^Ij*K( zW%J*d>hUWIMW`a$IaH_sBSaN-r5IAJ6oueRW~c!}3dyviREQ88Aq2Qk1@1HnBznaJ zk7Z?)kwzF^1dkGYLzRQ5IVXS`IUza(9vV*kMJZ4olxno#&T;7}B68syp*VHQ$4~+{ zzzie}U|xV2T|}xAD{_WGS2PetKuN+l1|OwUs-$2jF`x}p29yD5Kol&nsC|=^NYsts z4d+O~d&#Q?RA^2pdW%v{k;-e$y!R-y0}@h05hy~$*zgmI-J<>g(uTryi3I=vk6tgk diff --git a/creusot/tests/should_succeed/iterators/11_repeat/why3shapes.gz b/creusot/tests/should_succeed/iterators/11_repeat/why3shapes.gz index 23747f68975c406eba63559e86f08f7cb3ca42f9..95c7eed61562707323ed45aaea8f3338e20396c6 100644 GIT binary patch literal 519 zcmV+i0{HzOiwFP!00000|E*HXj+`(Myz>n$5)6jP5ia&K2E(;SKnO0KziZruNPlg+5)WWLr zc|zuMt(TfFb(Zg@^*Fe1WRXknbnP{Y-9Nn5J9M_`7nOVy%tpbh4Yt|f(ZL=xw0?Y-0}IMiJFl$Eq330GWrA%)_y_TY*2EOQc(JB?OzmO?2@QSwAs zR|{5iPkC)6IIcbMoJp?Q;44RrP#03gFe4Q*Pq+wQ!etu$87jz&&?efRA%;4QqOrWnsc2(@Kh8k!t(&WT@drF08Vc zCwMW}YN_c`>tZ*p#=(6r|I6lb~N8kRzGT%TZU^g@7tPqwY6DdT0#9j7WtT^TsAqYBcr+u zxKmUjt+}%bapb*qA#eqZ3P*X!NrfwvQAt@~oJq=E5CPdhwC4cSE3k@^TvWVb70qJ6 z4k8N5#~6ha)I}$)u#y4Q5yc!QLR?`~=}J{Hb3sz7EK7%aDu@)^Q^rxmkwphm=a^NP zZg_z-2CE%QXr?qmLOS9ZO9zGYQWKtUc*%oDR9mny2JJD!NJ||-F~n5xa>9!Z{|{%N JuV$%wt diff --git a/creusot/tests/should_succeed/iterators/12_zip.mlcfg b/creusot/tests/should_succeed/iterators/12_zip.mlcfg index 0b9388a92d..67a05db24f 100644 --- a/creusot/tests/should_succeed/iterators/12_zip.mlcfg +++ b/creusot/tests/should_succeed/iterators/12_zip.mlcfg @@ -473,7 +473,7 @@ module C12Zip_Impl0_Next ensures { result = completed1 self } predicate completed0 [#"../12_zip.rs" 18 4 18 35] (self : borrowed (C12Zip_Zip_Type.t_zip a b)) = - [#"../12_zip.rs" 20 13 22 67] completed1 {current = C12Zip_Zip_Type.zip_a ( * self); final = C12Zip_Zip_Type.zip_a ( ^ self)} /\ C12Zip_Zip_Type.zip_b ( * self) = C12Zip_Zip_Type.zip_b ( ^ self) \/ (exists x : item0 . inv5 x /\ produces1 (C12Zip_Zip_Type.zip_a ( * self)) (Seq.singleton x) (C12Zip_Zip_Type.zip_a ( ^ self)) /\ resolve3 x /\ completed2 {current = C12Zip_Zip_Type.zip_b ( * self); final = C12Zip_Zip_Type.zip_b ( ^ self)}) + [#"../12_zip.rs" 20 13 22 67] completed1 (Borrow.borrow_logic (C12Zip_Zip_Type.zip_a ( * self)) (C12Zip_Zip_Type.zip_a ( ^ self)) (Borrow.inherit_id (Borrow.get_id self) 1)) /\ C12Zip_Zip_Type.zip_b ( * self) = C12Zip_Zip_Type.zip_b ( ^ self) \/ (exists x : item0 . inv5 x /\ produces1 (C12Zip_Zip_Type.zip_a ( * self)) (Seq.singleton x) (C12Zip_Zip_Type.zip_a ( ^ self)) /\ resolve3 x /\ completed2 (Borrow.borrow_logic (C12Zip_Zip_Type.zip_b ( * self)) (C12Zip_Zip_Type.zip_b ( ^ self)) (Borrow.inherit_id (Borrow.get_id self) 2))) val completed0 [#"../12_zip.rs" 18 4 18 35] (self : borrowed (C12Zip_Zip_Type.t_zip a b)) : bool ensures { result = completed0 self } @@ -530,8 +530,8 @@ module C12Zip_Impl0_Next goto BB0 } BB0 { - [#"../12_zip.rs" 55 22 55 35] _5 <- Borrow.borrow_mut (C12Zip_Zip_Type.zip_a ( * self)); - [#"../12_zip.rs" 55 22 55 35] self <- { self with current = (let C12Zip_Zip_Type.C_Zip x0 x1 = * self in C12Zip_Zip_Type.C_Zip ( ^ _5) x1) }; + [#"../12_zip.rs" 55 22 55 35] _5 <- Borrow.borrow_final (C12Zip_Zip_Type.zip_a ( * self)) (Borrow.inherit_id (Borrow.get_id self) 1); + [#"../12_zip.rs" 55 22 55 35] self <- { self with current = (let C12Zip_Zip_Type.C_Zip x0 x1 = * self in C12Zip_Zip_Type.C_Zip ( ^ _5) x1) ; }; assume { inv0 ( ^ _5) }; [#"../12_zip.rs" 55 22 55 35] _4 <- ([#"../12_zip.rs" 55 22 55 35] next0 _5); _5 <- any borrowed a; @@ -571,8 +571,8 @@ module C12Zip_Impl0_Next goto BB7 } BB7 { - [#"../12_zip.rs" 59 22 59 35] _11 <- Borrow.borrow_mut (C12Zip_Zip_Type.zip_b ( * self)); - [#"../12_zip.rs" 59 22 59 35] self <- { self with current = (let C12Zip_Zip_Type.C_Zip x0 x1 = * self in C12Zip_Zip_Type.C_Zip x0 ( ^ _11)) }; + [#"../12_zip.rs" 59 22 59 35] _11 <- Borrow.borrow_final (C12Zip_Zip_Type.zip_b ( * self)) (Borrow.inherit_id (Borrow.get_id self) 2); + [#"../12_zip.rs" 59 22 59 35] self <- { self with current = (let C12Zip_Zip_Type.C_Zip x0 x1 = * self in C12Zip_Zip_Type.C_Zip x0 ( ^ _11)) ; }; assume { inv3 ( ^ _11) }; [#"../12_zip.rs" 59 22 59 35] _10 <- ([#"../12_zip.rs" 59 22 59 35] next1 _11); _11 <- any borrowed b; @@ -749,7 +749,7 @@ module C12Zip_Impl0 ensures { result = completed1 self } predicate completed0 [#"../12_zip.rs" 18 4 18 35] (self : borrowed (C12Zip_Zip_Type.t_zip a b)) = - [#"../12_zip.rs" 20 13 22 67] completed1 {current = C12Zip_Zip_Type.zip_a ( * self); final = C12Zip_Zip_Type.zip_a ( ^ self)} /\ C12Zip_Zip_Type.zip_b ( * self) = C12Zip_Zip_Type.zip_b ( ^ self) \/ (exists x : item0 . inv6 x /\ produces1 (C12Zip_Zip_Type.zip_a ( * self)) (Seq.singleton x) (C12Zip_Zip_Type.zip_a ( ^ self)) /\ resolve0 x /\ completed2 {current = C12Zip_Zip_Type.zip_b ( * self); final = C12Zip_Zip_Type.zip_b ( ^ self)}) + [#"../12_zip.rs" 20 13 22 67] completed1 (Borrow.borrow_logic (C12Zip_Zip_Type.zip_a ( * self)) (C12Zip_Zip_Type.zip_a ( ^ self)) (Borrow.inherit_id (Borrow.get_id self) 1)) /\ C12Zip_Zip_Type.zip_b ( * self) = C12Zip_Zip_Type.zip_b ( ^ self) \/ (exists x : item0 . inv6 x /\ produces1 (C12Zip_Zip_Type.zip_a ( * self)) (Seq.singleton x) (C12Zip_Zip_Type.zip_a ( ^ self)) /\ resolve0 x /\ completed2 (Borrow.borrow_logic (C12Zip_Zip_Type.zip_b ( * self)) (C12Zip_Zip_Type.zip_b ( ^ self)) (Borrow.inherit_id (Borrow.get_id self) 2))) val completed0 [#"../12_zip.rs" 18 4 18 35] (self : borrowed (C12Zip_Zip_Type.t_zip a b)) : bool ensures { result = completed0 self } diff --git a/creusot/tests/should_succeed/iterators/12_zip/why3session.xml b/creusot/tests/should_succeed/iterators/12_zip/why3session.xml index 5f48b1144d..982695965e 100644 --- a/creusot/tests/should_succeed/iterators/12_zip/why3session.xml +++ b/creusot/tests/should_succeed/iterators/12_zip/why3session.xml @@ -8,7 +8,7 @@ - + @@ -72,18 +72,18 @@ - + - + - + - + diff --git a/creusot/tests/should_succeed/iterators/12_zip/why3shapes.gz b/creusot/tests/should_succeed/iterators/12_zip/why3shapes.gz index 8a244de8a64234084fc5f553f68e172012e1ef06..b5093cc4383a67ddcc7a950f285a052530eee3ef 100644 GIT binary patch literal 2176 zcmV-`2!HnD}Q`EbicLn2^--*er#l;8*@ACAAX_H7c={OW*=W>Uyi>x zvM)#Wab#cqLH6bA?29T4yhyM}ph$iU`=VkWGW$~`i0F*mA2AQOKf;y&5wqY3Nsve6I1%`B`kwY(`=39xzlG zmSL!9&Z3ZJ%P>sd!{q+b{|dlj0;h@476_qjz%C&`k_;HqFoUr3&H}=&fC$<8FmBIL zgzUpGZnN{u`}_-j#Kp#6$UbI4I|BarF_DlkyuZi;R6NkaBsd`eG65@)1_I!B60qd5 zMou%Qkhd$C3!F<}UkExbz(Nuf*qBk`C6u_kgy0Mw%*zU{F_a|PZqGX4^P_)wS}7!{ zB3;B8R)TstoTTb3j_VOTDTC*bX~9XfNU~jz6TTQHemPEJfr2MN9ub2gqY#(kBo=X6 z3Fkb?=Vb*EFLA)I1l3CdYvdBXd?-rslaQDkt6bJW#Y?^nVOZ zYRhZ>hvua+5lXyHGKw!^fk{wK56}Md^NixVwF7a&Kh6sZ|5*5k3mGL|%qV#|qtpV0 zOoBWTG|DK{rHoPwEGvmOPs({&K_m+zQ6plhNrn0n#D*Tb*7D}8TSYx(-78J*<=lIz ztyLMgg8J=w$cBDZkRA_D&+Xx%+dtDYZ1Hd~`Ce^@3O&9Z#@v9CEv(cZDCSspU{;f> zU*1=%9%z`Z&1`;i*!j(2<~N5?knf zx31qIwrsAHl195Q16Upd)AItWw=19DOdzU9f?U2RRAyQaq!gxyLGr>^>$ z>jvya8PDQu0ev_;J|4cs?oVHSrG@|89~;4jZT<_E{N{4IE#v-Mjt5Os zkV$Zt;?I==BBJw<$|O#JS7_?O4cf|%v#0PvX-PX`x=PJyl!AW zD=YWohxni8sqnJ7@WNbptAbb6yQzSY6^z2;s=a>sVq z2ia{DDM81rP*g+Gy*AZcR(bGjRAG&4QRvfk@~&+bRo2G0Qq;RoA7<98a31In^w+lj;@CT(Gu{ zT#BCA-ty3Cu8i`*lE?(zX3g?UGlfq(B<0c}jVbi#5MHrmI@6Oe3ykr$>jPKO()C&d zj#28E6GNUc&ndIG<0L2Qm_y>qe2;a>I?p;CqKN{TL=&t51oFqwZNun|04L9)^TVtM z!EG!1&h}j^dc-!iF-WfINcCC`*4cYmCku4@=zCNFA&MYd8~a{rI-v%chGbp5n{}^Z zCzN0YC6$jDx?V(7l3p1mC{&oOzgyg+ro$&h-*VYX^fFKp(qOul1*?(w**bqO>&Ue? zpcxmDia;kd6;*FL(J4jAhap=R?`2)c7;Vd`Wa^fo&`e5AxzPKr(;f5!cI||6;_Qt7 zC?BW@3Kmq4y@Aepk1QSh*mqIK)(4S&IICSh?A%fFU}%F@bk757K*7_ISCV6@`BdMM zb^C7Etc0zeF`?K(lBpmxa3#(*=-Y3nrgQSG#HS~@M9=1!y2;52i}I%S-q zHmjVHS0D^CmRgvXiuZwPHFi;=q6WqzS1KVg)R&Dj+8O1HbVfMCoxv*`n2l zBJ~svB14K!L>ao6_FA^Sm-&vhK?UF{C}nMsQ48-C^*SaaGkGtp@BKf`?qR?69RL6- CH)D1H literal 2159 zcmV-#2$1(5iwFP!00000|Fu|6b0fJ8z57?_md(tC1iw=|2bW7K`jQ-y>cbx5BD=|1 zRXmnrduNjT`haY*n=Q3$@9fwYu|X2RdjJ8_KYiFd{pyb4Y4bHaKJ5<=f7!^*hd*CE z|J&^!zVeRj%8+%m4xxiOq#fH`x#Qzu_^l65&~f+iV<$S*>DzJt_)9xgzGe9q<(uC& zyXCmCQHQ$Z!hmt%%klZYohkcGGfO*4l6{H;beG>2zsCWfuu7mxXqAxLRt;1It?H~7 zmi9z(hl;95RBCX2>pFg_x_BfbNp@G=%_bfmH+9+FV~F=fgP7UpGy802A6{l(lwT<9 zi^4t>_QfA$U%bvfZ^FQ;1geBq$&X>5H|*2Q{uBu$IwN;S$OGn%^vZp5_u=95Gv+^? zM$n3(j+{^8&*2$I9o6n1za8%bWWkXpK^~#wNZ`-ud)jyHe*V;>2fB6L{cnG~bNF|x zL*LMxMLx~ep`W~`llx2m8vu(5m?nH*A^5(dW(k2N$%r8hGYB*9tRTz^2%oKw|+-61@Om@iG+kHNBS<;szO1UqbEd6vQ_{mq)f6#fPN<9 z38vfQuiKwbj_lQMT+vWC8{SXfqmBJq+~?&NiF1vPiM}^1x_*nf>k}{?kX1BEzJP;* zlpH8Np{Jw>klpngn7)2X$gWS~e0`b|-$_UE{vr>w;Q<#W!3hC06R-klB!K=-0+w91 z$Z_Tr@^%Gtg>wn)3qgkkSegVCHe{4=2_@_qnLVXNO&kJbYu55lYQQkZf#PUTUGt+7$r7}GZk`Jan-1H=x-g0vB zUeQ%Wt2}F7JOolP7~KY1&C&VY0x-T?WI91Nu0MRi?0pVHDk<*f?yrZ3&}7qxBz@XH ze8x40hjje@Ij;Nr;Y;XJtGKywpVFBfw_dx)@N~HU8t@fgdsiA1Dd||vF$QJJ%>@mt zW9oWLgfu8pd_s-~AK&?PODz6;%X5yBfwfl()Hj|o|lCY>>6Y3O_STd-Q2`EZ>C{QpyWrX z$DPof%KR$QNx5w@NScxbGKWo0F_n73pcHvpRtBY*8BB9irpbD#k=cDII>~FMNxsZ9 zN!BtAr8BRJB1d`M$ZJ)`vN&5{E14$CwvkssTV4gt+ejx2>ZP zHU+P#cTKr#{yDY$-&FnAR8w~w;jZ+PTIX+tjv3 zYFk^H`NP_F>F;V$UeC@`s;=#EG8n%3Fx5t{Z-1W_O4ilvuG|0HK_dJrdQU#6#F%|uCHU^vxY7$3D7dZm?dT=lv~VtmpPU+3w^3tC@bVEni(g3ADG~gm}ra%8XrWwPhETD2>0mm46us~n2r3W3+n4yHQeu$pQVDNg)J%b=r$cZ7&m}i(-%rcZC zb;JU4rN76zAcG@=@<9g-g%yVIICSh?A&4VAYiQQjiy!;tBh6HN0n95Dq$73idh9#QLBiR#!77^wpnSVxKcuJC!*_PQbjrA z*wH}9zK1}h%!oAhWo@;xT3Riv=2kPS;Yt&27*!E7PbtYm@WwMji4;QO-du$YS>J1< l>!ol4TPF#g3lrmjFFw3cDnl{Cc`sex`+xq5P)GG00061$A@2YH diff --git a/creusot/tests/should_succeed/iterators/13_cloned.mlcfg b/creusot/tests/should_succeed/iterators/13_cloned.mlcfg index 7078fcd60e..18e5dd6cae 100644 --- a/creusot/tests/should_succeed/iterators/13_cloned.mlcfg +++ b/creusot/tests/should_succeed/iterators/13_cloned.mlcfg @@ -295,7 +295,7 @@ module C13Cloned_Impl0_Next ensures { result = completed1 self } predicate completed0 [#"../13_cloned.rs" 22 4 22 35] (self : borrowed (C13Cloned_Cloned_Type.t_cloned i)) = - [#"../13_cloned.rs" 23 8 23 43] completed1 {current = C13Cloned_Cloned_Type.cloned_iter ( * self); final = C13Cloned_Cloned_Type.cloned_iter ( ^ self)} + [#"../13_cloned.rs" 23 8 23 43] completed1 (Borrow.borrow_logic (C13Cloned_Cloned_Type.cloned_iter ( * self)) (C13Cloned_Cloned_Type.cloned_iter ( ^ self)) (Borrow.inherit_id (Borrow.get_id self) 1)) val completed0 [#"../13_cloned.rs" 22 4 22 35] (self : borrowed (C13Cloned_Cloned_Type.t_cloned i)) : bool ensures { result = completed0 self } @@ -336,8 +336,8 @@ module C13Cloned_Impl0_Next goto BB0 } BB0 { - [#"../13_cloned.rs" 53 8 53 24] _4 <- Borrow.borrow_mut (C13Cloned_Cloned_Type.cloned_iter ( * self)); - [#"../13_cloned.rs" 53 8 53 24] self <- { self with current = (let C13Cloned_Cloned_Type.C_Cloned x0 = * self in C13Cloned_Cloned_Type.C_Cloned ( ^ _4)) }; + [#"../13_cloned.rs" 53 8 53 24] _4 <- Borrow.borrow_final (C13Cloned_Cloned_Type.cloned_iter ( * self)) (Borrow.inherit_id (Borrow.get_id self) 1); + [#"../13_cloned.rs" 53 8 53 24] self <- { self with current = (let C13Cloned_Cloned_Type.C_Cloned x0 = * self in C13Cloned_Cloned_Type.C_Cloned ( ^ _4)) ; }; assume { inv0 ( ^ _4) }; [#"../13_cloned.rs" 53 8 53 24] _3 <- ([#"../13_cloned.rs" 53 8 53 24] next0 _4); _4 <- any borrowed i; @@ -432,7 +432,7 @@ module C13Cloned_Impl0 ensures { result = completed1 self } predicate completed0 [#"../13_cloned.rs" 22 4 22 35] (self : borrowed (C13Cloned_Cloned_Type.t_cloned i)) = - [#"../13_cloned.rs" 23 8 23 43] completed1 {current = C13Cloned_Cloned_Type.cloned_iter ( * self); final = C13Cloned_Cloned_Type.cloned_iter ( ^ self)} + [#"../13_cloned.rs" 23 8 23 43] completed1 (Borrow.borrow_logic (C13Cloned_Cloned_Type.cloned_iter ( * self)) (C13Cloned_Cloned_Type.cloned_iter ( ^ self)) (Borrow.inherit_id (Borrow.get_id self) 1)) val completed0 [#"../13_cloned.rs" 22 4 22 35] (self : borrowed (C13Cloned_Cloned_Type.t_cloned i)) : bool ensures { result = completed0 self } diff --git a/creusot/tests/should_succeed/iterators/13_cloned/why3session.xml b/creusot/tests/should_succeed/iterators/13_cloned/why3session.xml index 273f287cbb..5dce17a2da 100644 --- a/creusot/tests/should_succeed/iterators/13_cloned/why3session.xml +++ b/creusot/tests/should_succeed/iterators/13_cloned/why3session.xml @@ -17,7 +17,7 @@ - + diff --git a/creusot/tests/should_succeed/iterators/13_cloned/why3shapes.gz b/creusot/tests/should_succeed/iterators/13_cloned/why3shapes.gz index 3eed97215b7cc85a0f896cda0ad0f14837477de9..1e5d8f8dd3af1199c68afb2697f32883d5cb5646 100644 GIT binary patch literal 817 zcmV-11J3*(iwFP!00000|D{w-kJ~mByz5u!mUMIBd;BhtgJD#lfgm{q;4uqYBoiZE zYb(2(^xv11D2sN207dq&=6mD}Iin$8KeXpB?m3*>moT0W!|Bgfv=4tYm%rWN^n#Xj zje8yk|4$#zV8Ok4W6?6pck}f83zn6dmKsY9y9!NbU`3a>=*W@OmiqS; z(p4d@3Lz_8#OhnIG9M5UbK06OdiiFC0o|02SURwD(yPQ0S>?#4*Kx?n%r zdKum6T+S`Buk(;wScc4EcQu}_%Gs)%-?^34N~`N{yPNrSX{b`mQj6MuRiG7PqEok@ z9G3jRvIng8Lpt%cd~(=qT|YcMAHya1G)0pi?~@&?iS8kH&xh0Jv}QP2ME7Z4_i=a% zHc{-{+w|We>6RdoO>U884bohLuItG~q+%Q888Ze{@ffDaAx;>%V_moE`QAZIK zBhu4-3(NpDkXC~MVzg04Hoc;O2^ziED!Ld6>I4Ew`bZVoV~gA%GnjTkgJ6&t&<2zN zX+Rj@&0Y}=y^5TP9;v6os{m;v2?+|NYbhEEh7yC?pfV^8ibe+-0@p(5Af%6dAGvo? vX@>&#Ug3nI_b5m9Asv+l#kojZX&;H$ONS9W#4zv0?os~%sjXmfG6(@j literal 794 zcmV+#1Lgc5iwFP!00000|D{w-kK;BBz57@A)^_$HlKNbrhajk-07ZK!pkoKJC2t4K z#M305w*S78EyqfBQJ~m4WJF5u$?uWWw@>ZmH~$td?Rz|5UZ&H>R<=*yHP=7<%jq2* z>l*)dp2D9)ynqA$;e$iRoj5Gp%YSgZ#8hG|F&rv1Ex?K{anaoc(#O}g>pxBwyzI)C zfK%&|IbC6x16Dx54$D5UAN~G$f1FM+IMX$5-;UF{T_MlsI35cb{kKB8Ddi=m5@U(K zP9bdyaZ?Cc;VRbLi&gmpAu*?`#j02A78ua3WaOHGHKTSlja&%sa%$$4m3MbW0@eZl z+}7*apDyLQW%hMh3J2?wJM3=8)25tn%Eg0QNv(3GuI*vrHzlD@jEPR) zmmJpqf%Oj9?1%Kl`%-e)?fo#lz8&K=hO|Y=kDrnqn~DA@XD=_OPwC8ba)|!d<=ijR zYjla?;J;754q3N065HhzThAcn7)%|{E+YN#^SYC7y}@#DsCT;EVm2g?&hauG-(xOs zna$h@WwD?f=;dP)Le~=05%DMyvP4l! - + diff --git a/creusot/tests/should_succeed/iterators/14_copied/why3shapes.gz b/creusot/tests/should_succeed/iterators/14_copied/why3shapes.gz index 196f278a69aab20522f4622bfe8f3647cd1acccb..18cc43f568269b4b26ccb1f986b4d91f96246f12 100644 GIT binary patch literal 819 zcmV-31I+v%iwFP!00000|D{z;k0U1#z4x!^TawueReVRfOHp!#h>z^;`U zx6^he$-fVD({Ah?trV>fHdXKn-s2Vi{;9oucIR+u-@o^((;HgS zHSRo({;wfiz=Hem!J=iB_sjJ13zn6bmKaM6eTAkAuqu~o(Yp9Go&}Bti-g$SmJME zNH>PKF@(%;C9Chr%6vdbmDARI<;!;q4Ct<8#F~LMBX@Nfu@tz=$+@nmw7U}$unyRl zvR)^5x|DN^tm`u57S?q)i=pGKny}@$O*E8L25gU?5Q@D&TZy{fA z>CNnfGFVU+)N+`FP&LK0gg;V*Op(_VS*FNu6jQNXX^rB~d4AqXy2Ch4`6sO#lHWgO1lwEW4@J6F z0eUm3Mkq`0UjGr64e?_ zEU)cN+kanDqAc1Q6eu=_gfrxOG36L@3~hm?1z6BUF1ouw`tW+X{^MlE%O<}B zoLZO6=>o$XunYp$F8jcK^84rgbUK8=nWl34dYsPn3VA+<@g7Y}YlwaS^Yw(Y`iazf`=kKUzBb~l4 zIjsEy>m9J!5AntOTyog$eLuaPUcxmDaf_lKKTpT7ndqNV_HsD>9?wiihv&iy*Q z1{Wz>|0(`<$eOj0*e<2mdIl-QV9I!Q5$VTY)}3_g4VHqo+-Y`;*$_QChs*Tx7E*ch zY^F}giv{ICFOP``T}q5c#G^z=5=AMICyC-FF_P`_XypE!_vfpW@22y4`YR0Iz5aP? zrUgG9j{YTj)oe{RyEy|zYPh&c8NPQY9u76DHoCRtG5meKwH@2q4z{+#t?g*5I8OyH z%KViDsmi4TDhk;2uahU+|Hq==XKC{MuCpHJWA4`H`LkVq8bq2EnOeSmH`|oMF47>B z36+lQ@>e|KUb0zv*Z)6FRdEKqr(Tg1Br&$wCM5YKzLEtZ?Lv5gNga8o3#OOE&5*=y60Hyq{6@h%zwBjt%1=u?Now b&p974K)?aJp3{utkEnkE+J94J3 - + - + - + - + - + - + - + - + - + - + - + diff --git a/creusot/tests/should_succeed/iterators/15_enumerate/why3shapes.gz b/creusot/tests/should_succeed/iterators/15_enumerate/why3shapes.gz index f6baf22220c99627f4f84ebaff03bf733d940ee4..31edfbf73f98ab4366ed90269a5b7cae73d0e766 100644 GIT binary patch literal 1859 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 0 /\ UIntSize.to_int (C16Take_Take_Type.take_n ( * self)) = UIntSize.to_int (C16Take_Take_Type.take_n ( ^ self)) + 1 /\ completed1 {current = C16Take_Take_Type.take_iter ( * self); final = C16Take_Take_Type.take_iter ( ^ self)} + [#"../16_take.rs" 23 8 26 9] UIntSize.to_int (C16Take_Take_Type.take_n ( * self)) = 0 /\ resolve0 self \/ UIntSize.to_int (C16Take_Take_Type.take_n ( * self)) > 0 /\ UIntSize.to_int (C16Take_Take_Type.take_n ( * self)) = UIntSize.to_int (C16Take_Take_Type.take_n ( ^ self)) + 1 /\ completed1 (Borrow.borrow_logic (C16Take_Take_Type.take_iter ( * self)) (C16Take_Take_Type.take_iter ( ^ self)) (Borrow.inherit_id (Borrow.get_id self) 1)) val completed0 [#"../16_take.rs" 22 4 22 35] (self : borrowed (C16Take_Take_Type.t_take i)) : bool ensures { result = completed0 self } @@ -307,9 +307,9 @@ module C16Take_Impl0_Next end } BB1 { - [#"../16_take.rs" 55 12 55 23] self <- { self with current = (let C16Take_Take_Type.C_Take x0 x1 = * self in C16Take_Take_Type.C_Take x0 ([#"../16_take.rs" 55 12 55 23] C16Take_Take_Type.take_n ( * self) - ([#"../16_take.rs" 55 22 55 23] [#"../16_take.rs" 55 22 55 23] (1 : usize)))) }; - [#"../16_take.rs" 56 12 56 28] _5 <- Borrow.borrow_mut (C16Take_Take_Type.take_iter ( * self)); - [#"../16_take.rs" 56 12 56 28] self <- { self with current = (let C16Take_Take_Type.C_Take x0 x1 = * self in C16Take_Take_Type.C_Take ( ^ _5) x1) }; + [#"../16_take.rs" 55 12 55 23] self <- { self with current = (let C16Take_Take_Type.C_Take x0 x1 = * self in C16Take_Take_Type.C_Take x0 ([#"../16_take.rs" 55 12 55 23] C16Take_Take_Type.take_n ( * self) - ([#"../16_take.rs" 55 22 55 23] [#"../16_take.rs" 55 22 55 23] (1 : usize)))) ; }; + [#"../16_take.rs" 56 12 56 28] _5 <- Borrow.borrow_final (C16Take_Take_Type.take_iter ( * self)) (Borrow.inherit_id (Borrow.get_id self) 1); + [#"../16_take.rs" 56 12 56 28] self <- { self with current = (let C16Take_Take_Type.C_Take x0 x1 = * self in C16Take_Take_Type.C_Take ( ^ _5) x1) ; }; assume { inv1 ( ^ _5) }; [#"../16_take.rs" 56 12 56 28] _0 <- ([#"../16_take.rs" 56 12 56 28] next0 _5); _5 <- any borrowed i; @@ -402,7 +402,7 @@ module C16Take_Impl0 ensures { result = resolve0 self } predicate completed0 [#"../16_take.rs" 22 4 22 35] (self : borrowed (C16Take_Take_Type.t_take i)) = - [#"../16_take.rs" 23 8 26 9] UIntSize.to_int (C16Take_Take_Type.take_n ( * self)) = 0 /\ resolve0 self \/ UIntSize.to_int (C16Take_Take_Type.take_n ( * self)) > 0 /\ UIntSize.to_int (C16Take_Take_Type.take_n ( * self)) = UIntSize.to_int (C16Take_Take_Type.take_n ( ^ self)) + 1 /\ completed1 {current = C16Take_Take_Type.take_iter ( * self); final = C16Take_Take_Type.take_iter ( ^ self)} + [#"../16_take.rs" 23 8 26 9] UIntSize.to_int (C16Take_Take_Type.take_n ( * self)) = 0 /\ resolve0 self \/ UIntSize.to_int (C16Take_Take_Type.take_n ( * self)) > 0 /\ UIntSize.to_int (C16Take_Take_Type.take_n ( * self)) = UIntSize.to_int (C16Take_Take_Type.take_n ( ^ self)) + 1 /\ completed1 (Borrow.borrow_logic (C16Take_Take_Type.take_iter ( * self)) (C16Take_Take_Type.take_iter ( ^ self)) (Borrow.inherit_id (Borrow.get_id self) 1)) val completed0 [#"../16_take.rs" 22 4 22 35] (self : borrowed (C16Take_Take_Type.t_take i)) : bool ensures { result = completed0 self } diff --git a/creusot/tests/should_succeed/iterators/16_take/why3session.xml b/creusot/tests/should_succeed/iterators/16_take/why3session.xml index ff622322af..75950ea431 100644 --- a/creusot/tests/should_succeed/iterators/16_take/why3session.xml +++ b/creusot/tests/should_succeed/iterators/16_take/why3session.xml @@ -17,7 +17,7 @@ - + diff --git a/creusot/tests/should_succeed/iterators/16_take/why3shapes.gz b/creusot/tests/should_succeed/iterators/16_take/why3shapes.gz index 85972eb4232de70fd3a6e9e21d8aa913cab39012..e24d940770260e63f50c022264bac521d6b51acf 100644 GIT binary patch literal 941 zcmV;e15*4SiwFP!00000|D{z;kK;BBz2{f>w(Tqmh@w910&@t0F%+QarG<_g$d4(qcGY&+K`!xCeHogQ)5Xb&-aOZFtpWg$s95b=;@VTmUr)VvpF@0*Ukh>nA#PtO`qW>;IRQMS z4$C_QSdbRM7zTuG^)|y#fwUGKe zHRIdhFW>KOSicc9)+IA^dgyHh$PLeqg!(e7XNLVK=v4+`IH* zC9NWD#5ZB(ejZl;4MpEasq+aIxh?v5r6G1opVRe-7kRpg<2_@Yr_B825%o5fMz6Fw zj>db|dOh;fM|Evb(PhTZr&{K<%4?n1+XVj$sgA$hjsaIFyePS7WC>jtL=bIL1t|jr z9|~op5e5x6VA!sa2&HIS=h`5hVj=Ld0uQnctq|H500tNZRHihV0?MufFC{qV=)iK2 zzCu@lX6Vsj7Yfb{R0c`|+JG`34G05hfbVqEH9%1n^Fe9>I-n1%X<9@ty~Bbl!=>TE zaH@|R4%7~^E4Hu7F!lv=NT~Yp{Y`c-iCNCprlqLV57X2UD=^(z2=U~GK3UT PZbJS6xz(W+kO=?)a@E$F literal 906 zcmV;519ki#iwFP!00000|D{z;Z{s!)z57?_wrv&#IK%G(IS57s8Yp^c!Q&bfMYYBz zQffPC`|nFpR780V6h(80Jj0nc!}rMHcMsL&clR1D)q6N!PUG-nC8~$-ch^7MX?RCV zn*0+iG&}ct9=kUmE@07p{%on`RvhN#`HPlkn`N738xKV`n-dGTh{ZMqqzf;v*T1dI z`Eu!mSXBfPt8<_}%&WTD*?rZI=W2;LoVJXq_3yI(uO8knGWQ0Rk}Rmp+|P;ae`QXE$7OH*D3HPWmpY z<7P8->XBKoN^zKz7wLJnS+;3O4xbZm=-U)fnJty`)ykG$RfpJXRs-w3^W)3wbGU|X z+NRqde;$Xh?%zF3-pgtDEyj#PB*%T3<9-=mf{hS|(|+&H;W9qI2V#+CVy7RE6P?KF zOa?2fMXkwgHHg)scddpzR!ebnHDph-fXO`-K;P{-KUqYG4NOSHKbLG==#&( zo-L@SykPCLAC(g0c6CI1oIKiH46Hix7G#f=UzK1IMi z9Z*_IK6GeqxQR=p4i>eC)cdg=--hn;?dpcf8=+P?P$U_a?*>HN$gxbJb#@Hluj|K{ zAnTZb^`7E-Pva!q+)j4ya>0 z1Z|X&F(EjPZLfNb6d4g+-(w4mbsRSv^04+wj{{R30 diff --git a/creusot/tests/should_succeed/knapsack.mlcfg b/creusot/tests/should_succeed/knapsack.mlcfg index 5b6fe5dc4b..f98c6ee3ef 100644 --- a/creusot/tests/should_succeed/knapsack.mlcfg +++ b/creusot/tests/should_succeed/knapsack.mlcfg @@ -779,14 +779,14 @@ module Knapsack_Knapsack01Dyn goto BB31 } BB31 { - [#"../knapsack.rs" 77 12 77 29] _67 <- Borrow.borrow_mut ( * _68); - [#"../knapsack.rs" 77 12 77 29] _68 <- { _68 with current = ^ _67 }; + [#"../knapsack.rs" 77 12 77 29] _67 <- Borrow.borrow_final ( * _68) (Borrow.get_id _68); + [#"../knapsack.rs" 77 12 77 29] _68 <- { _68 with current = ( ^ _67) ; }; [#"../knapsack.rs" 77 12 77 32] _66 <- ([#"../knapsack.rs" 77 12 77 32] index_mut1 _67 ([#"../knapsack.rs" 77 30 77 31] w)); _67 <- any borrowed (Alloc_Vec_Vec_Type.t_vec usize (Alloc_Alloc_Global_Type.t_global)); goto BB32 } BB32 { - [#"../knapsack.rs" 77 12 81 13] _66 <- { _66 with current = ([#"../knapsack.rs" 77 12 81 13] _38) }; + [#"../knapsack.rs" 77 12 81 13] _66 <- { _66 with current = ([#"../knapsack.rs" 77 12 81 13] _38) ; }; [#"../knapsack.rs" 77 12 81 13] _38 <- any usize; assume { resolve3 _66 }; assume { resolve4 _68 }; diff --git a/creusot/tests/should_succeed/knapsack/why3session.xml b/creusot/tests/should_succeed/knapsack/why3session.xml index bd50be6250..001974b63d 100644 --- a/creusot/tests/should_succeed/knapsack/why3session.xml +++ b/creusot/tests/should_succeed/knapsack/why3session.xml @@ -13,7 +13,7 @@ - + @@ -29,11 +29,11 @@ - + - + @@ -43,14 +43,14 @@ - + - - + + - + @@ -63,14 +63,14 @@ - + - + @@ -83,7 +83,7 @@ - + @@ -93,7 +93,7 @@ - + @@ -105,18 +105,18 @@ - + - + - + - + @@ -126,7 +126,7 @@ - + @@ -145,14 +145,14 @@ - + - + - + @@ -165,10 +165,10 @@ - + - + @@ -177,49 +177,49 @@ - - + + - + - + - + - + - + - + - - + + - + - + - + - + @@ -229,7 +229,7 @@ - + @@ -254,32 +254,32 @@ - - + + - + - + - + - + - + @@ -292,16 +292,16 @@ - + - + - - + + @@ -313,8 +313,8 @@ - - + + diff --git a/creusot/tests/should_succeed/knapsack/why3shapes.gz b/creusot/tests/should_succeed/knapsack/why3shapes.gz index c3ca6f5b71b6fe9816add9ad3a5f2aa0bac1e430..518f1a88cfbe473d977f8462a1bd07da27d96425 100644 GIT binary patch literal 5098 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 literal 5089 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 - + - + - + @@ -72,312 +72,315 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + - + - + diff --git a/creusot/tests/should_succeed/knapsack_full/why3shapes.gz b/creusot/tests/should_succeed/knapsack_full/why3shapes.gz index 6b25542f0e5d8be8bbb85726521bbe9daf8101f5..e3fe9c20d32cf5515d13efcdce7aa8a29c9061d7 100644 GIT binary patch literal 8596 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 diff --git a/creusot/tests/should_succeed/lang/branch_borrow_2.mlcfg b/creusot/tests/should_succeed/lang/branch_borrow_2.mlcfg index 3836180856..1314a133cb 100644 --- a/creusot/tests/should_succeed/lang/branch_borrow_2.mlcfg +++ b/creusot/tests/should_succeed/lang/branch_borrow_2.mlcfg @@ -49,9 +49,9 @@ module BranchBorrow2_F goto BB5 } BB3 { - [#"../branch_borrow_2.rs" 23 12 23 18] z <- { z with current = ([#"../branch_borrow_2.rs" 23 12 23 18] [#"../branch_borrow_2.rs" 23 17 23 18] (8 : int32)) }; - [#"../branch_borrow_2.rs" 24 16 24 17] _12 <- Borrow.borrow_mut ( * z); - [#"../branch_borrow_2.rs" 24 16 24 17] z <- { z with current = ^ _12 }; + [#"../branch_borrow_2.rs" 23 12 23 18] z <- { z with current = ([#"../branch_borrow_2.rs" 23 12 23 18] [#"../branch_borrow_2.rs" 23 17 23 18] (8 : int32)) ; }; + [#"../branch_borrow_2.rs" 24 16 24 17] _12 <- Borrow.borrow_final ( * z) (Borrow.get_id z); + [#"../branch_borrow_2.rs" 24 16 24 17] z <- { z with current = ( ^ _12) ; }; [#"../branch_borrow_2.rs" 24 12 24 17] w <- ([#"../branch_borrow_2.rs" 24 12 24 17] _12); [#"../branch_borrow_2.rs" 24 12 24 17] _12 <- any borrowed int32; [#"../branch_borrow_2.rs" 22 13 25 9] _8 <- ([#"../branch_borrow_2.rs" 22 13 25 9] ()); @@ -60,7 +60,7 @@ module BranchBorrow2_F BB4 { assume { resolve0 z }; assume { resolve0 y }; - [#"../branch_borrow_2.rs" 15 12 15 18] x <- { x with current = ([#"../branch_borrow_2.rs" 15 12 15 18] [#"../branch_borrow_2.rs" 15 17 15 18] (6 : int32)) }; + [#"../branch_borrow_2.rs" 15 12 15 18] x <- { x with current = ([#"../branch_borrow_2.rs" 15 12 15 18] [#"../branch_borrow_2.rs" 15 17 15 18] (6 : int32)) ; }; [#"../branch_borrow_2.rs" 16 12 16 17] w <- ([#"../branch_borrow_2.rs" 16 16 16 17] x); [#"../branch_borrow_2.rs" 16 16 16 17] x <- any borrowed int32; [#"../branch_borrow_2.rs" 14 13 17 9] _8 <- ([#"../branch_borrow_2.rs" 14 13 17 9] ()); @@ -68,16 +68,16 @@ module BranchBorrow2_F } BB5 { assume { resolve0 z }; - [#"../branch_borrow_2.rs" 19 12 19 18] y <- { y with current = ([#"../branch_borrow_2.rs" 19 12 19 18] [#"../branch_borrow_2.rs" 19 17 19 18] (7 : int32)) }; - [#"../branch_borrow_2.rs" 20 16 20 17] _11 <- Borrow.borrow_mut ( * y); - [#"../branch_borrow_2.rs" 20 16 20 17] y <- { y with current = ^ _11 }; + [#"../branch_borrow_2.rs" 19 12 19 18] y <- { y with current = ([#"../branch_borrow_2.rs" 19 12 19 18] [#"../branch_borrow_2.rs" 19 17 19 18] (7 : int32)) ; }; + [#"../branch_borrow_2.rs" 20 16 20 17] _11 <- Borrow.borrow_final ( * y) (Borrow.get_id y); + [#"../branch_borrow_2.rs" 20 16 20 17] y <- { y with current = ( ^ _11) ; }; [#"../branch_borrow_2.rs" 20 12 20 17] w <- ([#"../branch_borrow_2.rs" 20 12 20 17] _11); [#"../branch_borrow_2.rs" 20 12 20 17] _11 <- any borrowed int32; [#"../branch_borrow_2.rs" 18 13 21 9] _8 <- ([#"../branch_borrow_2.rs" 18 13 21 9] ()); goto BB6 } BB6 { - [#"../branch_borrow_2.rs" 28 4 28 10] w <- { w with current = ([#"../branch_borrow_2.rs" 28 4 28 10] [#"../branch_borrow_2.rs" 28 9 28 10] (5 : int32)) }; + [#"../branch_borrow_2.rs" 28 4 28 10] w <- { w with current = ([#"../branch_borrow_2.rs" 28 4 28 10] [#"../branch_borrow_2.rs" 28 9 28 10] (5 : int32)) ; }; assume { resolve0 w }; assume { resolve0 z }; assume { resolve0 y }; @@ -159,10 +159,10 @@ module BranchBorrow2_G [#"../branch_borrow_2.rs" 36 16 36 37] a <- ([#"../branch_borrow_2.rs" 36 16 36 37] (([#"../branch_borrow_2.rs" 36 17 36 26] BranchBorrow2_MyInt_Type.C_MyInt ([#"../branch_borrow_2.rs" 36 23 36 25] [#"../branch_borrow_2.rs" 36 23 36 25] (10 : usize))), ([#"../branch_borrow_2.rs" 36 28 36 36] BranchBorrow2_MyInt_Type.C_MyInt ([#"../branch_borrow_2.rs" 36 34 36 35] [#"../branch_borrow_2.rs" 36 34 36 35] (5 : usize))))); [#"../branch_borrow_2.rs" 37 12 37 18] b <- Borrow.borrow_mut a; [#"../branch_borrow_2.rs" 37 12 37 18] a <- ^ b; - [#"../branch_borrow_2.rs" 39 12 39 20] c <- Borrow.borrow_mut (let (_, a) = * b in a); - [#"../branch_borrow_2.rs" 39 12 39 20] b <- { b with current = (let (x0, x1) = * b in (x0, ^ c)) }; - [#"../branch_borrow_2.rs" 40 12 40 20] d <- Borrow.borrow_mut (let (a, _) = * b in a); - [#"../branch_borrow_2.rs" 40 12 40 20] b <- { b with current = (let (x0, x1) = * b in ( ^ d, x1)) }; + [#"../branch_borrow_2.rs" 39 12 39 20] c <- Borrow.borrow_final (let (_, a) = * b in a) (Borrow.inherit_id (Borrow.get_id b) 2); + [#"../branch_borrow_2.rs" 39 12 39 20] b <- { b with current = (let (x0, x1) = * b in (x0, ^ c)) ; }; + [#"../branch_borrow_2.rs" 40 12 40 20] d <- Borrow.borrow_final (let (a, _) = * b in a) (Borrow.inherit_id (Borrow.get_id b) 1); + [#"../branch_borrow_2.rs" 40 12 40 20] b <- { b with current = (let (x0, x1) = * b in ( ^ d, x1)) ; }; assume { resolve0 c }; assume { resolve0 d }; assume { resolve1 b }; @@ -208,7 +208,7 @@ module BranchBorrow2_H } BB1 { assume { resolve0 y }; - [#"../branch_borrow_2.rs" 53 8 53 14] x <- { x with current = ([#"../branch_borrow_2.rs" 53 8 53 14] [#"../branch_borrow_2.rs" 53 13 53 14] (5 : int32)) }; + [#"../branch_borrow_2.rs" 53 8 53 14] x <- { x with current = ([#"../branch_borrow_2.rs" 53 8 53 14] [#"../branch_borrow_2.rs" 53 13 53 14] (5 : int32)) ; }; [#"../branch_borrow_2.rs" 54 8 54 13] w <- ([#"../branch_borrow_2.rs" 54 12 54 13] x); [#"../branch_borrow_2.rs" 54 12 54 13] x <- any borrowed int32; [#"../branch_borrow_2.rs" 52 12 55 5] _6 <- ([#"../branch_borrow_2.rs" 52 12 55 5] ()); @@ -216,9 +216,9 @@ module BranchBorrow2_H } BB2 { assume { resolve0 x }; - [#"../branch_borrow_2.rs" 56 8 56 14] y <- { y with current = ([#"../branch_borrow_2.rs" 56 8 56 14] [#"../branch_borrow_2.rs" 56 13 56 14] (6 : int32)) }; - [#"../branch_borrow_2.rs" 57 12 57 13] _9 <- Borrow.borrow_mut ( * y); - [#"../branch_borrow_2.rs" 57 12 57 13] y <- { y with current = ^ _9 }; + [#"../branch_borrow_2.rs" 56 8 56 14] y <- { y with current = ([#"../branch_borrow_2.rs" 56 8 56 14] [#"../branch_borrow_2.rs" 56 13 56 14] (6 : int32)) ; }; + [#"../branch_borrow_2.rs" 57 12 57 13] _9 <- Borrow.borrow_final ( * y) (Borrow.get_id y); + [#"../branch_borrow_2.rs" 57 12 57 13] y <- { y with current = ( ^ _9) ; }; [#"../branch_borrow_2.rs" 57 8 57 13] w <- ([#"../branch_borrow_2.rs" 57 8 57 13] _9); [#"../branch_borrow_2.rs" 57 8 57 13] _9 <- any borrowed int32; [#"../branch_borrow_2.rs" 55 11 60 5] _6 <- ([#"../branch_borrow_2.rs" 55 11 60 5] ()); diff --git a/creusot/tests/should_succeed/lang/move_path.mlcfg b/creusot/tests/should_succeed/lang/move_path.mlcfg index 3532e951e0..bebe98b778 100644 --- a/creusot/tests/should_succeed/lang/move_path.mlcfg +++ b/creusot/tests/should_succeed/lang/move_path.mlcfg @@ -26,7 +26,7 @@ module MovePath_F [#"../move_path.rs" 7 12 7 13] y <- any borrowed int32; [#"../move_path.rs" 8 12 8 13] z <- ([#"../move_path.rs" 8 12 8 13] d); [#"../move_path.rs" 8 12 8 13] d <- any borrowed int32; - [#"../move_path.rs" 10 12 10 18] z <- { z with current = ([#"../move_path.rs" 10 12 10 18] [#"../move_path.rs" 10 17 10 18] (2 : int32)) }; + [#"../move_path.rs" 10 12 10 18] z <- { z with current = ([#"../move_path.rs" 10 12 10 18] [#"../move_path.rs" 10 17 10 18] (2 : int32)) ; }; assume { resolve0 z }; [#"../move_path.rs" 3 11 15 1] _0 <- ([#"../move_path.rs" 3 11 15 1] ()); return _0 diff --git a/creusot/tests/should_succeed/lang/while_let.mlcfg b/creusot/tests/should_succeed/lang/while_let.mlcfg index 3a9c3032b5..ed500058c6 100644 --- a/creusot/tests/should_succeed/lang/while_let.mlcfg +++ b/creusot/tests/should_succeed/lang/while_let.mlcfg @@ -43,7 +43,7 @@ module WhileLet_F goto BB4 } BB4 { - [#"../while_let.rs" 10 8 10 17] b <- { b with current = ([#"../while_let.rs" 10 13 10 17] Core_Option_Option_Type.C_None) }; + [#"../while_let.rs" 10 8 10 17] b <- { b with current = ([#"../while_let.rs" 10 13 10 17] Core_Option_Option_Type.C_None) ; }; goto BB1 } BB5 { diff --git a/creusot/tests/should_succeed/lang/while_let/why3shapes.gz b/creusot/tests/should_succeed/lang/while_let/why3shapes.gz index 3f9ec8fa753b6b4a931c7c2d92022a30da053133..615bc29ba71a716b305fc2f36f3932cb2b6448c8 100644 GIT binary patch literal 150 zcmV;H0BQdpiwFP!00000|1FHo3c@fDgztHZJ!($*(X{Zq@p#g2A3HJ4E z(96txGcX$tWu$i~@CkECc{+jtzGb$Oz2EXHEOjA{`bsBC1L`KKK}-`pSN^$j=eoA2 zP`b8qlqgz4@&EBsIEEHto*^=3c4P)aO6U;w(jSzUG0?-9PWWE+9mtDdU$Q{(Nu2-y E0O6=Y`2YX_ literal 143 zcmV;A0C4{wiwFP!00000|1FEl3c@fDMfdrNS!!03SF3^x2?SjWvz2L0Xh9okg8h9h zbafBsaCZ{Qz@J#)8|O0S=>!ePz3`R& - + - + - + diff --git a/creusot/tests/should_succeed/list_index_mut/why3shapes.gz b/creusot/tests/should_succeed/list_index_mut/why3shapes.gz index 6dddbd1ae430eda62a47b4ca9f3c71e572d070da..87654b51d6897f982887244d874bfd7e1203b6e0 100644 GIT binary patch literal 729 zcmV;~0w(<*iwFP!00000|BY13YTPgs-TN!NOKT|TX-Ors2m@vYN;U;8V`N)yOg(n% znI!%EO0uNUIBn@hNcVB>>*#(c^7FI$q0jlNUe3cjea_3g_?TUOs$qIX5>);QB@9;} zQI!pQwNu~p1*k$|iNJb)a`)q-+F8+Mu7~L&$%DGL&rwg#+B|oy0Rh#6!EjRJm#BAY zUw@rX+K3^KzzJM5D561;7#!82&-3`IP0~0%fP^A_lt+^#6snn*Wq#A$-Rb)pupcHh zN=VhvnX__cTta4VPR4A=+G%Yrg_RW1wA>=nfC!v7Sk0(}BqEZC2s|ROhd0GHi2M4> zaK2bzQv~wZ%)+qBE2T8v%=rQ-LKI1G5{0p=OLmRGQ==p?%WejrMF;a;g6>a7=eIw80 zKJVuxAEr+Ks!uPM?Aji~xzJ#9brTh#2hh$_ggyX2O_8nwkZ8kCmnb4eq~j$ih$df~ z+oX9~n%w*oYrtee#X=JMKYa{)cWFa#lQ)d15uZ4`Sz;tnCrhl1xCvUa!^)UL)K>{@ zU_`ZP)6K|;ugoo%bzu;R!=K0Dqx-#rZCj1n@VxMK8?;r%Y>9lAX!HDs~gf>`HBy`y~IXU11I=}!0a*=O7Wy^0pOwUx2+KZqd zh(ysk8+LlDzng{Vjbe(DRep5x;X!Y$YMGD2v?zYB@9cFnlk>*wwnY$9-y??8Vq9Y0 z>fQ0%d@`tpG6E-X(P0xEHi^SQpUq_+pA8nx;)N)v(u+7?l~CzsKA-0o(|tJoTod-g zq(=os?Ho!4(n>a$w1?M=+rT0OlGUM5z(XLnhu5=LfxF|^;j-9xEQxvuS$n-w7${vB zQI$ul^oXXTeY33N7#?vnlR2wGG2vU1XxvE9fWscg`Q><;J2Qe3b~LD7dmsG$fS7Oz zL;sm#GWObDR!kY%&I$)6;~>MJnM?*9a@?dmBuro_LX!WQ=;p=myz0u$H({H9gxw|1 zH_y;ds2BXhYPBO_*w}T#sfp{)>Ah?LUq4L8W`3Hw%Nt{4Bvp($RBSEO35DsJjNb5# zfhP-fyuiC+#5081!o8kWik2w3KTON(=fR7j(iMjvoyvRnYb9DA=E=BFsi;^((ZO}~ zQBmsSGqub6`J4|^XZ{>dPfK>~I+8Wa4Mj(kDzp|XO{&md;z?4a%YY=-Yq=3IA{~~b zPet;%OIv=Kc1&IWmbFQhkb9#z{;vRUWmhqfS0zKNiu;=3)du5hC(UY9-*`DrUPcmp*L!mO#=%#NQ z(c(7lB`;}N7QN|MF7`!M5K>7|00SYQ10W5TB{Q^_jqV#k@^UY;zZ$!XGyn$x0IzCc AWB>pF diff --git a/creusot/tests/should_succeed/list_reversal_lasso.mlcfg b/creusot/tests/should_succeed/list_reversal_lasso.mlcfg index 7b2aad2834..b28584ceec 100644 --- a/creusot/tests/should_succeed/list_reversal_lasso.mlcfg +++ b/creusot/tests/should_succeed/list_reversal_lasso.mlcfg @@ -341,19 +341,19 @@ module ListReversalLasso_Impl2_IndexMut goto BB0 } BB0 { - [#"../list_reversal_lasso.rs" 42 13 42 19] _11 <- Borrow.borrow_mut (ListReversalLasso_Memory_Type.memory_0 ( * self)); - [#"../list_reversal_lasso.rs" 42 13 42 19] self <- { self with current = (let ListReversalLasso_Memory_Type.C_Memory x0 = * self in ListReversalLasso_Memory_Type.C_Memory ( ^ _11)) }; + [#"../list_reversal_lasso.rs" 42 13 42 19] _11 <- Borrow.borrow_final (ListReversalLasso_Memory_Type.memory_0 ( * self)) (Borrow.inherit_id (Borrow.get_id self) 1); + [#"../list_reversal_lasso.rs" 42 13 42 19] self <- { self with current = (let ListReversalLasso_Memory_Type.C_Memory x0 = * self in ListReversalLasso_Memory_Type.C_Memory ( ^ _11)) ; }; [#"../list_reversal_lasso.rs" 42 13 42 22] _10 <- ([#"../list_reversal_lasso.rs" 42 13 42 22] index_mut0 _11 ([#"../list_reversal_lasso.rs" 42 20 42 21] i)); _11 <- any borrowed (Alloc_Vec_Vec_Type.t_vec usize (Alloc_Alloc_Global_Type.t_global)); goto BB1 } BB1 { - [#"../list_reversal_lasso.rs" 42 8 42 22] _9 <- Borrow.borrow_mut ( * _10); - [#"../list_reversal_lasso.rs" 42 8 42 22] _10 <- { _10 with current = ^ _9 }; - [#"../list_reversal_lasso.rs" 42 8 42 22] _3 <- Borrow.borrow_mut ( * _9); - [#"../list_reversal_lasso.rs" 42 8 42 22] _9 <- { _9 with current = ^ _3 }; - [#"../list_reversal_lasso.rs" 42 8 42 22] _0 <- Borrow.borrow_mut ( * _3); - [#"../list_reversal_lasso.rs" 42 8 42 22] _3 <- { _3 with current = ^ _0 }; + [#"../list_reversal_lasso.rs" 42 8 42 22] _9 <- Borrow.borrow_final ( * _10) (Borrow.get_id _10); + [#"../list_reversal_lasso.rs" 42 8 42 22] _10 <- { _10 with current = ( ^ _9) ; }; + [#"../list_reversal_lasso.rs" 42 8 42 22] _3 <- Borrow.borrow_final ( * _9) (Borrow.get_id _9); + [#"../list_reversal_lasso.rs" 42 8 42 22] _9 <- { _9 with current = ( ^ _3) ; }; + [#"../list_reversal_lasso.rs" 42 8 42 22] _0 <- Borrow.borrow_final ( * _3) (Borrow.get_id _3); + [#"../list_reversal_lasso.rs" 42 8 42 22] _3 <- { _3 with current = ( ^ _0) ; }; assume { resolve0 _10 }; assume { resolve0 _9 }; assume { resolve0 _3 }; @@ -492,13 +492,13 @@ module ListReversalLasso_Impl4_ListReversalSafe BB4 { [#"../list_reversal_lasso.rs" 73 12 73 23] l <- ([#"../list_reversal_lasso.rs" 73 16 73 23] _16); [#"../list_reversal_lasso.rs" 74 12 74 16] _21 <- Borrow.borrow_mut ( * self); - [#"../list_reversal_lasso.rs" 74 12 74 16] self <- { self with current = ^ _21 }; + [#"../list_reversal_lasso.rs" 74 12 74 16] self <- { self with current = ( ^ _21) ; }; [#"../list_reversal_lasso.rs" 74 12 74 21] _20 <- ([#"../list_reversal_lasso.rs" 74 12 74 21] index_mut0 _21 ([#"../list_reversal_lasso.rs" 74 17 74 20] tmp)); _21 <- any borrowed (ListReversalLasso_Memory_Type.t_memory); goto BB5 } BB5 { - [#"../list_reversal_lasso.rs" 74 12 74 25] _20 <- { _20 with current = ([#"../list_reversal_lasso.rs" 74 24 74 25] r) }; + [#"../list_reversal_lasso.rs" 74 12 74 25] _20 <- { _20 with current = ([#"../list_reversal_lasso.rs" 74 24 74 25] r) ; }; assume { resolve1 _20 }; [#"../list_reversal_lasso.rs" 75 12 75 19] r <- ([#"../list_reversal_lasso.rs" 75 16 75 19] tmp); goto BB1 @@ -689,20 +689,20 @@ module ListReversalLasso_Impl4_ListReversalList } BB4 { [#"../list_reversal_lasso.rs" 108 39 108 43] _21 <- Borrow.borrow_mut ( * self); - [#"../list_reversal_lasso.rs" 108 39 108 43] self <- { self with current = ^ _21 }; + [#"../list_reversal_lasso.rs" 108 39 108 43] self <- { self with current = ( ^ _21) ; }; [#"../list_reversal_lasso.rs" 108 39 108 46] _20 <- ([#"../list_reversal_lasso.rs" 108 39 108 46] index_mut0 _21 ([#"../list_reversal_lasso.rs" 108 44 108 45] l)); _21 <- any borrowed (ListReversalLasso_Memory_Type.t_memory); goto BB5 } BB5 { - [#"../list_reversal_lasso.rs" 108 34 108 46] _19 <- Borrow.borrow_mut ( * _20); - [#"../list_reversal_lasso.rs" 108 34 108 46] _20 <- { _20 with current = ^ _19 }; - [#"../list_reversal_lasso.rs" 108 34 108 46] _18 <- Borrow.borrow_mut ( * _19); - [#"../list_reversal_lasso.rs" 108 34 108 46] _19 <- { _19 with current = ^ _18 }; + [#"../list_reversal_lasso.rs" 108 34 108 46] _19 <- Borrow.borrow_final ( * _20) (Borrow.get_id _20); + [#"../list_reversal_lasso.rs" 108 34 108 46] _20 <- { _20 with current = ( ^ _19) ; }; + [#"../list_reversal_lasso.rs" 108 34 108 46] _18 <- Borrow.borrow_final ( * _19) (Borrow.get_id _19); + [#"../list_reversal_lasso.rs" 108 34 108 46] _19 <- { _19 with current = ( ^ _18) ; }; [#"../list_reversal_lasso.rs" 108 66 108 72] _25 <- Borrow.borrow_mut r; [#"../list_reversal_lasso.rs" 108 66 108 72] r <- ^ _25; - [#"../list_reversal_lasso.rs" 108 66 108 72] _24 <- Borrow.borrow_mut ( * _25); - [#"../list_reversal_lasso.rs" 108 66 108 72] _25 <- { _25 with current = ^ _24 }; + [#"../list_reversal_lasso.rs" 108 66 108 72] _24 <- Borrow.borrow_final ( * _25) (Borrow.get_id _25); + [#"../list_reversal_lasso.rs" 108 66 108 72] _25 <- { _25 with current = ( ^ _24) ; }; [#"../list_reversal_lasso.rs" 108 48 108 76] _23 <- ([#"../list_reversal_lasso.rs" 108 48 108 76] replace0 _24 ([#"../list_reversal_lasso.rs" 108 74 108 75] l)); _24 <- any borrowed usize; goto BB6 @@ -924,20 +924,20 @@ module ListReversalLasso_Impl4_ListReversalLoop BB4 { assert { [@expl:assertion] [#"../list_reversal_lasso.rs" 138 12 138 77] Ghost.inner n = Seq.length (Ghost.inner s) -> l = Seq.get (Reverse.reverse (Ghost.inner s)) (Seq.length (Ghost.inner s) - 1) }; [#"../list_reversal_lasso.rs" 139 39 139 43] _25 <- Borrow.borrow_mut ( * self); - [#"../list_reversal_lasso.rs" 139 39 139 43] self <- { self with current = ^ _25 }; + [#"../list_reversal_lasso.rs" 139 39 139 43] self <- { self with current = ( ^ _25) ; }; [#"../list_reversal_lasso.rs" 139 39 139 46] _24 <- ([#"../list_reversal_lasso.rs" 139 39 139 46] index_mut0 _25 ([#"../list_reversal_lasso.rs" 139 44 139 45] l)); _25 <- any borrowed (ListReversalLasso_Memory_Type.t_memory); goto BB5 } BB5 { - [#"../list_reversal_lasso.rs" 139 34 139 46] _23 <- Borrow.borrow_mut ( * _24); - [#"../list_reversal_lasso.rs" 139 34 139 46] _24 <- { _24 with current = ^ _23 }; - [#"../list_reversal_lasso.rs" 139 34 139 46] _22 <- Borrow.borrow_mut ( * _23); - [#"../list_reversal_lasso.rs" 139 34 139 46] _23 <- { _23 with current = ^ _22 }; + [#"../list_reversal_lasso.rs" 139 34 139 46] _23 <- Borrow.borrow_final ( * _24) (Borrow.get_id _24); + [#"../list_reversal_lasso.rs" 139 34 139 46] _24 <- { _24 with current = ( ^ _23) ; }; + [#"../list_reversal_lasso.rs" 139 34 139 46] _22 <- Borrow.borrow_final ( * _23) (Borrow.get_id _23); + [#"../list_reversal_lasso.rs" 139 34 139 46] _23 <- { _23 with current = ( ^ _22) ; }; [#"../list_reversal_lasso.rs" 139 66 139 72] _29 <- Borrow.borrow_mut r; [#"../list_reversal_lasso.rs" 139 66 139 72] r <- ^ _29; - [#"../list_reversal_lasso.rs" 139 66 139 72] _28 <- Borrow.borrow_mut ( * _29); - [#"../list_reversal_lasso.rs" 139 66 139 72] _29 <- { _29 with current = ^ _28 }; + [#"../list_reversal_lasso.rs" 139 66 139 72] _28 <- Borrow.borrow_final ( * _29) (Borrow.get_id _29); + [#"../list_reversal_lasso.rs" 139 66 139 72] _29 <- { _29 with current = ( ^ _28) ; }; [#"../list_reversal_lasso.rs" 139 48 139 76] _27 <- ([#"../list_reversal_lasso.rs" 139 48 139 76] replace0 _28 ([#"../list_reversal_lasso.rs" 139 74 139 75] l)); _28 <- any borrowed usize; goto BB6 @@ -1172,20 +1172,20 @@ module ListReversalLasso_Impl4_ListReversalLasso } BB4 { [#"../list_reversal_lasso.rs" 191 39 191 43] _23 <- Borrow.borrow_mut ( * self); - [#"../list_reversal_lasso.rs" 191 39 191 43] self <- { self with current = ^ _23 }; + [#"../list_reversal_lasso.rs" 191 39 191 43] self <- { self with current = ( ^ _23) ; }; [#"../list_reversal_lasso.rs" 191 39 191 46] _22 <- ([#"../list_reversal_lasso.rs" 191 39 191 46] index_mut0 _23 ([#"../list_reversal_lasso.rs" 191 44 191 45] l)); _23 <- any borrowed (ListReversalLasso_Memory_Type.t_memory); goto BB5 } BB5 { - [#"../list_reversal_lasso.rs" 191 34 191 46] _21 <- Borrow.borrow_mut ( * _22); - [#"../list_reversal_lasso.rs" 191 34 191 46] _22 <- { _22 with current = ^ _21 }; - [#"../list_reversal_lasso.rs" 191 34 191 46] _20 <- Borrow.borrow_mut ( * _21); - [#"../list_reversal_lasso.rs" 191 34 191 46] _21 <- { _21 with current = ^ _20 }; + [#"../list_reversal_lasso.rs" 191 34 191 46] _21 <- Borrow.borrow_final ( * _22) (Borrow.get_id _22); + [#"../list_reversal_lasso.rs" 191 34 191 46] _22 <- { _22 with current = ( ^ _21) ; }; + [#"../list_reversal_lasso.rs" 191 34 191 46] _20 <- Borrow.borrow_final ( * _21) (Borrow.get_id _21); + [#"../list_reversal_lasso.rs" 191 34 191 46] _21 <- { _21 with current = ( ^ _20) ; }; [#"../list_reversal_lasso.rs" 191 66 191 72] _27 <- Borrow.borrow_mut r; [#"../list_reversal_lasso.rs" 191 66 191 72] r <- ^ _27; - [#"../list_reversal_lasso.rs" 191 66 191 72] _26 <- Borrow.borrow_mut ( * _27); - [#"../list_reversal_lasso.rs" 191 66 191 72] _27 <- { _27 with current = ^ _26 }; + [#"../list_reversal_lasso.rs" 191 66 191 72] _26 <- Borrow.borrow_final ( * _27) (Borrow.get_id _27); + [#"../list_reversal_lasso.rs" 191 66 191 72] _27 <- { _27 with current = ( ^ _26) ; }; [#"../list_reversal_lasso.rs" 191 48 191 76] _25 <- ([#"../list_reversal_lasso.rs" 191 48 191 76] replace0 _26 ([#"../list_reversal_lasso.rs" 191 74 191 75] l)); _26 <- any borrowed usize; goto BB6 diff --git a/creusot/tests/should_succeed/list_reversal_lasso/why3session.xml b/creusot/tests/should_succeed/list_reversal_lasso/why3session.xml index 625f6663ce..2bc488ef5d 100644 --- a/creusot/tests/should_succeed/list_reversal_lasso/why3session.xml +++ b/creusot/tests/should_succeed/list_reversal_lasso/why3session.xml @@ -4,7 +4,6 @@ - @@ -16,46 +15,46 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -64,16 +63,16 @@ - + - + - + - + @@ -82,7 +81,7 @@ - + @@ -91,19 +90,19 @@ - + - + - + - + - + @@ -116,7 +115,7 @@ - + @@ -125,10 +124,10 @@ - + - + @@ -141,7 +140,7 @@ - + @@ -150,7 +149,7 @@ - + @@ -165,55 +164,55 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -222,10 +221,10 @@ - + - + @@ -234,34 +233,34 @@ - + - + - + - + - + - + - + - + @@ -272,31 +271,31 @@ - + - + - + - + - + @@ -305,29 +304,29 @@ - + - + - + - + - + - + - + @@ -336,10 +335,10 @@ - + - + @@ -348,38 +347,38 @@ - + - + - + - + - + - + - + - + - + - + @@ -388,31 +387,48 @@ - + + + + + + + + + + + + + + + + + + - + - + - + - + @@ -423,16 +439,16 @@ - + - + - + - + @@ -447,7 +463,7 @@ - + @@ -456,10 +472,10 @@ - + - + @@ -468,10 +484,10 @@ - + - + @@ -482,7 +498,7 @@ - + @@ -491,10 +507,10 @@ - + - + @@ -507,14 +523,14 @@ - + - + @@ -525,16 +541,16 @@ - + - + - + - + @@ -619,12 +635,12 @@ - + - + diff --git a/creusot/tests/should_succeed/list_reversal_lasso/why3shapes.gz b/creusot/tests/should_succeed/list_reversal_lasso/why3shapes.gz index 19c2ba163ddf1fbc28b64c94a633f46651c1607d..f26b6314f37714684fe2919342bd10edd73e815b 100644 GIT binary patch literal 12890 zcmV-gGNsKQiwFP!00000|LuL*j~qAB=X?JZdh@Og1H6xgy+Ff&Pz`uz9`-{$xbkhAKt$C zUoXsy@Bin``+tXrH-D%tdwCOn`Z>JHZ~pQAp8-W*y?XoS{p+_)e#N&uynlQD@aBDZ z9sZl$)(W#Ccl20p`O6NZ+=~9I*vkGZ->UvA+iJA=^Og(zYVv>Izk2(Rhs3sSYwzmg zE$1)mH$Z3YH@5XJ?^=-lHUQ82Kfc5r8^~xH9%AYMA<=9^iNk5Vjy~<=3=!M(UxBso)`)pEAR8G$3Op>-_1t^N-Y39 zIEHGAzg3*pOA*}fiGs;s^M?i-DzyW9kD0yb)plE^8seXMxi7s`)o)$TUdYB9ko-U# z?ip%e(pTvHPR@{`H6VgTgwX8J7k-Umomirx_V(#_&47zJGYU|1$#* zH2gX@RdDreaFZ;Fzqg8#p0mXg{_m~4*AlJlS6#Uqimny)G0V5ZaImfDw-RX~<}G*k zhdoy`x+Vj@KCG(At#-nQoTKTxab^~tj~Vk2{Ra9m3!h&DPxslR$At@=7#ILLvO+d zNS{&P;ok#=2zmNP(vO~^_AeeSi=tUDGnS;xu85)8I(qHe*PwVA?%aIIt)hx*1+Ls` zdaZY|trrQM59}%66@-St|LWoK{r$U49#VL9{}@UhoS8GVfLzuBVy6Yf&OhQi|A>)) z6bKJs79R7f5?k%);R@)5itj?p$UFh?JTR0>R;)oyqTIE<%5{-8YAK^ZVP!_v!7M z=HWfUhb0_d@l#nmultUFGX5By%N@VZ_q9?te_Mw@z`qaouvOppUGQ`LGI3dJk+Jmj z@^Uj#O|{@Fe)IdgJYwmpksSNwUESq^V_&CYbF**8dHWPPeDC4+?Zdm41?0rd(IqFT zV*^{LP1KM*VaG8A3kL(?>xd5`cRa>xfbXE&JEz&hxjuG z=X!7e+!vh-CE=+rAeZl2CJbVvTF5=hLhU%9TMp!6aeCn`C&Bn)mO3~o^v+{>E@ z6A$pa?Y9RSz*9}og=;&4r|*~DPWm-77p<)sH9`T)PrHo3sP_l(h;(L*S%kEY{SRA@ zf*tB;VXEj7KdEKn^0*bwCg}gIOX%GmhekzE|4 zkbQ7E0a@(={grm|{B{aa>ItOPian>7-=$qm3R$Jy$~I9T%~-W>xlC=^KG`K0g^R>me9_80K_XGPJny|$Wu0> z1H^d`sAfqdo91czbe*V42GP<95MoHuiQX&2+b&P*=%22rB`Do@bgJ&sD?+!q(Vr=U zJ!w<+ZL&5G+!m8tA%-@^&?f8J6g5HIrIDu)*f%&yEO8iEu#FK zoZ6!HVXFku12aq1zCV;WlYT#Orq>E8wx2lDUE<6x;K})r^Pb~dC1N4>$d6>kYY+8P zI74Q2!E=ANzDosa8Vs(RZ-&^~+vA7$nE(ADze#x{BvTAqH*-qQkAXyC z1{zqC)_z1h+GoEmi_g}q;6u}c3;5u1b*jw-PHQ4)1;D3C+|QI$oi=;4*5aVJKc%(B zkvKzPF}`~$3gsg(`Q$|S;Q>XR_;6uCP3-aj2eqHw`X~m>u79$1&!^m zqp|&UH1_T1@Ll(3b}ue3zKY9diDJj``EFg=1?A_`6eM;9GkJMUsMiu(dO5MB+r*Y$ z76|?FDWr%`NldMzi0|3$a&qlcQ^a*b=^BFj6c~P`oII@%_{a?WcyYmH^6dv-z2YnB z>ZO3_i2bHCGtqpOp|(}kmYaZQz8T41LSFC5jQg`;Yr z_Gsa#T4-^%aCEmKuUj@LcgrTbHG68lY*G%(CRNxKB|xGDI)D>9aI#whI0q*Na5D5o zzx-GxLi|S$=UV%=s>sv>w?H3!8-)7B<@++iunI07$feh94t9YHwjPG-$uDxm~4u50$#Muvzl` zg|^2Q>xi2(Wp+*WKW+}T!ur^0*b~R{QSgWPHFAK~UiXUqX4#=zS%~~@jWThPTY1JJ z@KuLpx(IyDVOdxNu1AZ&-Qpr}T^E7>e4LWSKrGE85x|;PUS;nB%swlyr0=`1{@`No z8Mx&TvQ5Y=gpkzo0tNgyR(&RLib1y^d`{>7!tiy_-Ky}_0((osXU!}=oh%Vw1?`UE zc4Tq*oEK}|Q5TCZ^hYIpsY4E|9iO*)cbtW{pJf=#7mHuXyZVextxCX0N8aMJ$oo0a zcz4XS9o)LG=AE9hi{T@{+=T-hh%UdUVb|Pw`yIyQY;9WI`fv{X3D6l0Q^8w6VyEZJU&2oHZrg1L)3)ozh-to%sQzIA?oUVGr@uCZ{Iw}$ZBxh%<@+Ar&KHRf z3P(&fGkl+>+GHA$is}A_)n(*MyBlU_IPjIc4POI#I|usup&787Xiz=}Ozy#)ru7B& zd<6eXk+{{@ByfN}!{opw0sia51QjuJ&lZsj)7^oho-wk%<$QIw6UAst8!GwUGV3W7)3ZrT-IQ%I^_$aMa8z zukQnzmZeiNN82)|uSfecN4+xZfKxW?%w=z-mv(zPj*vgvqcLN_bP`Q`C8(@ytOY7{ zXYFxR(3b~LIkB@>W_HBZt_e|lezv(i1^(WW@RdS#eSQheEkD*33$xX?;{};34d|0l zoy|2J?mWBNdG@ryUS>x#diO0Shh*>k6>dHXb9`s9xI;-STS zm|ZKxYL(~KUQ%=39(0TAB{@$Ex8WUpsH*Y$2yGD-ewvngqwvp%U zwvlTEr@L+BLimlR`-@?^{VIod+sM&w8?jJ(wA)53v^d&rGg|6hcSG>q9*S=L_jI*H z*qwe~p$|pd!@j>Cj%u#wx9`C5ZaMiJ92>y#&=+0aVKVayE@OP$6$ba%__$SUzG>sL z*kga$pR?@GY){n%MYQdok%#-23Hn$Q)NM_(y&g0za|bq$)Q}=c*7aaC>uDm|v z3IEn=&jZfzP-4L~_X{A~%}Z@H+Ml%Go%`{IOw(QV)BhN4oV2?QnQYjQIqX$sp}+p8 z1;o0Gj`|-XKw^JGCg0sO)9-{{ziGx#HyED1;8>io)o(Rgnr`)5+;Ts$Ay3n>u2S=e^=xnE*+*Y!P_1^%4WEb^=;&8p*cwzEKKqK?O1l2+q*J3`XxZULp4bGwn^UOF;FcK1f^ z)at`2w-@xg%Ga+i*p25CVSQ@-Q!Wo!MElsKg?x7S|5BkXh5tW|?lbFOOzt++(*sY$ z8n}tw`(aD>Y`0dAnpqI6QxTZ01>t5!OFhoS)N9vH0a{BuchpfQuc6HoOb8((SUJ5^5<}`af-+IY^A-V!a_ddlmP0> zZ)u!SBvwf}bVk%7BsETI^Agf@q|w#nu{eC%<>H3_NzO~`(g<^z_$Xy?0N^Pe z_5M{4W5sm<@cgL96@~0)`gnf0@VOc|)r9vaQJ&v}w_kji zA5!{f&M=;Iiph$HDbAVXI}NWTKAhgf>A~a?MRM1N+4f5prag_GwIi zSQ#LQ0xjg?b|uWX6V6PMKu+{@<^pK7blLE@nGIs?$51CPb}HnkJ%(HTe_v`}Yt z%~=@&v37>?wQbk}9tUmNdHs1Hqwoav{V4&%#n-D$ZRS*SueGt9ra|$QY|J^Qwew|z zwt80kk>uC18s(iD?NeWKMah>H=Aw^qe9h`{^kz=;F6_yV&y2e%dg`-W76&H9Oajo>N%Lf{G|Dt)eNS%J)Xh*gqfDL4Cap9Z*Wdz zm*2e3cvxIHb*YVre?c`d?zJhdu&HPE?+LvH|rAOGmDc^yCM(72n?jJ8{6bSQjRnKf;Z zzwGa#DG&wfq5c+%y(1=-XfI3cxz8;lSl!eqpa*xqNrQ=z^6TE9WA}Owqo4K!PM(okkh?CO zLOY^WcJ+r^EA&z8eW6aN;5&PHv!|fzKG_kiRY_CvyM9d5BRhOs+l|*L?y80NHsFn3 z*q1Nw_Qy0qbp5VFH?Kh#fA2QLzs|4kA0F@j%&%VELsDPohSeZ$lBla!F1!kl@BdDN z5r11pavZ+aBIV&7-aXbLJOA&oCZopHsuR+`Z82+)Dw?u9Jfh&}ti=kX?bYrC!tOBi z3Ne1Sw^;shGLip?S8b8;LsIMUySuS|?{OmizISil~6?=q$}};&c@I9UG3}f z$%1d*rj94!he1jSyPw0}%l<|EHGNCiRb&rhI=JDJ^#X!-pEvy6eHF=t=ODeW|Ybd%3q6NrED=ukY zsL-uh(!OwXwmR{83S?CVdS64eUwy<;1PGKWUR3C zps*^x$7%_FhJbBchV02{5`*RyqJ_M3pm^_i2)1WP;F1V6G9*GmKMQr-kO)b@^yC?t zZ@n`lQ)ovF$*%rTYsHXI>wTflkl_1-G;;U$?MC(2c3xrY3xaoU)#bZg_3Wm0qxy2> zU@rJ>PL2Gyggrk6gTdg98+1$L)V_B3c6$_TE#VH7a4(lz zZtwZnf7G56A~?R?j-##xxLt`QOW2o~pZ&4Ibs?6xE=13DAy&A4dxCU`D&<3nv4m)Q zpvOmu?26MiA|rj5mY8_+@XG^Dh3Cf)uX-=+c6b1*{YwSC2eyCLDbVf`uXzD-X?k_p zJ|f8BEp;abu3&fjT{{k_socKvw2K+>X6$p(i?@5Uj(xX7-c6_ayI^VH0bx8gB7m|N zU$#vS92yr)Y(H9@+lfW*_fQAyyV;-89YRdHqlZ>aE~A)#561AAg7iMcDfC?x88Wm3 zwzZ5n8JZhGYqJKHEL!y@{3LN9cIK@sx_bpqk248&Bo;MrCz)uAjcu@4mI;#9J%MN` zoC*WghazUN>x#)<iM~y+ORIp6gC7C|Ol=vx9FY$gk+XwP$Tf_*6BmymMD}2(~ZG{Dqn4=>XC8NisXH zVf#Ft1mBexJGYh@Ut7 zhNY9!aoD!MG`NHu2G@Lq3ON>pBYbK5g%F)lI~sdCb*XA*()FdMimrX_$>-jc7_~oQ zURSoJfyX1eeGIi|b|agL?2l~H%rvs0pDT)Y%OhLuP_N2@WOpCs{xNxQ!(^7Zd;e>7 z?5evt#k{LR>wK;|ys3Mz9U{8}2sTZn(KIi5nKYZ%Qtv zkx{1DNUynu8irC8FNEF*wGluIb@{Y$7#hW@1U^f_T?)lp6&y>-kT1S6V? zi4_~mH)My_MnBi5pH7$3u(j9PQ9i^TxUh4Dr+pM1&MLfk4o z^0T63bu`?2>$C`*aaXc$6og2EOWbky!pV(;{@@$OHr8*f+gQ7?W@CY>`h0jctjH3S zmq09OVN7UL;w}i6l*ri=o}95Kfosa%@WLgynzP`s2q+TC8!#ASQ@S2kFE{=PpetnY zKobg{#gufTxNV?ABSh3UB2;v}e=67}I2_JPuu}LKBWqm9E(<4&lFD&LR>`ZgvGx2^ zY&|=Kt@9h_HqLIG**Lv%>V_LcZYJw2b&;^{#w$@`iOD+anQ#?h^Mnw#@DLJgCH#fN zvMk)W%(cs~$4qij?Y_592;pRGYy{LmaShkW2P;_?DM*`=5h7QF-BUuCTj_a*hrv7x zS?S2(9El9aK)cd(%8Wl5g{B%0mnD0+r7FWXK#n<6x`|E0mA1_bPL)x1QjcM*qO>Yr z1>dA1Op{H>%m$?ei-tTgSmv%>fW$}6jJWneAwY^Q6zes*mDy}vG%7h4TxfxyC^N@_ zX^cgt75rM6oc5&Tq=Y|fvgJ8|^8^f@GiRv8+;M;cp0uMGP5XsAAyT3r?k}IF;vS&jsb=#giLPemorcp<7oP zOBg6t1_!4|E92m4vr-xuDklTwn!G6&m`tW3paADw|ZOARQ~rEN!jIz0iA3WWrk!Ig{!-W)|>l1Wu` zN_npxk}5&pDYgPg3^5LPC$&3Q9|iDYfL{;iCqnulg3xsw@iu}i`1@_s@)}LM)Cg-c zv_Mp_y+t~e!CdE>5P*ZOnt%&?jkY6`fhBFdV;EmPnG%9W6bwfd;uL+`w!8|$^`vc-X4wJ*Gg zXj;JU2payg$sP)uGAof8JMiHu<3J>Y_StB}7=cp{Fs>k!GGq}b!O^vCu1SAUFu$=# z3ymrir@#UBPfDl)c#MtfaM0JpK{g4JsGRXWk-~=-uo(dsz~^R=MJ2A$b^xnGBBw2( z?+yI>4F3e9QDzA~@UCsZR2T~qJdp01yl4 z-*1#dsqTWpJLOI?d$EyGL?@YuB?Z`6ArOfLmvl)ws6;6YuIYp7a5%XZpVXeQ3|uX| zK^Wz|3yBF85QZ4gi8wpg_AIKy8RqbYIox4{viMMS@EM*khbxTg_@JCYIrz(56F*Q6 z4l;*_yoxX3dIFx@l_afKIRQ$6d+M}FQ7I-VlFq72dOZnLgMhmW^x%e-&}77;u-%3n z&DcP#R+c(cr6>g92X}lQX9Oc0(FnH$5g-wea7*2QI#!NoTBB!2LoXC3_*)1jv<=Cm z0vBGfVpwSkd;++YNqF93{S+}bLD|TZDQJe5COQNd5DIODQQ4MUqdkwRp8f(10#A;R zk~;zdC>ZD*BmHSnm9#?W#4;>_haaRFJQK&D5hB-7vqDq}PSw~~NS#hBYcG|S$_E~U zLzF9;;-Gd4;?9;j#yjf#rV@4q0?A5vJok9+@tmeyu0k-&f`e$dG@A2_px(HExSP`W z2rqPM2^QZD!6HTYh$%T0;YbNM&XYbdWtQ<^4lTUNJ^SIh;(M0B4S&3;x@uS z(S(t230B_@!P11J;ah2MgclCtt(y#INHqfSf-iYfvUDKl^CoqOmUgL zw5}16wFG}dN(zjHw9*2)T}E_e~MaMK%F(cFCrgh9%E5MZdxE#x{B&+J93-r-&F| zCb(9a+uR_U(=H;?%Lue=!$X&LXWtaji0cI0VorX&KvbJ-$TZ8~EYL9RL@!(wn#~au zAAfbOrD>EctT9c=2>6YQ#W>wCRZ3RO+oqrVsRWv@lt{$D#?a~{8Musw2?MzmGD(gY zjVb#=)U_P58Kdax^p0^U2pt?)Ba~r~cr9{trJYVeg?^^W&A98}%tWPO`WRdthTu6d z%R#NTIk`H)BWQ*T^$r3ON`{6x#i3ymk6H$113p3`6ljEM0nrC8Q-vaq01PQNIap&Q zJWr8}Z=5qG3gT4oO$!j!Xl)WLPC5qAfSjhl^ts%qP&_X>m*l;p*)pdiO#>jr#0S;U zo5Jj;m&E?0-weL;vV_QURK+F7&~H!zfklZ{@X@so1;piJ8(>@%7enwE=(My0aicE{ zIxGeQFUGVDC;(FEEJ>^&XrM}hJ(6b8XaN_%qdh?l%JUGAG@B+GV;hSv7Fh7Qm>@Cd zJfeUO0a~x7Y6efxtO^avD}PfxtNihLOo7 z@LfayCMPq5FlZZ`=!T`fUKbSR1?dJvqX69)MXOw+WlF(lLj86Ku*)H^FxjYBlX!re zg@6j`$jOwY)(X0*1js~(!v%HI!bFcKstG)m6f;>;fJsj0nBYIi5PCl7tMVanNWWDQ zmPO@4MbpdBqPs~VS<&3Hp=W<3u<#7ygxqjx$mitu>~9WL^7;KF@uxqr}x^<*sQM1QyN#1!;BCL%G>;zRhM9Q$x1}3 z-Q>@gL@~jScUE}bh~VMKm4?F$g{^1Wq+~3iC>bqZ2OLietL;9ni2H=6zrck;6NDmw zh7amE-_f#${|@I99Wz@Bynkm{V;N=LIehjec-SEW1D#uJ`4hsJ)eQ?SspM?r6xzW; zN_e$8bDw>U>fl%aV~-D@GK-JFhbY0ALkuM;zy2hs0i*_^VWYy>cFJkPXn#uK*?0ku zq*4RJBZc^is7mBSTak@yTu{zhBZEO)-Dt~MiD3d@&0vpL&!y;)xB1c&cc$}nO9HdzCqZBW!KM7iT zm@5Tam*JZ!mo$9!2q!J+oZ8q_LP35@L^rA_P4u}*h2|r*cTN{U2C*pgw(N*zHB6O+ z)dh$rH(^SA^%1BE`VJnG+d$}#86k);v?T})`mL&aae1a>lXSvx)usCAxuKO=@Pv%X zaMIcsUXt_kjF=(}(1QUjoV*ZgEUXe_MscVK?}Y7`VxJXLjDq{1W8{%m5UNbu8LZWj zv6QsurelhGR!p&_Dcp0BqX^ta+VaS(CFO4K` z-DcgW5=uw(w`DSoPY4h-Pqf`6GO1(EovbBR%4z0ghaKIYD2)8Cf!Vrj3J41i;; zq^vtseNMqpw%L@_rfyJL8i*uKLlg2}O$rBwIRqvXoU@!GZ=lXqwoQbe(qu&Vl{$jf zQ>Q_d#&2!Af%a*=Y!-;6%(6CheD_lZdXjd!dTZ(3XmEX+sy*8TD)!!U7YPriz{B zK+t-w1aD}IHWW$I+ef3H4MX4$X#~K^YhH|v2n(~#2nBVNL5E!TvPk<(tP8XR+|po+ z;laj|5&JU*D{DFY7X*zhGoFccX*?V`Pe-eH_|P%sq@he)Xsm2lio6>t{@DzbP-ttl z0)9rsprAxNtz$?E1}5v$F8-31JsXBF-#Ft~q-Cp#GhRSsj11x-lFXuuuA4PQ8zl9RE&1Xy2Of(a9i70{(27U zlQO{(id1Knm}MzDtE>(Q&YID%HoPgeWybZwnJ2{z20zSY>x7I{2QsAfhf^b}~2}+6@ZQ^Q&{^ zsVN9n3KT-}QJcma=VXEZ<+v$2M5Ri%PyiS|H^$g3As1N$-)MxhQG}S90$s*R$gHUS zDQ2SlnK6jbapP7dME=?;o=a@B^^w_z){*lrvrO1NQwDj1rd1NrYs9%a1|=*AO2(N| ztZw#~ojyYbnHb4KqnT@rvSO39M$r-uXdwYX>Lf@$TLu*s8YYCM!%e{h0~?-wNSSUR z38~LFdh_fU(}=>943VjfA(kC4BB-3Xj2g~=>LNi<@!S~WG_Sk0X|mJ8q{Bfjg?XI} zoE{zP?FEWGGv_ZrP$)s2VaK6tSTT(P2JmVeOnWLVQ?4&8Pl_qfCb=+ceZeRSIyq*A zW)7+bc1m|cNHO;8hEQNlR66;BVdRsOv9V2HJUX3n%-zyi#h#%xD#a_BEN0Qi=o&49 z((q{@M>%BK>}|MG?D@q~jZz6x(g+zXBJb>dV5*o9rIsn_ytn!4IWj1v#z2{&z3<^l_U}@Y0iie zxYW@!g}amti$W^hDd*>xuAm8`>kl}r>$)8`aiCBTt zy&)EEFdaJ2y$ng}k^&1Rm7X!r&l*`COG-&ZDMb_}1t?r^Im;?(I@_XS%=3%F10D26 zx8NzKgUf<0SJjXf=Tb(n$zCXEB*ooL|k^li!(7OuI`=oT^d1h7{M)Q)wWbcA?3KqB679iaaEl&q( z@hj0`k|8kz7Mc<*_{5oYba;Ahf$H;s(gHrZA%eW`0=Cgotqk9i4(lpWcbK9w-9*LB z`3;n8NQFua1*StWbZ|lDT&NJD4574lWwUz4lIpHl+BN3RZ&0!(Xk$$-F*GhCAcaFn z4l^scK_ve|(XE-aRdfJ3%`_tE6t;6(3AxDPLTL&d39YpZ4QQmB?Hogw`$`r8_>@M# zBq2+LrAYyxrExM_;Tj@Q!K-U|XFt6m?W5F5^UN81qRbcsHfIU?WKJs9JICQleua%S z7K4R$6{GhBlg9e&42-!l#ikUSwlQ;=#xm0kL@?$sE+dOZ$^c2{=rVXu(zlw(@Lg+$ z9d8YWL23GnI?&!qqg4$oHOkWEQ5xmxJ}|mwT{*fx9>xHy44k()i~|M>pR<3Gdi`SHyk`NQM= z`*;8Ajd}C^|GfJ6?{NR_54C1DSK+6h!$W@ekB|QhX!`K*{?EI&@0n_brqlP0%xS+4m_2U4y@|5dDI|CO&*|COyZ#{7BB1%5U8zwaL2|KmQfwOiZU zdU?(HP5lPwto_E;{^qs?>8}Iuy!#_Oe9CNXcky9sgO=Cri1xZ2&d}ex`2N$o=5ema zZFu+o-Mdc@4|l(R{7~`uHT-h-fAZV+AO5p8H&^Rl-jw$r-c)24nZ*t>iw&9eOZa(* z{O}u47jpO7_x0NC-@pQkFV{PWc6UMT0!F{Ah1wEA%@^D0LA&3GVL#)K;8P4O-THoV zi%`MreaMgRAO6UgH@^A7)} zEvg{U$TV1Yo%>No?)r|pZQ$12b{)B;|GMjD+)?)(W!pfnx#~MA`mei=xf8u4aK0>Nm7N&vnvGq%0^?yv!_{lQZe-e`Wy}q z{8)BQ`+ne0#vdzjev)_jzSQdKZ_5w}`1j!sR_ObF3VyC%Mvh@^GLV$3k@l(gANbYp zAM${ci&k&w^mcvc8xGx;ip15fUFPjosOg=H-?tZUTgu7VnxaeoPDeeP=}pv-g`M91 zZEzb+;crwJ^b>#hm~p&w()u>k#kC!47w)HBT;GM-Ol6A3(`OK?4=phpDNrrsmJ&Td zOQ;PcXhRB|u3fbb-^1+cZF?Q9i)!;@M18qomG(Wi_f7e4Ej@c?ebeGJ8LZv*h+*a6 z_dV=81f$)L-gB+<(es?Ut_K=+*g|6Jj~);;A=$G1j{zXYhd&{Ht%jl2?dX=QYxrR^ zQK`0gC+ODDHi^A9SB#A=bi-r*@JDEM!^Y7#;6N-pB4X%>+-}^AP5NV#{1~J@j?puF z6_PztA-OqWa06j*v%=tRu0~AU!|!(9?!!Ow$MI_KqNFXs2BB!- zr)`uynEefSgc%dY%tG45{)e?k!wz+fFji)XA2l*@c{mDZBlQ2)Wwx#lL!&0>zpo8v zH`6iw&M()6h>pOyz0lkdNZr(s@*sCP8?%?Q0e|__S|mOZ%Q>*OM=|C4De^fnCSuVI zo34v#-;>?23DEl?RK(V6=*bTbE1{kF1`w}+I05nMz_Y#i&>#kdB+AsC_(~3V+#&!f+_MqETI0zJ??JF-y{m2$6r-oy`*sGA(=t^uK3mK+<9 z_F}8Kz_y9`Xz%Y!HA%mlYSK#$728cU=`Ph|XYi!?>2kbNeCssM1hbny zmRsw!;^XBQl6sFbI((w)c6%h2<~9GUNeLeg4>)Ty!Uuvl?wwc_(N@8|YT|AW%W*KK$_GrjZaw(*P~$&~%MyQO&=ht9XBB@CaQ zliELEtK9H6+|NWTL+IF+D#9 z5`_t9U`<;45rJr*qB<`=YqNmQ+RWmE%hj7UBRH*zpl9GulenKL;W-}mV6WLlad*sU zvnz3e!fasowJ4O&z~sqE>ir9fCh`8vf|}U*0d8E+b3$FnRKV}r(J<#5ayjKh&(z=) z-)$Zy3=&X;O!xEL8tyn`o*jYf&*a;VvgsO}n}RPf3I!lPt?l^*vaYVE*Fv7vT0J?{XQ9?JuCQ z{be+^zl_Gd{t~|H?jzl^%Zsn#@1VoT2_wsf1= z((?kLZ@z{U@iB?1g%t4}yPi+3JvBvKA1GZyaK8qIUnnO}r2(Irfge^CoG0JD_tpbn zNLSAVL`OHi-9KnsFLF^M+I?eS_&yQrI4!cBHE5!1>dxb*mRL!!%`$<{b#Sn+WWerd<^Ev zYqAA;*_3)${ObGZbM2_@^i6AW#ik~g+H}RQ?wgp%mio_~%eMEqRcwWNY^Csg!%d~| z!tD*^XVby6D(SaYj`nD!O^efXWbL*`O>T;gU0?Rw{TS2=`%TfY5SyZ7+hf~R1aAO| z7SQI$0Fc@#I)-}ei;mk0+B@jWrJ`fWcZ*;T)zgTp6J>Tu_CN12X@&Kl z=hwhTS-RaT@2h#AYoSQ^!xClUD9`VN0_{cTVqBoTUA3E5NEJstJ-Fbl80 z$TFA~a$m^1`hr6(O2B6a$Ktr)_*?(zM!e0!s3#Autr_i3y|#(}69?>ty6@SfXuFgfLbFQjDn z642`@(6{%^2D_2s9uulFNV#KbF`MJ|jt z?1_2`#}ae)?t_^K=fT||^C->F*o2L9!Z(@jqh<)#4$`u~_`P#^?BEM?`WHJd%Ff%9 zWchmUqBx%5nMov#_Bnh$O0j&{)to;bXI4(o_Ycb&_UNgYD)QakNJn5yNf8iuRyBCq z?w%dfG{%qb%YV*1iad@`MTS$g7%pNzMkBTrfLNAmCN`tnPYbWQ_v zR#fY1=ac0=K~PN6YUft~hZW#K$(-TU2|}?Tj6=o5PgVVMEBlEkRW#0H=}tvvyw#g8 z?n9y&ZEmY0-zk6|Q!zd+gooKwsh~RQxpKChshTdGPTobmeU<59N!-7oE*%`WCD)aN;8$cg<0C} zwm3lkVE4p?1>xmmC!^j z&KsdagKU-ORPoFWAuctongwe1PiB5&dZ9w zph_>5M%i(vt9g5xFMaexJbP#{U1paGv0CN1w&&EG*L&UK`s{N&Gh;`7zJf%o-R*Eg z)`EGPJ^OE`cw{Cp`Snt!uzmbA6CNC6aHeO>e6Qt{+l?Iu_QA*l`(Wg0`(Wf!!|^^CITLl`>Tc;vx65SzJ{URJ2P0;B5B9-` znGpy3V0H?-$AuGNdn$a_rafBw`%PK5;L|Q_(`9k*$Hb_g$9A|2tj(eAaEsWyYTGe8 zV}F^Clg!6tx6>I#w4I-UgZh^R`CJRqZ5p$^t}`ujyA3o`U1v7B&Tcl+m@lmL>;*)s zrEMD+{iXPxS@G>m$P3eb?#t;ucM;v!GXEP;f0fWP4{k`{>NZTqup+mWSgy$n_Z+V^e@e60kQ7gKmCsZ zAhEkul5gM7(r->)em{#JZ~Z&DCRm)X32!m78E?Xy-S9rLAz!EST&3nIO6ge*;F-LN zXQklVIH!3+u~NO-XC-Hf4|>* z`RxDgdOi}?Q~Mut^8PH^hhFu^Cnx96HCj{n|I^@wV*QQL8v*tBC=#&*Ze;gh;9w~Skvo14v+qrrGjvNwk&Ml4NCUv6^b zjEM1!h<-+nLVa$=#KMdXF&j;l7)_NpJXKq0vvah$-A&Gi`J&PpvbHK?{xz2Sx>Oyr z2jadJH^J(FEOZfnj3)R<~MLx%oV;1|~VfQTmef`XG zwKyH3uyCFA=Lv8&`(oO|5ND@&KkMU5ftX&vS^&;%3VEBSOXGjL@eeG3#W12B3Xsj*8_iBRi*#J{gJG-6fwj zH7A7vV(A!DF@KKfqQ5z{G5h_^89Z*!H=lb#hp$lIA7jbS{$P4+Gsl{HX^i=J49yq9 zu2T+7=JN(^@wnszQSQ7N<((SsW8A5tdTL>78{e;| zMn@wrk$Y-#VP2!~UZZT13p0M{iOGd|ow4^M_;Bz~` ziSfo|%a_hOVRJlq4mG}iF3ulVeaX>oPm3}4)J}ahR`bsowEc&zIod22h369)Jy!$GAzLPP&gnM`*5__LO zodD=UPUmSzEc>UYPR)ySWlx^5>#s~<&iV+4i_;FHH*uP`VgCTtlb%}C)V-V~`7}72 zjOs~)A63({SGk@x;8ejbq-?iFW?TSNbE6&8rpZr!Ao+P|xV=RfS%Mbs>4xBR?oJUhW?^XOKPsLGB-nUABtn53HIa${qtK(0flMUFk8}at{q2zCF4#R|5$hU!nveNzT0AADxPd97Fd6YsAKdtIJ=gk z6JvJwK+M15Y{VtfXd|foo0`{kfI0rGM{joPJ4iQbHi0cin}r7NulsQc$at*XyVGK? zW$Z?I{>fWB*KVYA=U+20G{Bm<<8YFst5RmjSP- zvKt=3THSL(72t@jImp1 zbkq2@GHW~{zvH0&-A}Oe9D8z01yj*d;iPAz3^j= zMp^_H8gbROB9FAz$?H(J4{S@xsfd19T3&Z-4*f z8ENnzwoNwQ1VreE3I^XEKSgloQ+}5+nT9pzqiZzHB=#Gsw^Q1Z+j0EQDaSW`dqyqH zj3W`RO}0R>R1((AFI`-Onc%+v(!HY6<68}^Hmlb4Y-q3h$@LoZ44)R!!pHS`lD}Z% z_M%<2)YG=b^L4$}b^Gh?^!Iqui$C4wTdlyxh5B07pXd#t-3Y?;L$o*C^oE<@N)Ua0 z-RV#CQqoBe-(xH4b_+TQsK=HLJEH!Q1$qnVkMyPQUzgtCw;9Tx(74sgA9d%UUa4`k z9JnRnSx&8Vc)&iHiC%4|?;5pI3*5 z5)f`D$FS*wD~sz6_ONwlwtBRerS>q^mJzJ(-V)G*+ux+Y#6bCVcQCO#vxn7Bn}0^v zNG-_il#Zbt&??*hn_dg_(dd1nPO0EKySds?&~-!HfYz#{srhZcrs$rO%Pqby~s^_&})3RJ73@Cw|DoCcYo%GhdW5>+uX1k#ElYl_4xCL z@c8lXv>5Ss`Zo32q}+eNy~o;Q>;FC0WYn-*bwc{PEoSYRBx9D>SBDP{RjWYSS?!J* z>rN=H5aV|{#qy7%2lBbEo)f;pNlui*kuEWS}+~4@> zkMQ9>y!-g3$>~GJ%{gI8-;pS#?|O--FV1HDIdi-4*Sx-XyLy_7B^B$P8j7xiXaO?P zigVf*Ds*k;v@aZ;wNAVq_g0mG-qnz`<5v4_Y>{dcuY;DhCUbWZj1*WwM>@(Z-p-+A z$xrN{S9R)kdQ#|KIRWiMhx5#Vs2Y|uW$#R@o7Q_5TP@j(4smHmS?GC?y6zI*c*LD5 z87eHjQCOAVL$w4yL$q&YpMmVjX%ZXFTVGjDCU(Oy-a8(G?HCezzquM15+R|Vg*t3V zgd|{kbdAin-WrlIv;&4@+kew*!I04CeWT8h;QNR)a`$%aM)lXWUSaDC(#zu)UB2r@ z&u(ltsxLePCeN6hML|`6ATHW zropI(p7zi^hEm*2w5K$rJ!Oq^q#0{ZX*&G?^VR9~ZC^|k^wgX>-@XyC&TxHO$X)pK z-*XCY1avK1PTLuPJ{e7hdn5R@eV68#cy<5FJv|D~kDnfTFYJ1A0ap8$3VH`@f3H)Z-3xW5 z4alYG)n$8$AcyxfomjYn-R@59FrcP(yUx=#X2hML&qX)h@6bB*-S&Amo$Bv`r40`V z1|a|38?*1(cQtKNhkB`(C)ymd{tx4`LPCczHGq6Y3H6K%7h4Hok< zLDIS-5G{pcVW9p{#B4ZH%Yjj=DhjpTvdbWLWTE0Y!`G?_+xfq_{$;z=JB~^T>$q9m z)%*^X5w()y@1)4PqQvXD5V6e%ErkPvJeib7H0r1AsHQdVL{z9M0#e=X_zxQqfd6pa zHeC_{+*uTXUw0pG5bvtzx|It`R@L0>#y1n>SM=Z7LvsyZ%U3=S; z&%JFi7=OULu5C>N4_9`38EVmNS2i`-UD>3WX=Ot{R}^pOSGL-sUX=yO?k>vxW%A%Q z53|he$6u>sSKZAq=3N(BufO(W5&&~^{qfg*tq0Ex`^#!qgN=@(ZCf4IU{d}X^4s4( z{^$0yyKl~Sm!l_O?F-RAURC&a5Z&MN)m5XsD8@)_vn!6tVjA06nQYQVW^Lctm09VP zTFI4I@fEw$F$menoV7E`Sf)KMObeYEvmtx?hO?F5^l<2rgp7(a=aN&wSxIlEDpr+{ zdC@$VH(al{T5-AJ7=mAA?u%yGmeLpzGix~D0!^ch4qCf6p0B)H3AW;X#odbA6*pHt zv1CkR7?;A>pqmoBE5#;O7L-a;O}*o0?~<#+3A=Vk1E^LSl47} zYIm~_f|uY-_Bo26qn8O}WYYxn_mc4(D+GH0h}4*f;H@Yiz%vtl4vN`SptBmQ{2OUj zQm-VqD_2siBwtCk5`HDzBFx6=)HvP*AEV(hM5h|3tc^^1Eem_2)Jn;f5-Y`5imjxt zVBJdE1CW#VnMY?aHP&n0gd%-oRE|kBN;ZWcYrE2rAidJ~E>~KtG+$}9Qhue}O4*e% zE2Sr+9~#=g$B;=epLA$+G{UC_xM-6Kk5TJ7w7b~oJV+@T!KD^4aRcSD)guEm_TvzW6FPz83CpYGq#rMt*l*Hv$A?+)ym416)VeEmR%M%7K(x- zas#!YpwU=jCZwpONxF%;;^xh>p_jdfY6B`-N+kodV^Yb&S}LfYkbH-p^DFmE7@A~D zme3TjM8V-LcmX|>9aJI{(!`3PeohRFmWoAbtqF$vhBI9ZnU1Jo@0pI(Sg_MDboMZY z&Mac+070#sTshc3{A5=y1Zk6$Fsw#1*h|)^#%EpN?B`@{MN&L7lBq$+n!!#lwSq#) zA*yJ-jb1QqZK+7gXGSs?ZVH38Q4Bsou`UZ`vJ*|=UKiCOsh$~01?wG~sC*_RC;}6) zXcsd6ld-5!SB-s6&7-ko;8+9^5u>Uc8qvhS8fm5UK?wbZlaB&VZrrcHzBuT1-!wtM zpYu^QNkj|B0^V04ABQvEjmsHaK|fis@Q9#Aur^^i6W4)xI7o0RZ6lDEr3BP-*YhFc-E_bGYvhLihC{x3Pe@PIdt9q04`GzM_YZRc}-pbV;| z7m|6Cq|ObNh4QY6(P3VN734Z{MNT##DEjc>SnQZFv`nxF7Fr<)7%HEk(!9%XCPh*@ zoMnt+pwZz)fD)}!PBE1rH8&tkCIlJn80<-7P<#L$X%C;3D~F{Dv9=n@7^2NA-x&kT zhf{w7KoAH7H;2cZvjatv&evQ!mf@EOkEp}R(x?ExS=V9Vf}VL;raZ(iz%fIF;(~Kd zBdmZu=Sdi@eO>Kb$a9Zd92`<-6BLSvyPhLMSlNiEnRl!yt(M{P>}*yhDut@nBN?*Fl36+hoDrWv+2fnmm0rG!36;^ z)=)6gC?1VU3LYkml88}tt8Y#W5+DdcG6L%Zx8r&NdLPp>Q~S%)x~7L*a*v^nTZ%d*uX6ZY6$71F;D}oxmSQsnTI~% zP))s}8|oPI!ruXr5`ZYnqQ7i$VWDu(5ZfFP3bsj&$ z?J!;(fk^>tJ*%)$EBnuZAj^_vo`aIC0t z`28G?KZobft=i&f=>y1!0yx3|ZUER29R%8JX_(-@#hEZY0?VwKfI4g}V!kA_RYt;@ zGXarRiLRYk>%Ia^lS2qaA)asw3N`EOa*^J;WO+f@Lh%$w6bEkuA7F_!$+0LoRwc)> z@fB$LgFQ60g)yZo{3QAkx~NKDh1(H+Mz?RgBtbic-m@75t0z97{W2VCA!K3Dhr_ zK%p31ga{8t0LHNhvDYW*gCD6WL z0ueSwsKgvBMUzrAn#1}P&J<5vHmyc^$s($oMEOy{cz`#J=&6Yb5rhMp-uloI_=1&8 zRD~(%&ZH$z%6qLDZ(^i;hlokHo~vN&$rO5j9tyoXMB&sWmL*ErXl0r7ywN6D#~Xu7 zJ~qB!7F#0uizc!tlY&qlzJ8Drv5yDYaMHbj$THt_M2Z(pqznqNT#8yp<3o%EUYS=Z zG0s)ezDpZZ?)C)}$(#<1ivS;<6=s-XR#_vHE-KlSVyko}h~U9`%2p$!!3Tg4IwP3eW=sUZbj!ef zQC>;}4ls0@XYkUPM!?d;&RZ8moj{?@=Rr4^V$)dBSgCZ05U8AU2suh)wTiigE~yR& zAS5w?p5lNp^xTXfQ>6}->Qttooj76i6r7@`B)VyebF5(q9vU54Q$!5-+Ko;SY|TXp z%1hO$xBxbW46jM9p~pjBh-8Hpfnqi3i?gc5MqOxh*hGf~qghf)l!D2%jn^`X45Xav zdEqZJI*b!Nt!hLGsWi+Lht<$H&ys;}=^Wv#eqxQa@}MpH;4VO3zc zY$t{KLYxpEbbgu9;lY+BxQG}96K+bRuq!rA6N1cE zbW*1;#Cd1Pjdqap0R5$m6;Q4Q#@kt}#N2US$uo^U<3upHK-n1`xM10*ps3IzVEIEw z!}skFIF|yNBH$fkO-fe7LPF{gS}-kO<}wR5I?>I(au-7&8Y?m1@C`HUGK&({5&n}f zh~=OPdJbR^rO&ARW;oHXhAKJ%LptFQV`&41m|V1hlhSj-TpW=I{hzF29$`W;*(JES zDkfW^wGR5BL*!hlaE24lstr9S>+TR2(HiuONv*kWOmxy@xTutG#uVX$?q*Pp36X)O z00!C}9wb_wJp3Q{Kru;pcu{-N7~vW&imbJ+!UBK=CGcQ{rGgH+28i%n1w2;)&sD&4 zh0}u%RqUdjq4HlfgWLgxiguhzZE}_{0^B0xjqp@6)@3xx$?h@57sUw?99Ch|u%O|2 zIs`YcR0zhEgTi(!Rwg055)=|R^2O~IIY%E14A~M8F5ze_41usfP-Ik*A0xa)@(A=A zqo^oD>Rf=2aXQj3MS*5=xp6Ie{5esC3SrS1hcJZMM#9fT1j37z%qymJO-xBfh1md4 zwd$TKih-8L(4No-WG|izeXgFXuKTDVe( z7o?5Ju&T|05!5WqZZd8DQ$kq2ax!ES6-<)zP>o5#PcKMHm4iU%AqK&UDNb6E zxN)&CM1pO^E~)tbB~$5@3_d$gm43luX35hw!Z!`X(z4J|$!f?ag?TcyWQoVr!ZJ&; z%!0lHbI6;dfPY9iq)$TpBvm2#r+YjP@H zGZ!+PDoI<9lrzDX2)BgW#_-})!sXI&!M<)TP!WuP%V(9hPLqj5Fvc5!cu>Q-Hysz; z>*hj&NisqP9#x1wL@S^qpxhn!*xX>c~B!gpNx0vZ>TgVA5oWECtq>5a4n)DmZ4MwLZ0} zO{reEA1#8mPL#}`T#Gb1F(qw@Spc-pns-!oesoQHyh5)*mBN!L8a^Zy-p1%?Pm*hd z^gQ|8MHA|UdkxY$LkaZRV4)Jyjog64H2KIJQzg0sLI4POwR zk#2Nb%Oo)h{6TzZ4?6prlNKhxV%iv3aMncy-e&MB8P5>nG2<#Z^vJd+M}r)Cys!EN z^ZD~g4-LlDkyEKmU88-*dbma@W4&)}o|<_I^eCgyUOVVq1T-Z}l^lcbtBo#g0?oWu z>NQg;iehv$32u@Xrjddi#O$b+trcY>UMcmG_D2^cqvM6EkP*lRrCFmhJ=C?fRaaVF zg!~yZ^;GgtS7otS;|xOAq*Q1)rd=7@L8&wq<>$^gYyEmTz(Q&w^SGIUQmR;$nf6%z zDoUGG7XljgdO46(gt?}NT3pd%8m6Mx&KnlE*CBPTi6$ceYPEU2oG7*kn>{^cRPBznSJbDmUXb-H&h*Wbl+A$bJ-cs*gDfJ0HVME1U1~Y7J z!4l9#!$q)J7BHrh{#Wc51kZ#DmYZUwOo#@G7Fy7@h9(TsLs?m_WC&?v!vq+iEsqMQc!J~H%{5W zq7TyVX6k|ZtLF$Jpp;6IQ5aUZNQWHIwq(h-aM4120Hx%S>*Hwh6wY z$VIB8wCASNBaXj*PUr+*EAfU-f<+wZBOToAG$og_Rk5oFrH5CqofA@VUm`vKbiO30 ziX@FQLDBKjD&*Gd@~__OVnTW?;9xY)*;K3#mPsxhohO74s^!9E#o_t6&}4+uQpbn@ zL`o$xohz6n?5T1}<<6=){rXo$Xt)Cw5yIe9@rbh#WM@u=Xx{Q}ACYw5fX#48dhRk~ zN{dJveN!&3aS6&Y7+L&owYB>O;*uPpAE+#`$jC!P@Xl2bbaq>?Rz$a3dHpSLgr3h^ z+Fwzc$P@FLBYKszFO@ewGMLxai`0yo(x=VAz<$vIfp=QX||{n3b+ zu|}dTa6EX)s>ooa4~S>EQmKnw-8ZyaU~UZ^G!}UQ%?R2IXHvVu;FZvs4&7?`1|qe_ zG_IJy8A8?KJ@brNnUrNds0Qk__00V%_sj#8FFH7&bOK$>4d*UK;WL9fmYIt!7u+l7 zLXM(z*}Y1(zHOcXgII!2_U=zV8euN0@Z#Bh8VI{NLK_q5<5 zrBp-#f31{szMtYIavMNd`&u)FNx(IH2oU|2%K*JkN;jU9Gi{i1+z6AsgD0ubx7Ze- z$HyHH)GDEpN>T@UotMj|L<>G~X5p&lQeS+gFrOy@<-8P6?`J?{h)7WddOwJ397$-Q zSA|ue=uF2C5|C2|DB0LZ3Ct9ju1BZqm;p(J5D}f1b^u+^s8{v8dNmkKo<5*tP0+@g zTw-XTf2<8I=olRtTmZ#pFWMUhb1X%>s;^p>=w z={2mJv63`qM+Mm-LGKW|AQHyGhFIvpoSgzQd}R@RK(HR7EOfL=7H()3C+V55mTv&TxoGt2a<7T7zVtrX~ySn|-!B5MxyLZ>Sk Qc6`JC52Qn - + - + diff --git a/creusot/tests/should_succeed/mapping_test/why3shapes.gz b/creusot/tests/should_succeed/mapping_test/why3shapes.gz index 2b597d68f470994d0001693ab7830008279fee1d..37eb15ff7ffa412ae9128a89688697dec7f6c947 100644 GIT binary patch literal 429 zcmV;e0aE@SiwFP!00000|DBORkDD+Mh41_dZrjp}Jtj6($svk_5~;_^$D+ZQ7L~;n zu$#ZXV;r&BB%59Jg0SDr^UV9cB=PtM|JgBqw!_%E{(CIriXr9&rDg*!k-0@!;?c}eGAxS{DQf`R zzwg2lTHA`o3t?y8eP;H3?>x7C!w=QE2i3Htt{>gN_3j;9;j8M<^r}i9)4k4BMSuV; zC6N?kpxEiOtUK&d1hU3>B~3R;oQ=8q{TjXi!}gNKP0=DY5aA|$2K0bQy6bkg2;nt> z0-p%Wk$`1gs|L8F>wi!vxx(zQQLU~Hia=-8GE_u~x@{9-kIvXO0mv`hRNkshv2maSPqJ zWi6ZAu?|{air)M=0UceP6`c7M{WVBtikCq`*bj@Zqv;zrUObsMq!fKisUK=H63LJu z1VdJy$;h)c`vRl13ITjnSSM|^KRlfE){z-!tYDV#i??j_b~Ui3Obf>$GS4DPmVqLK zk}wZ_5wL)Vk>W}$ed)3--4Z9_5{W=R - + - + diff --git a/creusot/tests/should_succeed/mutex/why3shapes.gz b/creusot/tests/should_succeed/mutex/why3shapes.gz index 2b52a840380596a909f0ec3c6574a9325dfce1c6..81027822158398ecebff5e5e368b839a2877c56b 100644 GIT binary patch literal 571 zcmV-B0>u3viwFP!00000|9w-zl9VtMyz>>@)bWy+KoTrHP*Y1~tE}>3@6^P3YHYUcbEErPG5sxhcK4aq5QtL(0?LyJY@py8gm7sTP=PSYf8= z3aMr*1f8vr=)6k0AYe(kRI>mW-g-Bh$MfudeLI`6Ie^*WS4-~ACwyw46(YYzwXC8G z;HyghUlk;9UwrQRnb9|R#|88L<{d1pyvU&*&V4hz{u+FsQnvcYypNABXh8fGxS)Yl z0TEpw2rVl9X;e#Om9cx$mq{&R6=+f7mVt~s{2##(Vju(gYI07upV5Cq?IqrmIP{z3kxtFn(KyC+sU1c1e zu$%;%9wiwFP!00000|9w+UkCZ?Zyz?u#sq5vv{>JEmY?kyUCSFWmCrtzH=q!xD z%<8|lKVX^JRXIS>)T=IDy?%R>PY?FkPWibVr~S}>$VGnhE}MVaeSa1Pss(a`D`bYO zkQll`G;D=nc$Mv=fP-?WrV&to>)X*jp62$~x04;49oifJ)xo{}>5+T+-|p>OuHA3*RcpS?)gG}G6o!I0Qw0tSoJq~w!`Few8vqZFI!~NaY7TEzi8jGkI%e)JkGy& z@qlL;Q;vzELCOR$C7?#e0qfdwE}Giaxzs{)%{0|SqlOHCPy)1|iXf>KaOmq?Aqxlw68Vsjj0eC#VT%EHtX@4+&!6 Ih=v3J09{BG*#H0l diff --git a/creusot/tests/should_succeed/one_side_update.mlcfg b/creusot/tests/should_succeed/one_side_update.mlcfg index d4e11bdb10..9837a61ac9 100644 --- a/creusot/tests/should_succeed/one_side_update.mlcfg +++ b/creusot/tests/should_succeed/one_side_update.mlcfg @@ -39,7 +39,7 @@ module OneSideUpdate_F goto BB3 } BB2 { - [#"../one_side_update.rs" 11 8 11 21] b <- { b with current = ([#"../one_side_update.rs" 11 13 11 21] OneSideUpdate_MyInt_Type.C_MyInt ([#"../one_side_update.rs" 11 19 11 20] [#"../one_side_update.rs" 11 19 11 20] (5 : usize))) }; + [#"../one_side_update.rs" 11 8 11 21] b <- { b with current = ([#"../one_side_update.rs" 11 13 11 21] OneSideUpdate_MyInt_Type.C_MyInt ([#"../one_side_update.rs" 11 19 11 20] [#"../one_side_update.rs" 11 19 11 20] (5 : usize))) ; }; assume { resolve0 b }; [#"../one_side_update.rs" 10 11 12 5] _0 <- ([#"../one_side_update.rs" 10 11 12 5] ()); goto BB3 diff --git a/creusot/tests/should_succeed/option.mlcfg b/creusot/tests/should_succeed/option.mlcfg index dbc58c5ec0..e5c90d8cbb 100644 --- a/creusot/tests/should_succeed/option.mlcfg +++ b/creusot/tests/should_succeed/option.mlcfg @@ -484,7 +484,7 @@ module Option_TestOption goto BB29 } BB29 { - [#"../option.rs" 24 4 24 31] _46 <- { _46 with current = ([#"../option.rs" 24 4 24 31] [#"../option.rs" 24 30 24 31] (2 : int32)) }; + [#"../option.rs" 24 4 24 31] _46 <- { _46 with current = ([#"../option.rs" 24 4 24 31] [#"../option.rs" 24 30 24 31] (2 : int32)) ; }; assume { resolve0 _46 }; [#"../option.rs" 25 12 25 25] _52 <- ([#"../option.rs" 25 12 25 25] unwrap0 ([#"../option.rs" 25 12 25 16] some)); goto BB30 @@ -512,7 +512,7 @@ module Option_TestOption goto BB34 } BB34 { - [#"../option.rs" 26 4 26 31] _55 <- { _55 with current = ([#"../option.rs" 26 4 26 31] [#"../option.rs" 26 30 26 31] (1 : int32)) }; + [#"../option.rs" 26 4 26 31] _55 <- { _55 with current = ([#"../option.rs" 26 4 26 31] [#"../option.rs" 26 30 26 31] (1 : int32)) ; }; assume { resolve0 _55 }; [#"../option.rs" 27 12 27 25] _61 <- ([#"../option.rs" 27 12 27 25] unwrap0 ([#"../option.rs" 27 12 27 16] some)); goto BB35 diff --git a/creusot/tests/should_succeed/option/why3session.xml b/creusot/tests/should_succeed/option/why3session.xml index 3419cc84fe..e07ab8a35d 100644 --- a/creusot/tests/should_succeed/option/why3session.xml +++ b/creusot/tests/should_succeed/option/why3session.xml @@ -7,7 +7,7 @@ - + diff --git a/creusot/tests/should_succeed/option/why3shapes.gz b/creusot/tests/should_succeed/option/why3shapes.gz index 2a8bf738c97052bbb8d5483ae7dc97027127a7eb..9345a47ca6b63a4435ba921210b937d1389c73df 100644 GIT binary patch delta 412 zcmV;N0b~BH1FQp(8h;&3JTyj9F783otHDi)o2-j2xWC^*X-oYJ9;Q6reDIhVxZRcG zNB3pN@@g;RaX8ykoUiJUsT#oj+doWPT1GF39x-l_&5F1FZv)8h;EX9-57$T-<}ESA$sMCc3N(?(ery+EV|5hbfOYA3SCTZg=_k z(VoqiU(IDa4yXHEYo$rOLe$`4si}uTGY`2gJS;T#kZIu|)uo4^(LxV6Gnn1c$ruq;+74uP4ooWDqFcwgNl$?K(qdZB6ia`{;^=&`Na&(SQ@ z!ho+K-P|qXLT6PZ3M7jFtfD}22uu`6wgQ8%ZjxlrE+j^Ih=1i_`Bxs6F4Rr{MUaQW z$>TvDibG(6Jbx64Jf6zqiLPRu^$NCou<==AVGodP_W+qS8ukFG+XJMDhB*!5dw^^& zW*k1RW*!AP)!_TKiyVoAK_zY#H_jx~D^2vu{dze<;ha15s86phHS|PvNb5H|8Bl#TW|S<^T$asumQgQVGRXp_rly6v=)8WgsQr H)&u|mBEiUI diff --git a/creusot/tests/should_succeed/ord_trait/why3session.xml b/creusot/tests/should_succeed/ord_trait/why3session.xml index c6e08f7ff6..0779387395 100644 --- a/creusot/tests/should_succeed/ord_trait/why3session.xml +++ b/creusot/tests/should_succeed/ord_trait/why3session.xml @@ -8,7 +8,7 @@ - + diff --git a/creusot/tests/should_succeed/ord_trait/why3shapes.gz b/creusot/tests/should_succeed/ord_trait/why3shapes.gz index 7bca9f2bdf2c442ed1fc93a7c1eb8cc6b8c106b7..93cf50bfe2c096d302146ab630dc61c4fc070a2d 100644 GIT binary patch literal 654 zcmV;90&)ExiwFP!00000|CLisZ`>ddz57@A);1@GZ&%GBis}-n>Z#(o!ZuD6r(q=zX&KSfmHn8kIoT;^;F?{a z(9FZiG7_eFI4frmy3&9`OBGfbR*_N2P?~j1m)g7nxG%m#y!htk;8Nr=xqB`1cuJw) z(~FJ0BnG%Heq}6F0}HqE6gJJL6f6dGGY8io5{BWF=2Hd{1HK)?y+D;;Ww0rfvcv}l zSqBk0k)RkOjr}`mOheaX=W%$o4me9_3GQN$!X&~Z!i$C$qA-lWH52%J${<%aY=@|vjNdVVhY}WyRyUl*&aP{eY$W?1ZlDpS5vC94 zlOErk1i2gBmacA~i5ouPwZ%wpu#0Ql&mE`TU<>o@)||%O{&3PL2H^b?-pNIKQ=4J7 zKC#rlxFSwJoqLiE)Nl9~zM?>)rG)i}NFuwcW2PkrnqCsxS|(^;0#Se!fC8i{C6!QI zF+~+oE~`+{7(fhnOrW;GP1W_ZM{O&bw(7Vw9W60am@Wj^wP1x^fD}{;qynLUD_{z! oV`9h+LS=;;2@PRHHmyZHVYbCBW<4*lP?#700Fnq^Fm49`0F}c!;{X5v literal 652 zcmV;70(1QziwFP!00000|CLisZ=5g?z4I%$wav-nZ>r`HMWv2Z^;G$~GOS5gA|ZiI z)SushwON~Nq*Oxkc;3wO*u3}os+|6~CqI?1ew+@&UAy+- zY1a?;#Db;ncK7}H#r4nbdfwih>f#D{J+}<&fBI<(I1ekkOUsz$SoUM|?&!yyL0WN! zLbD93$Vh~h;jElN*~$V5Emc@`SXD-$LuuBnF|~OGz%RZ-y!htkfGKvK9AC@bA5-Y} z_~K(Pivg{RUl|LxAi}K{3ZLdv3K0XonL}Do2}6HO^C^Rhf!q#(FHq%I>3s^NEb)Os z*Fi)m5)xx#>GDpN^3XN7wY>0gIBOqEAl9>%}7N!~x>$gv==7JqM^o z*SQ1K*$J6f)I|r(3Pyp(KXbtgNpTg6x4yU_aJn_Y=JLQ$kMEdZfl}r0)eT$y3Do2z z6D;|ZLauJu%%M<^mrStaQwF`dVLL>HGJeMd3zV=>vby0Uc5zvwY$MtKa08Dpk1)SG zopk@^B*@)>TfVx1CvNzF*JdNV!OpJ1pF51Z-WTrMwL1>G!{gDC7{KC}@J<*VT6M m1Yx4%x}uGSh6$#d)+3qlEp4gjWJ#5wviJvANX_GJ2LJ#zGe`pf diff --git a/creusot/tests/should_succeed/projection_toggle.mlcfg b/creusot/tests/should_succeed/projection_toggle.mlcfg index 8d08827e34..853bb9470e 100644 --- a/creusot/tests/should_succeed/projection_toggle.mlcfg +++ b/creusot/tests/should_succeed/projection_toggle.mlcfg @@ -55,11 +55,11 @@ module ProjectionToggle_ProjToggle BB1 { assert { [@expl:type invariant] inv0 b }; assume { resolve0 b }; - [#"../projection_toggle.rs" 7 8 7 9] _8 <- Borrow.borrow_mut ( * a); - [#"../projection_toggle.rs" 7 8 7 9] a <- { a with current = ^ _8 }; + [#"../projection_toggle.rs" 7 8 7 9] _8 <- Borrow.borrow_final ( * a) (Borrow.get_id a); + [#"../projection_toggle.rs" 7 8 7 9] a <- { a with current = ( ^ _8) ; }; assume { inv1 ( ^ _8) }; - [#"../projection_toggle.rs" 7 8 7 9] _6 <- Borrow.borrow_mut ( * _8); - [#"../projection_toggle.rs" 7 8 7 9] _8 <- { _8 with current = ^ _6 }; + [#"../projection_toggle.rs" 7 8 7 9] _6 <- Borrow.borrow_final ( * _8) (Borrow.get_id _8); + [#"../projection_toggle.rs" 7 8 7 9] _8 <- { _8 with current = ( ^ _6) ; }; assume { inv1 ( ^ _6) }; assert { [@expl:type invariant] inv0 _8 }; assume { resolve0 _8 }; @@ -68,17 +68,17 @@ module ProjectionToggle_ProjToggle BB2 { assert { [@expl:type invariant] inv0 a }; assume { resolve0 a }; - [#"../projection_toggle.rs" 9 8 9 9] _6 <- Borrow.borrow_mut ( * b); - [#"../projection_toggle.rs" 9 8 9 9] b <- { b with current = ^ _6 }; + [#"../projection_toggle.rs" 9 8 9 9] _6 <- Borrow.borrow_final ( * b) (Borrow.get_id b); + [#"../projection_toggle.rs" 9 8 9 9] b <- { b with current = ( ^ _6) ; }; assume { inv1 ( ^ _6) }; goto BB3 } BB3 { - [#"../projection_toggle.rs" 6 4 10 5] _4 <- Borrow.borrow_mut ( * _6); - [#"../projection_toggle.rs" 6 4 10 5] _6 <- { _6 with current = ^ _4 }; + [#"../projection_toggle.rs" 6 4 10 5] _4 <- Borrow.borrow_final ( * _6) (Borrow.get_id _6); + [#"../projection_toggle.rs" 6 4 10 5] _6 <- { _6 with current = ( ^ _4) ; }; assume { inv1 ( ^ _4) }; - [#"../projection_toggle.rs" 6 4 10 5] _0 <- Borrow.borrow_mut ( * _4); - [#"../projection_toggle.rs" 6 4 10 5] _4 <- { _4 with current = ^ _0 }; + [#"../projection_toggle.rs" 6 4 10 5] _0 <- Borrow.borrow_final ( * _4) (Borrow.get_id _4); + [#"../projection_toggle.rs" 6 4 10 5] _4 <- { _4 with current = ( ^ _0) ; }; assume { inv1 ( ^ _0) }; assert { [@expl:type invariant] inv0 _6 }; assume { resolve0 _6 }; @@ -139,12 +139,12 @@ module ProjectionToggle_F [#"../projection_toggle.rs" 15 16 15 17] b <- ([#"../projection_toggle.rs" 15 16 15 17] [#"../projection_toggle.rs" 15 16 15 17] (5 : int32)); [#"../projection_toggle.rs" 17 30 17 36] _5 <- Borrow.borrow_mut a; [#"../projection_toggle.rs" 17 30 17 36] a <- ^ _5; - [#"../projection_toggle.rs" 17 30 17 36] _4 <- Borrow.borrow_mut ( * _5); - [#"../projection_toggle.rs" 17 30 17 36] _5 <- { _5 with current = ^ _4 }; + [#"../projection_toggle.rs" 17 30 17 36] _4 <- Borrow.borrow_final ( * _5) (Borrow.get_id _5); + [#"../projection_toggle.rs" 17 30 17 36] _5 <- { _5 with current = ( ^ _4) ; }; [#"../projection_toggle.rs" 17 38 17 44] _7 <- Borrow.borrow_mut b; [#"../projection_toggle.rs" 17 38 17 44] b <- ^ _7; - [#"../projection_toggle.rs" 17 38 17 44] _6 <- Borrow.borrow_mut ( * _7); - [#"../projection_toggle.rs" 17 38 17 44] _7 <- { _7 with current = ^ _6 }; + [#"../projection_toggle.rs" 17 38 17 44] _6 <- Borrow.borrow_final ( * _7) (Borrow.get_id _7); + [#"../projection_toggle.rs" 17 38 17 44] _7 <- { _7 with current = ( ^ _6) ; }; [#"../projection_toggle.rs" 17 12 17 45] x <- ([#"../projection_toggle.rs" 17 12 17 45] proj_toggle0 ([#"../projection_toggle.rs" 17 24 17 28] [#"../projection_toggle.rs" 17 24 17 28] true) _4 _6); _4 <- any borrowed int32; _6 <- any borrowed int32; @@ -153,7 +153,7 @@ module ProjectionToggle_F BB1 { assume { resolve0 _7 }; assume { resolve0 _5 }; - [#"../projection_toggle.rs" 19 4 19 11] x <- { x with current = ([#"../projection_toggle.rs" 19 4 19 11] * x + ([#"../projection_toggle.rs" 19 10 19 11] [#"../projection_toggle.rs" 19 10 19 11] (5 : int32))) }; + [#"../projection_toggle.rs" 19 4 19 11] x <- { x with current = ([#"../projection_toggle.rs" 19 4 19 11] * x + ([#"../projection_toggle.rs" 19 10 19 11] [#"../projection_toggle.rs" 19 10 19 11] (5 : int32))) ; }; assume { resolve0 x }; switch ([#"../projection_toggle.rs" 20 4 20 20] not ([#"../projection_toggle.rs" 20 12 20 19] ([#"../projection_toggle.rs" 20 12 20 13] a) = ([#"../projection_toggle.rs" 20 17 20 19] [#"../projection_toggle.rs" 20 17 20 19] (15 : int32)))) | False -> goto BB3 diff --git a/creusot/tests/should_succeed/projection_toggle/why3session.xml b/creusot/tests/should_succeed/projection_toggle/why3session.xml index 2504fe914b..7c7ab723ec 100644 --- a/creusot/tests/should_succeed/projection_toggle/why3session.xml +++ b/creusot/tests/should_succeed/projection_toggle/why3session.xml @@ -8,12 +8,12 @@ - + - + diff --git a/creusot/tests/should_succeed/projection_toggle/why3shapes.gz b/creusot/tests/should_succeed/projection_toggle/why3shapes.gz index c3d99d415bf9414c8300ab4566438db52e808a08..84f85cfb30af94953e478abd548c4d0b2605f42e 100644 GIT binary patch literal 650 zcmV;50(Jc#iwFP!00000|9w^Tn05I%XStI5|84gI{k^=gZT#L_oj81Y|f`t`ixR$*4>QWMZT6 zg@L&$=rCeg6q%42!bEXN17e+lMFwUGSD*;zS@M(w585-dsUL6C4j+_X%Saj4i1Gy$ z$`Tby@MKCtDJe6Q=3-Ks*-#Scc*`n=W^fYzf+aY)$umOxi?6QYtCopYm}oN-Jx`in zCcH4SrZA7?Fiz$3H2!)zkGtK$UAx*h_|OjZ(0;>ebRgQ-)kmBez4Py6nJJ}xBMU5X zQiX`6YHl&S|I7SScA`O!Puub3*q`1wzlQS8PSuNn;28)n^CtH`Pjd;S7In+9%O7I1 zuW)chqdGVBb(Y1A`gle_&;XE+rUa1Ln8=|dP8J*-Cg{ez*GsXhLx?gm!^=fiOKj>8 zByiq_9ghM+eHe&R>O?%g^E`6-hob1URNxqBkRYY#IA`1f9e^mOEa4^F&<$)z(e=G` kOlk_M-)hzCEo>|81fiW&y%VL}hz&3P1K{Db!aoK808>Ohj{pDw literal 581 zcmV-L0=oSliwFP!00000|9wu}wnQ-5#)qZ|r$}Gybs3#~=3Djrqk5YfGiB? zbYF%0+7#(_;XjXUJSa>I7mX;ai(J@H$wnxeGJrb<5DK|1Zy8Q$Gh5l?=+G2ix>cZ< z5-;vOLh+7EklW-`C8r7(M5n?@JRp{JlgU7&UK$YFWI$j;%%kQhC?5L2(5l?rrxAWA zzgC(utR>|OpOht^l!RhaW++YNrW6-)V~dh-1eP|)6n8Y?OQk2iH3nYI8j7cWS|+f7 zS(TYh-t|NNJoG;w&;8TW(OoCT4^LNjWmkX2GBzOU+wM=C8GZ0;LS{_XuV_PV5^JKm zzwI@j=D)HL6-M{C?_W;s_)7UD5H<5xEXK_H7QO+iX`*)GY?v2WI8W#egY=&Sqc)5%p=tXVh=PTI%>Sf ziODX@WFz;Qi+!O goto BB3 @@ -4982,8 +4982,8 @@ module RedBlackTree_Impl15_InsertRec goto BB4 } BB4 { - [#"../red_black_tree.rs" 601 20 601 24] node <- Borrow.borrow_mut (Core_Option_Option_Type.some_0 ( * _11)); - [#"../red_black_tree.rs" 601 20 601 24] _11 <- { _11 with current = (let Core_Option_Option_Type.C_Some x0 = * _11 in Core_Option_Option_Type.C_Some ( ^ node)) }; + [#"../red_black_tree.rs" 601 20 601 24] node <- Borrow.borrow_final (Core_Option_Option_Type.some_0 ( * _11)) (Borrow.inherit_id (Borrow.get_id _11) 1); + [#"../red_black_tree.rs" 601 20 601 24] _11 <- { _11 with current = (let Core_Option_Option_Type.C_Some x0 = * _11 in Core_Option_Option_Type.C_Some ( ^ node)) ; }; assume { inv1 ( ^ node) }; [#"../red_black_tree.rs" 602 26 602 35] _18 <- ([#"../red_black_tree.rs" 602 26 602 35] RedBlackTree_Node_Type.node_key ( * node)); assert { [@expl:type invariant] inv2 _18 }; @@ -5006,7 +5006,7 @@ module RedBlackTree_Impl15_InsertRec } BB8 { [#"../red_black_tree.rs" 608 27 608 58] _25 <- Borrow.borrow_mut (RedBlackTree_Node_Type.node_right ( * node)); - [#"../red_black_tree.rs" 608 27 608 58] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 ( ^ _25)) }; + [#"../red_black_tree.rs" 608 27 608 58] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 ( ^ _25)) ; }; assume { inv3 ( ^ _25) }; [#"../red_black_tree.rs" 608 27 608 58] _14 <- ([#"../red_black_tree.rs" 608 27 608 58] insert_rec _25 ([#"../red_black_tree.rs" 608 49 608 52] key) ([#"../red_black_tree.rs" 608 54 608 57] val')); _25 <- any borrowed (RedBlackTree_Tree_Type.t_tree k v); @@ -5030,7 +5030,7 @@ module RedBlackTree_Impl15_InsertRec } BB10 { [#"../red_black_tree.rs" 603 24 603 54] _20 <- Borrow.borrow_mut (RedBlackTree_Node_Type.node_left ( * node)); - [#"../red_black_tree.rs" 603 24 603 54] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node ( ^ _20) x1 x2 x3 x4) }; + [#"../red_black_tree.rs" 603 24 603 54] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node ( ^ _20) x1 x2 x3 x4) ; }; assume { inv3 ( ^ _20) }; [#"../red_black_tree.rs" 603 24 603 54] _14 <- ([#"../red_black_tree.rs" 603 24 603 54] insert_rec _20 ([#"../red_black_tree.rs" 603 45 603 48] key) ([#"../red_black_tree.rs" 603 50 603 53] val')); _20 <- any borrowed (RedBlackTree_Tree_Type.t_tree k v); @@ -5047,7 +5047,7 @@ module RedBlackTree_Impl15_InsertRec goto BB13 } BB13 { - [#"../red_black_tree.rs" 605 20 605 28] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node x0 x1 x2 ([#"../red_black_tree.rs" 605 31 605 34] val') x4) }; + [#"../red_black_tree.rs" 605 20 605 28] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node x0 x1 x2 ([#"../red_black_tree.rs" 605 31 605 34] val') x4) ; }; [#"../red_black_tree.rs" 605 31 605 34] val' <- any v; assert { [@expl:type invariant] inv5 (RedBlackTree_Node_Type.node_val ( * node)) }; assume { resolve2 (RedBlackTree_Node_Type.node_val ( * node)) }; @@ -5068,7 +5068,7 @@ module RedBlackTree_Impl15_InsertRec } BB17 { [#"../red_black_tree.rs" 610 12 610 26] _29 <- Borrow.borrow_mut ( * node); - [#"../red_black_tree.rs" 610 12 610 26] node <- { node with current = ^ _29 }; + [#"../red_black_tree.rs" 610 12 610 26] node <- { node with current = ( ^ _29) ; }; assume { inv9 ( ^ _29) }; [#"../red_black_tree.rs" 610 12 610 26] _28 <- ([#"../red_black_tree.rs" 610 12 610 26] balance0 _29); _29 <- any borrowed (RedBlackTree_Node_Type.t_node k v); @@ -5114,7 +5114,7 @@ module RedBlackTree_Impl15_InsertRec goto BB28 } BB28 { - [#"../red_black_tree.rs" 612 12 612 21] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ([#"../red_black_tree.rs" 612 24 618 15] Core_Option_Option_Type.C_Some ([#"../red_black_tree.rs" 612 38 618 13] RedBlackTree_Node_Type.C_Node ([#"../red_black_tree.rs" 613 22 613 41] RedBlackTree_Tree_Type.C_Tree ([#"../red_black_tree.rs" 613 35 613 39] Core_Option_Option_Type.C_None)) ([#"../red_black_tree.rs" 614 23 614 26] RedBlackTree_Color_Type.C_Red) ([#"../red_black_tree.rs" 615 16 615 19] key) ([#"../red_black_tree.rs" 616 16 616 19] val') ([#"../red_black_tree.rs" 617 23 617 42] RedBlackTree_Tree_Type.C_Tree ([#"../red_black_tree.rs" 617 36 617 40] Core_Option_Option_Type.C_None))))) }; + [#"../red_black_tree.rs" 612 12 612 21] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ([#"../red_black_tree.rs" 612 24 618 15] Core_Option_Option_Type.C_Some ([#"../red_black_tree.rs" 612 38 618 13] RedBlackTree_Node_Type.C_Node ([#"../red_black_tree.rs" 613 22 613 41] RedBlackTree_Tree_Type.C_Tree ([#"../red_black_tree.rs" 613 35 613 39] Core_Option_Option_Type.C_None)) ([#"../red_black_tree.rs" 614 23 614 26] RedBlackTree_Color_Type.C_Red) ([#"../red_black_tree.rs" 615 16 615 19] key) ([#"../red_black_tree.rs" 616 16 616 19] val') ([#"../red_black_tree.rs" 617 23 617 42] RedBlackTree_Tree_Type.C_Tree ([#"../red_black_tree.rs" 617 36 617 40] Core_Option_Option_Type.C_None))))) ; }; [#"../red_black_tree.rs" 615 16 615 19] key <- any k; [#"../red_black_tree.rs" 616 16 616 19] val' <- any v; assert { [@expl:type invariant] inv0 (RedBlackTree_Tree_Type.tree_node ( * self)) }; @@ -5579,7 +5579,7 @@ module RedBlackTree_Impl15_Insert } BB1 { [#"../red_black_tree.rs" 627 8 627 33] _8 <- Borrow.borrow_mut ( * self); - [#"../red_black_tree.rs" 627 8 627 33] self <- { self with current = ^ _8 }; + [#"../red_black_tree.rs" 627 8 627 33] self <- { self with current = ( ^ _8) ; }; assume { inv0 ( ^ _8) }; [#"../red_black_tree.rs" 627 8 627 33] _7 <- ([#"../red_black_tree.rs" 627 8 627 33] insert_rec0 _8 ([#"../red_black_tree.rs" 627 24 627 27] key) ([#"../red_black_tree.rs" 627 29 627 32] val')); _8 <- any borrowed (RedBlackTree_Tree_Type.t_tree k v); @@ -5588,8 +5588,8 @@ module RedBlackTree_Impl15_Insert goto BB2 } BB2 { - [#"../red_black_tree.rs" 628 8 628 26] _14 <- Borrow.borrow_mut (RedBlackTree_Tree_Type.tree_node ( * self)); - [#"../red_black_tree.rs" 628 8 628 26] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ( ^ _14)) }; + [#"../red_black_tree.rs" 628 8 628 26] _14 <- Borrow.borrow_final (RedBlackTree_Tree_Type.tree_node ( * self)) (Borrow.inherit_id (Borrow.get_id self) 1); + [#"../red_black_tree.rs" 628 8 628 26] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ( ^ _14)) ; }; assume { inv1 ( ^ _14) }; [#"../red_black_tree.rs" 628 8 628 26] _13 <- ([#"../red_black_tree.rs" 628 8 628 26] as_mut0 _14); _14 <- any borrowed (Core_Option_Option_Type.t_option (RedBlackTree_Node_Type.t_node k v)); @@ -5601,7 +5601,7 @@ module RedBlackTree_Impl15_Insert goto BB4 } BB4 { - [#"../red_black_tree.rs" 628 8 628 49] _12 <- { _12 with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * _12 in RedBlackTree_Node_Type.C_Node x0 ([#"../red_black_tree.rs" 628 44 628 49] RedBlackTree_Color_Type.C_Black) x2 x3 x4) }; + [#"../red_black_tree.rs" 628 8 628 49] _12 <- { _12 with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * _12 in RedBlackTree_Node_Type.C_Node x0 ([#"../red_black_tree.rs" 628 44 628 49] RedBlackTree_Color_Type.C_Black) x2 x3 x4) ; }; assert { [@expl:type invariant] inv2 _12 }; assume { resolve0 _12 }; assert { [@expl:type invariant] inv3 self }; @@ -6196,7 +6196,7 @@ module RedBlackTree_Impl15_DeleteMaxRec } BB0 { [#"../red_black_tree.rs" 644 23 644 41] _15 <- Borrow.borrow_mut (RedBlackTree_Tree_Type.tree_node ( * self)); - [#"../red_black_tree.rs" 644 23 644 41] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ( ^ _15)) }; + [#"../red_black_tree.rs" 644 23 644 41] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ( ^ _15)) ; }; assume { inv0 ( ^ _15) }; [#"../red_black_tree.rs" 644 23 644 41] _14 <- ([#"../red_black_tree.rs" 644 23 644 41] as_mut0 _15); _15 <- any borrowed (Core_Option_Option_Type.t_option (RedBlackTree_Node_Type.t_node k v)); @@ -6208,8 +6208,8 @@ module RedBlackTree_Impl15_DeleteMaxRec goto BB2 } BB2 { - [#"../red_black_tree.rs" 644 23 644 59] _12 <- Borrow.borrow_mut ( * _13); - [#"../red_black_tree.rs" 644 23 644 59] _13 <- { _13 with current = ^ _12 }; + [#"../red_black_tree.rs" 644 23 644 59] _12 <- Borrow.borrow_final ( * _13) (Borrow.get_id _13); + [#"../red_black_tree.rs" 644 23 644 59] _13 <- { _13 with current = ( ^ _12) ; }; assume { inv1 ( ^ _12) }; [#"../red_black_tree.rs" 644 23 644 59] node <- ([#"../red_black_tree.rs" 644 23 644 59] as_mut1 _12); _12 <- any borrowed (RedBlackTree_Node_Type.t_node k v); @@ -6229,7 +6229,7 @@ module RedBlackTree_Impl15_DeleteMaxRec } BB5 { [#"../red_black_tree.rs" 646 12 646 31] _19 <- Borrow.borrow_mut ( * node); - [#"../red_black_tree.rs" 646 12 646 31] node <- { node with current = ^ _19 }; + [#"../red_black_tree.rs" 646 12 646 31] node <- { node with current = ( ^ _19) ; }; assume { inv3 ( ^ _19) }; [#"../red_black_tree.rs" 646 12 646 31] _16 <- ([#"../red_black_tree.rs" 646 12 646 31] rotate_right0 _19); _19 <- any borrowed (RedBlackTree_Node_Type.t_node k v); @@ -6254,11 +6254,11 @@ module RedBlackTree_Impl15_DeleteMaxRec BB10 { assert { [@expl:type invariant] inv4 node }; assume { resolve1 node }; - [#"../red_black_tree.rs" 649 38 649 52] _26 <- Borrow.borrow_mut (RedBlackTree_Tree_Type.tree_node ( * self)); - [#"../red_black_tree.rs" 649 38 649 52] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ( ^ _26)) }; + [#"../red_black_tree.rs" 649 38 649 52] _26 <- Borrow.borrow_final (RedBlackTree_Tree_Type.tree_node ( * self)) (Borrow.inherit_id (Borrow.get_id self) 1); + [#"../red_black_tree.rs" 649 38 649 52] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ( ^ _26)) ; }; assume { inv0 ( ^ _26) }; - [#"../red_black_tree.rs" 649 38 649 52] _25 <- Borrow.borrow_mut ( * _26); - [#"../red_black_tree.rs" 649 38 649 52] _26 <- { _26 with current = ^ _25 }; + [#"../red_black_tree.rs" 649 38 649 52] _25 <- Borrow.borrow_final ( * _26) (Borrow.get_id _26); + [#"../red_black_tree.rs" 649 38 649 52] _26 <- { _26 with current = ( ^ _25) ; }; assume { inv0 ( ^ _25) }; [#"../red_black_tree.rs" 649 23 649 53] _24 <- ([#"../red_black_tree.rs" 649 23 649 53] take0 _25); _25 <- any borrowed (Core_Option_Option_Type.t_option (RedBlackTree_Node_Type.t_node k v)); @@ -6328,16 +6328,16 @@ module RedBlackTree_Impl15_DeleteMaxRec goto BB18 } BB23 { - [#"../red_black_tree.rs" 653 19 653 40] _42 <- Borrow.borrow_mut ( * node); - [#"../red_black_tree.rs" 653 19 653 40] node <- { node with current = ^ _42 }; + [#"../red_black_tree.rs" 653 19 653 40] _42 <- Borrow.borrow_final ( * node) (Borrow.get_id node); + [#"../red_black_tree.rs" 653 19 653 40] node <- { node with current = ( ^ _42) ; }; assume { inv3 ( ^ _42) }; [#"../red_black_tree.rs" 653 19 653 40] _41 <- ([#"../red_black_tree.rs" 653 19 653 40] move_red_right0 _42); _42 <- any borrowed (RedBlackTree_Node_Type.t_node k v); goto BB24 } BB24 { - [#"../red_black_tree.rs" 653 19 653 40] _40 <- Borrow.borrow_mut ( * _41); - [#"../red_black_tree.rs" 653 19 653 40] _41 <- { _41 with current = ^ _40 }; + [#"../red_black_tree.rs" 653 19 653 40] _40 <- Borrow.borrow_final ( * _41) (Borrow.get_id _41); + [#"../red_black_tree.rs" 653 19 653 40] _41 <- { _41 with current = ( ^ _40) ; }; assume { inv3 ( ^ _40) }; assert { [@expl:type invariant] inv4 node }; assume { resolve1 node }; @@ -6354,15 +6354,15 @@ module RedBlackTree_Impl15_DeleteMaxRec } BB26 { [#"../red_black_tree.rs" 655 16 655 43] _44 <- Borrow.borrow_mut (RedBlackTree_Node_Type.node_right ( * node)); - [#"../red_black_tree.rs" 655 16 655 43] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 ( ^ _44)) }; + [#"../red_black_tree.rs" 655 16 655 43] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 ( ^ _44)) ; }; assume { inv8 ( ^ _44) }; [#"../red_black_tree.rs" 655 16 655 43] r <- ([#"../red_black_tree.rs" 655 16 655 43] delete_max_rec _44); _44 <- any borrowed (RedBlackTree_Tree_Type.t_tree k v); goto BB27 } BB27 { - [#"../red_black_tree.rs" 656 8 656 22] _46 <- Borrow.borrow_mut ( * node); - [#"../red_black_tree.rs" 656 8 656 22] node <- { node with current = ^ _46 }; + [#"../red_black_tree.rs" 656 8 656 22] _46 <- Borrow.borrow_final ( * node) (Borrow.get_id node); + [#"../red_black_tree.rs" 656 8 656 22] node <- { node with current = ( ^ _46) ; }; assume { inv3 ( ^ _46) }; [#"../red_black_tree.rs" 656 8 656 22] _45 <- ([#"../red_black_tree.rs" 656 8 656 22] balance0 _46); _46 <- any borrowed (RedBlackTree_Node_Type.t_node k v); @@ -6886,7 +6886,7 @@ module RedBlackTree_Impl15_DeleteMax assert { [@expl:type invariant] inv0 old_self }; assume { resolve0 old_self }; [#"../red_black_tree.rs" 669 28 669 42] _8 <- Borrow.borrow_mut (RedBlackTree_Tree_Type.tree_node ( * self)); - [#"../red_black_tree.rs" 669 28 669 42] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ( ^ _8)) }; + [#"../red_black_tree.rs" 669 28 669 42] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ( ^ _8)) ; }; assume { inv1 ( ^ _8) }; switch ( * _8) | Core_Option_Option_Type.C_Some _ -> goto BB2 @@ -6897,8 +6897,8 @@ module RedBlackTree_Impl15_DeleteMax goto BB3 } BB3 { - [#"../red_black_tree.rs" 669 20 669 24] node <- Borrow.borrow_mut (Core_Option_Option_Type.some_0 ( * _8)); - [#"../red_black_tree.rs" 669 20 669 24] _8 <- { _8 with current = (let Core_Option_Option_Type.C_Some x0 = * _8 in Core_Option_Option_Type.C_Some ( ^ node)) }; + [#"../red_black_tree.rs" 669 20 669 24] node <- Borrow.borrow_final (Core_Option_Option_Type.some_0 ( * _8)) (Borrow.inherit_id (Borrow.get_id _8) 1); + [#"../red_black_tree.rs" 669 20 669 24] _8 <- { _8 with current = (let Core_Option_Option_Type.C_Some x0 = * _8 in Core_Option_Option_Type.C_Some ( ^ node)) ; }; assume { inv2 ( ^ node) }; [#"../red_black_tree.rs" 670 16 670 34] _12 <- ([#"../red_black_tree.rs" 670 16 670 34] is_red0 ([#"../red_black_tree.rs" 670 16 670 34] RedBlackTree_Node_Type.node_left ( * node))); goto BB4 @@ -6910,7 +6910,7 @@ module RedBlackTree_Impl15_DeleteMax end } BB5 { - [#"../red_black_tree.rs" 671 16 671 32] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node x0 ([#"../red_black_tree.rs" 671 29 671 32] RedBlackTree_Color_Type.C_Red) x2 x3 x4) }; + [#"../red_black_tree.rs" 671 16 671 32] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node x0 ([#"../red_black_tree.rs" 671 29 671 32] RedBlackTree_Color_Type.C_Red) x2 x3 x4) ; }; assert { [@expl:type invariant] inv3 node }; assume { resolve1 node }; assert { [@expl:type invariant] inv4 _8 }; @@ -6929,7 +6929,7 @@ module RedBlackTree_Impl15_DeleteMax BB7 { assert { [@expl:assertion] [#"../red_black_tree.rs" 676 24 676 53] same_mappings0 ( * Ghost.inner old_self) ( * self) }; [#"../red_black_tree.rs" 677 16 677 37] _19 <- Borrow.borrow_mut ( * self); - [#"../red_black_tree.rs" 677 16 677 37] self <- { self with current = ^ _19 }; + [#"../red_black_tree.rs" 677 16 677 37] self <- { self with current = ( ^ _19) ; }; assume { inv5 ( ^ _19) }; [#"../red_black_tree.rs" 677 16 677 37] r <- ([#"../red_black_tree.rs" 677 16 677 37] delete_max_rec0 _19); _19 <- any borrowed (RedBlackTree_Tree_Type.t_tree k v); @@ -6954,8 +6954,8 @@ module RedBlackTree_Impl15_DeleteMax end } BB11 { - [#"../red_black_tree.rs" 679 12 679 30] _26 <- Borrow.borrow_mut (RedBlackTree_Tree_Type.tree_node ( * self)); - [#"../red_black_tree.rs" 679 12 679 30] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ( ^ _26)) }; + [#"../red_black_tree.rs" 679 12 679 30] _26 <- Borrow.borrow_final (RedBlackTree_Tree_Type.tree_node ( * self)) (Borrow.inherit_id (Borrow.get_id self) 1); + [#"../red_black_tree.rs" 679 12 679 30] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ( ^ _26)) ; }; assume { inv1 ( ^ _26) }; [#"../red_black_tree.rs" 679 12 679 30] _25 <- ([#"../red_black_tree.rs" 679 12 679 30] as_mut0 _26); _26 <- any borrowed (Core_Option_Option_Type.t_option (RedBlackTree_Node_Type.t_node k v)); @@ -6967,7 +6967,7 @@ module RedBlackTree_Impl15_DeleteMax goto BB13 } BB13 { - [#"../red_black_tree.rs" 679 12 679 53] _24 <- { _24 with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * _24 in RedBlackTree_Node_Type.C_Node x0 ([#"../red_black_tree.rs" 679 48 679 53] RedBlackTree_Color_Type.C_Black) x2 x3 x4) }; + [#"../red_black_tree.rs" 679 12 679 53] _24 <- { _24 with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * _24 in RedBlackTree_Node_Type.C_Node x0 ([#"../red_black_tree.rs" 679 48 679 53] RedBlackTree_Color_Type.C_Black) x2 x3 x4) ; }; assert { [@expl:type invariant] inv3 _24 }; assume { resolve1 _24 }; assert { [@expl:type invariant] inv6 self }; @@ -7561,7 +7561,7 @@ module RedBlackTree_Impl15_DeleteMinRec } BB0 { [#"../red_black_tree.rs" 697 23 697 41] _15 <- Borrow.borrow_mut (RedBlackTree_Tree_Type.tree_node ( * self)); - [#"../red_black_tree.rs" 697 23 697 41] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ( ^ _15)) }; + [#"../red_black_tree.rs" 697 23 697 41] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ( ^ _15)) ; }; assume { inv0 ( ^ _15) }; [#"../red_black_tree.rs" 697 23 697 41] _14 <- ([#"../red_black_tree.rs" 697 23 697 41] as_mut0 _15); _15 <- any borrowed (Core_Option_Option_Type.t_option (RedBlackTree_Node_Type.t_node k v)); @@ -7573,8 +7573,8 @@ module RedBlackTree_Impl15_DeleteMinRec goto BB2 } BB2 { - [#"../red_black_tree.rs" 697 23 697 59] _12 <- Borrow.borrow_mut ( * _13); - [#"../red_black_tree.rs" 697 23 697 59] _13 <- { _13 with current = ^ _12 }; + [#"../red_black_tree.rs" 697 23 697 59] _12 <- Borrow.borrow_final ( * _13) (Borrow.get_id _13); + [#"../red_black_tree.rs" 697 23 697 59] _13 <- { _13 with current = ( ^ _12) ; }; assume { inv1 ( ^ _12) }; [#"../red_black_tree.rs" 697 23 697 59] node <- ([#"../red_black_tree.rs" 697 23 697 59] as_mut1 _12); _12 <- any borrowed (RedBlackTree_Node_Type.t_node k v); @@ -7594,11 +7594,11 @@ module RedBlackTree_Impl15_DeleteMinRec BB5 { assert { [@expl:type invariant] inv3 node }; assume { resolve1 node }; - [#"../red_black_tree.rs" 699 38 699 52] _22 <- Borrow.borrow_mut (RedBlackTree_Tree_Type.tree_node ( * self)); - [#"../red_black_tree.rs" 699 38 699 52] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ( ^ _22)) }; + [#"../red_black_tree.rs" 699 38 699 52] _22 <- Borrow.borrow_final (RedBlackTree_Tree_Type.tree_node ( * self)) (Borrow.inherit_id (Borrow.get_id self) 1); + [#"../red_black_tree.rs" 699 38 699 52] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ( ^ _22)) ; }; assume { inv0 ( ^ _22) }; - [#"../red_black_tree.rs" 699 38 699 52] _21 <- Borrow.borrow_mut ( * _22); - [#"../red_black_tree.rs" 699 38 699 52] _22 <- { _22 with current = ^ _21 }; + [#"../red_black_tree.rs" 699 38 699 52] _21 <- Borrow.borrow_final ( * _22) (Borrow.get_id _22); + [#"../red_black_tree.rs" 699 38 699 52] _22 <- { _22 with current = ( ^ _21) ; }; assume { inv0 ( ^ _21) }; [#"../red_black_tree.rs" 699 23 699 53] _20 <- ([#"../red_black_tree.rs" 699 23 699 53] take0 _21); _21 <- any borrowed (Core_Option_Option_Type.t_option (RedBlackTree_Node_Type.t_node k v)); @@ -7668,16 +7668,16 @@ module RedBlackTree_Impl15_DeleteMinRec goto BB13 } BB18 { - [#"../red_black_tree.rs" 703 19 703 39] _38 <- Borrow.borrow_mut ( * node); - [#"../red_black_tree.rs" 703 19 703 39] node <- { node with current = ^ _38 }; + [#"../red_black_tree.rs" 703 19 703 39] _38 <- Borrow.borrow_final ( * node) (Borrow.get_id node); + [#"../red_black_tree.rs" 703 19 703 39] node <- { node with current = ( ^ _38) ; }; assume { inv7 ( ^ _38) }; [#"../red_black_tree.rs" 703 19 703 39] _37 <- ([#"../red_black_tree.rs" 703 19 703 39] move_red_left0 _38); _38 <- any borrowed (RedBlackTree_Node_Type.t_node k v); goto BB19 } BB19 { - [#"../red_black_tree.rs" 703 19 703 39] _36 <- Borrow.borrow_mut ( * _37); - [#"../red_black_tree.rs" 703 19 703 39] _37 <- { _37 with current = ^ _36 }; + [#"../red_black_tree.rs" 703 19 703 39] _36 <- Borrow.borrow_final ( * _37) (Borrow.get_id _37); + [#"../red_black_tree.rs" 703 19 703 39] _37 <- { _37 with current = ( ^ _36) ; }; assume { inv7 ( ^ _36) }; assert { [@expl:type invariant] inv3 node }; assume { resolve1 node }; @@ -7694,15 +7694,15 @@ module RedBlackTree_Impl15_DeleteMinRec } BB21 { [#"../red_black_tree.rs" 705 16 705 42] _40 <- Borrow.borrow_mut (RedBlackTree_Node_Type.node_left ( * node)); - [#"../red_black_tree.rs" 705 16 705 42] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node ( ^ _40) x1 x2 x3 x4) }; + [#"../red_black_tree.rs" 705 16 705 42] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node ( ^ _40) x1 x2 x3 x4) ; }; assume { inv8 ( ^ _40) }; [#"../red_black_tree.rs" 705 16 705 42] r <- ([#"../red_black_tree.rs" 705 16 705 42] delete_min_rec _40); _40 <- any borrowed (RedBlackTree_Tree_Type.t_tree k v); goto BB22 } BB22 { - [#"../red_black_tree.rs" 706 8 706 22] _42 <- Borrow.borrow_mut ( * node); - [#"../red_black_tree.rs" 706 8 706 22] node <- { node with current = ^ _42 }; + [#"../red_black_tree.rs" 706 8 706 22] _42 <- Borrow.borrow_final ( * node) (Borrow.get_id node); + [#"../red_black_tree.rs" 706 8 706 22] node <- { node with current = ( ^ _42) ; }; assume { inv7 ( ^ _42) }; [#"../red_black_tree.rs" 706 8 706 22] _41 <- ([#"../red_black_tree.rs" 706 8 706 22] balance0 _42); _42 <- any borrowed (RedBlackTree_Node_Type.t_node k v); @@ -8202,7 +8202,7 @@ module RedBlackTree_Impl15_DeleteMin BB1 { assume { resolve0 _5 }; [#"../red_black_tree.rs" 722 28 722 42] _8 <- Borrow.borrow_mut (RedBlackTree_Tree_Type.tree_node ( * self)); - [#"../red_black_tree.rs" 722 28 722 42] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ( ^ _8)) }; + [#"../red_black_tree.rs" 722 28 722 42] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ( ^ _8)) ; }; assume { inv0 ( ^ _8) }; switch ( * _8) | Core_Option_Option_Type.C_Some _ -> goto BB2 @@ -8213,8 +8213,8 @@ module RedBlackTree_Impl15_DeleteMin goto BB3 } BB3 { - [#"../red_black_tree.rs" 722 20 722 24] node <- Borrow.borrow_mut (Core_Option_Option_Type.some_0 ( * _8)); - [#"../red_black_tree.rs" 722 20 722 24] _8 <- { _8 with current = (let Core_Option_Option_Type.C_Some x0 = * _8 in Core_Option_Option_Type.C_Some ( ^ node)) }; + [#"../red_black_tree.rs" 722 20 722 24] node <- Borrow.borrow_final (Core_Option_Option_Type.some_0 ( * _8)) (Borrow.inherit_id (Borrow.get_id _8) 1); + [#"../red_black_tree.rs" 722 20 722 24] _8 <- { _8 with current = (let Core_Option_Option_Type.C_Some x0 = * _8 in Core_Option_Option_Type.C_Some ( ^ node)) ; }; assume { inv1 ( ^ node) }; [#"../red_black_tree.rs" 723 16 723 34] _12 <- ([#"../red_black_tree.rs" 723 16 723 34] is_red0 ([#"../red_black_tree.rs" 723 16 723 34] RedBlackTree_Node_Type.node_left ( * node))); goto BB4 @@ -8226,7 +8226,7 @@ module RedBlackTree_Impl15_DeleteMin end } BB5 { - [#"../red_black_tree.rs" 724 16 724 32] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node x0 ([#"../red_black_tree.rs" 724 29 724 32] RedBlackTree_Color_Type.C_Red) x2 x3 x4) }; + [#"../red_black_tree.rs" 724 16 724 32] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node x0 ([#"../red_black_tree.rs" 724 29 724 32] RedBlackTree_Color_Type.C_Red) x2 x3 x4) ; }; assert { [@expl:type invariant] inv2 node }; assume { resolve1 node }; assert { [@expl:type invariant] inv3 _8 }; @@ -8244,7 +8244,7 @@ module RedBlackTree_Impl15_DeleteMin } BB7 { [#"../red_black_tree.rs" 729 16 729 37] _17 <- Borrow.borrow_mut ( * self); - [#"../red_black_tree.rs" 729 16 729 37] self <- { self with current = ^ _17 }; + [#"../red_black_tree.rs" 729 16 729 37] self <- { self with current = ( ^ _17) ; }; assume { inv4 ( ^ _17) }; [#"../red_black_tree.rs" 729 16 729 37] r <- ([#"../red_black_tree.rs" 729 16 729 37] delete_min_rec0 _17); _17 <- any borrowed (RedBlackTree_Tree_Type.t_tree k v); @@ -8269,8 +8269,8 @@ module RedBlackTree_Impl15_DeleteMin end } BB11 { - [#"../red_black_tree.rs" 731 12 731 30] _24 <- Borrow.borrow_mut (RedBlackTree_Tree_Type.tree_node ( * self)); - [#"../red_black_tree.rs" 731 12 731 30] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ( ^ _24)) }; + [#"../red_black_tree.rs" 731 12 731 30] _24 <- Borrow.borrow_final (RedBlackTree_Tree_Type.tree_node ( * self)) (Borrow.inherit_id (Borrow.get_id self) 1); + [#"../red_black_tree.rs" 731 12 731 30] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ( ^ _24)) ; }; assume { inv0 ( ^ _24) }; [#"../red_black_tree.rs" 731 12 731 30] _23 <- ([#"../red_black_tree.rs" 731 12 731 30] as_mut0 _24); _24 <- any borrowed (Core_Option_Option_Type.t_option (RedBlackTree_Node_Type.t_node k v)); @@ -8282,7 +8282,7 @@ module RedBlackTree_Impl15_DeleteMin goto BB13 } BB13 { - [#"../red_black_tree.rs" 731 12 731 53] _22 <- { _22 with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * _22 in RedBlackTree_Node_Type.C_Node x0 ([#"../red_black_tree.rs" 731 48 731 53] RedBlackTree_Color_Type.C_Black) x2 x3 x4) }; + [#"../red_black_tree.rs" 731 12 731 53] _22 <- { _22 with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * _22 in RedBlackTree_Node_Type.C_Node x0 ([#"../red_black_tree.rs" 731 48 731 53] RedBlackTree_Color_Type.C_Black) x2 x3 x4) ; }; assert { [@expl:type invariant] inv2 _22 }; assume { resolve1 _22 }; assert { [@expl:type invariant] inv5 self }; @@ -9129,7 +9129,7 @@ module RedBlackTree_Impl15_DeleteRec } BB0 { [#"../red_black_tree.rs" 750 23 750 41] _16 <- Borrow.borrow_mut (RedBlackTree_Tree_Type.tree_node ( * self)); - [#"../red_black_tree.rs" 750 23 750 41] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ( ^ _16)) }; + [#"../red_black_tree.rs" 750 23 750 41] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ( ^ _16)) ; }; assume { inv0 ( ^ _16) }; [#"../red_black_tree.rs" 750 23 750 41] _15 <- ([#"../red_black_tree.rs" 750 23 750 41] as_mut0 _16); _16 <- any borrowed (Core_Option_Option_Type.t_option (RedBlackTree_Node_Type.t_node k v)); @@ -9141,8 +9141,8 @@ module RedBlackTree_Impl15_DeleteRec goto BB2 } BB2 { - [#"../red_black_tree.rs" 750 23 750 59] _13 <- Borrow.borrow_mut ( * _14); - [#"../red_black_tree.rs" 750 23 750 59] _14 <- { _14 with current = ^ _13 }; + [#"../red_black_tree.rs" 750 23 750 59] _13 <- Borrow.borrow_final ( * _14) (Borrow.get_id _14); + [#"../red_black_tree.rs" 750 23 750 59] _14 <- { _14 with current = ( ^ _13) ; }; assume { inv1 ( ^ _13) }; [#"../red_black_tree.rs" 750 23 750 59] node <- ([#"../red_black_tree.rs" 750 23 750 59] as_mut1 _13); _13 <- any borrowed (RedBlackTree_Node_Type.t_node k v); @@ -9232,16 +9232,16 @@ module RedBlackTree_Impl15_DeleteRec goto BB13 } BB18 { - [#"../red_black_tree.rs" 757 27 757 47] _40 <- Borrow.borrow_mut ( * node); - [#"../red_black_tree.rs" 757 27 757 47] node <- { node with current = ^ _40 }; + [#"../red_black_tree.rs" 757 27 757 47] _40 <- Borrow.borrow_final ( * node) (Borrow.get_id node); + [#"../red_black_tree.rs" 757 27 757 47] node <- { node with current = ( ^ _40) ; }; assume { inv5 ( ^ _40) }; [#"../red_black_tree.rs" 757 27 757 47] _39 <- ([#"../red_black_tree.rs" 757 27 757 47] move_red_left0 _40); _40 <- any borrowed (RedBlackTree_Node_Type.t_node k v); goto BB19 } BB19 { - [#"../red_black_tree.rs" 757 27 757 47] _38 <- Borrow.borrow_mut ( * _39); - [#"../red_black_tree.rs" 757 27 757 47] _39 <- { _39 with current = ^ _38 }; + [#"../red_black_tree.rs" 757 27 757 47] _38 <- Borrow.borrow_final ( * _39) (Borrow.get_id _39); + [#"../red_black_tree.rs" 757 27 757 47] _39 <- { _39 with current = ( ^ _38) ; }; assume { inv5 ( ^ _38) }; assert { [@expl:type invariant] inv6 node }; assume { resolve3 node }; @@ -9258,7 +9258,7 @@ module RedBlackTree_Impl15_DeleteRec } BB21 { [#"../red_black_tree.rs" 759 20 759 45] _42 <- Borrow.borrow_mut (RedBlackTree_Node_Type.node_left ( * node)); - [#"../red_black_tree.rs" 759 20 759 45] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node ( ^ _42) x1 x2 x3 x4) }; + [#"../red_black_tree.rs" 759 20 759 45] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node ( ^ _42) x1 x2 x3 x4) ; }; assume { inv7 ( ^ _42) }; assert { [@expl:type invariant] inv3 key }; assume { resolve1 key }; @@ -9286,7 +9286,7 @@ module RedBlackTree_Impl15_DeleteRec } BB27 { [#"../red_black_tree.rs" 763 20 763 39] _48 <- Borrow.borrow_mut ( * node); - [#"../red_black_tree.rs" 763 20 763 39] node <- { node with current = ^ _48 }; + [#"../red_black_tree.rs" 763 20 763 39] node <- { node with current = ( ^ _48) ; }; assume { inv5 ( ^ _48) }; [#"../red_black_tree.rs" 763 20 763 39] _47 <- ([#"../red_black_tree.rs" 763 20 763 39] rotate_right0 _48); _48 <- any borrowed (RedBlackTree_Node_Type.t_node k v); @@ -9294,7 +9294,7 @@ module RedBlackTree_Impl15_DeleteRec } BB28 { [#"../red_black_tree.rs" 764 24 764 50] _50 <- Borrow.borrow_mut (RedBlackTree_Node_Type.node_right ( * node)); - [#"../red_black_tree.rs" 764 24 764 50] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 ( ^ _50)) }; + [#"../red_black_tree.rs" 764 24 764 50] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 ( ^ _50)) ; }; assume { inv7 ( ^ _50) }; assert { [@expl:type invariant] inv3 key }; assume { resolve1 key }; @@ -9344,11 +9344,11 @@ module RedBlackTree_Impl15_DeleteRec goto BB73 } BB38 { - [#"../red_black_tree.rs" 770 50 770 64] _62 <- Borrow.borrow_mut (RedBlackTree_Tree_Type.tree_node ( * self)); - [#"../red_black_tree.rs" 770 50 770 64] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ( ^ _62)) }; + [#"../red_black_tree.rs" 770 50 770 64] _62 <- Borrow.borrow_final (RedBlackTree_Tree_Type.tree_node ( * self)) (Borrow.inherit_id (Borrow.get_id self) 1); + [#"../red_black_tree.rs" 770 50 770 64] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ( ^ _62)) ; }; assume { inv0 ( ^ _62) }; - [#"../red_black_tree.rs" 770 50 770 64] _61 <- Borrow.borrow_mut ( * _62); - [#"../red_black_tree.rs" 770 50 770 64] _62 <- { _62 with current = ^ _61 }; + [#"../red_black_tree.rs" 770 50 770 64] _61 <- Borrow.borrow_final ( * _62) (Borrow.get_id _62); + [#"../red_black_tree.rs" 770 50 770 64] _62 <- { _62 with current = ( ^ _61) ; }; assume { inv0 ( ^ _61) }; [#"../red_black_tree.rs" 770 35 770 65] _60 <- ([#"../red_black_tree.rs" 770 35 770 65] take0 _61); _61 <- any borrowed (Core_Option_Option_Type.t_option (RedBlackTree_Node_Type.t_node k v)); @@ -9402,16 +9402,16 @@ module RedBlackTree_Impl15_DeleteRec end } BB48 { - [#"../red_black_tree.rs" 774 31 774 52] _75 <- Borrow.borrow_mut ( * node); - [#"../red_black_tree.rs" 774 31 774 52] node <- { node with current = ^ _75 }; + [#"../red_black_tree.rs" 774 31 774 52] _75 <- Borrow.borrow_final ( * node) (Borrow.get_id node); + [#"../red_black_tree.rs" 774 31 774 52] node <- { node with current = ( ^ _75) ; }; assume { inv5 ( ^ _75) }; [#"../red_black_tree.rs" 774 31 774 52] _74 <- ([#"../red_black_tree.rs" 774 31 774 52] move_red_right0 _75); _75 <- any borrowed (RedBlackTree_Node_Type.t_node k v); goto BB49 } BB49 { - [#"../red_black_tree.rs" 774 31 774 52] _73 <- Borrow.borrow_mut ( * _74); - [#"../red_black_tree.rs" 774 31 774 52] _74 <- { _74 with current = ^ _73 }; + [#"../red_black_tree.rs" 774 31 774 52] _73 <- Borrow.borrow_final ( * _74) (Borrow.get_id _74); + [#"../red_black_tree.rs" 774 31 774 52] _74 <- { _74 with current = ( ^ _73) ; }; assume { inv5 ( ^ _73) }; assert { [@expl:type invariant] inv6 node }; assume { resolve3 node }; @@ -9439,7 +9439,7 @@ module RedBlackTree_Impl15_DeleteRec assert { [@expl:type invariant] inv3 key }; assume { resolve1 key }; [#"../red_black_tree.rs" 777 37 777 64] _78 <- Borrow.borrow_mut (RedBlackTree_Node_Type.node_right ( * node)); - [#"../red_black_tree.rs" 777 37 777 64] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 ( ^ _78)) }; + [#"../red_black_tree.rs" 777 37 777 64] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 ( ^ _78)) ; }; assume { inv7 ( ^ _78) }; [#"../red_black_tree.rs" 777 37 777 64] kv <- ([#"../red_black_tree.rs" 777 37 777 64] delete_min_rec0 _78); _78 <- any borrowed (RedBlackTree_Tree_Type.t_tree k v); @@ -9452,16 +9452,16 @@ module RedBlackTree_Impl15_DeleteRec BB55 { assume { resolve5 _79 }; [#"../red_black_tree.rs" 779 39 779 52] _83 <- Borrow.borrow_mut (RedBlackTree_Node_Type.node_key ( * node)); - [#"../red_black_tree.rs" 779 39 779 52] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node x0 x1 ( ^ _83) x3 x4) }; + [#"../red_black_tree.rs" 779 39 779 52] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node x0 x1 ( ^ _83) x3 x4) ; }; assume { inv9 ( ^ _83) }; - [#"../red_black_tree.rs" 779 39 779 52] _82 <- Borrow.borrow_mut ( * _83); - [#"../red_black_tree.rs" 779 39 779 52] _83 <- { _83 with current = ^ _82 }; + [#"../red_black_tree.rs" 779 39 779 52] _82 <- Borrow.borrow_final ( * _83) (Borrow.get_id _83); + [#"../red_black_tree.rs" 779 39 779 52] _83 <- { _83 with current = ( ^ _82) ; }; assume { inv9 ( ^ _82) }; [#"../red_black_tree.rs" 779 54 779 63] _85 <- Borrow.borrow_mut (let (a, _) = kv in a); [#"../red_black_tree.rs" 779 54 779 63] kv <- (let (x0, x1) = kv in ( ^ _85, x1)); assume { inv9 ( ^ _85) }; - [#"../red_black_tree.rs" 779 54 779 63] _84 <- Borrow.borrow_mut ( * _85); - [#"../red_black_tree.rs" 779 54 779 63] _85 <- { _85 with current = ^ _84 }; + [#"../red_black_tree.rs" 779 54 779 63] _84 <- Borrow.borrow_final ( * _85) (Borrow.get_id _85); + [#"../red_black_tree.rs" 779 54 779 63] _85 <- { _85 with current = ( ^ _84) ; }; assume { inv9 ( ^ _84) }; [#"../red_black_tree.rs" 779 24 779 64] _81 <- ([#"../red_black_tree.rs" 779 24 779 64] swap0 _82 _84); _82 <- any borrowed k; @@ -9474,16 +9474,16 @@ module RedBlackTree_Impl15_DeleteRec assert { [@expl:type invariant] inv10 _83 }; assume { resolve6 _83 }; [#"../red_black_tree.rs" 780 39 780 52] _88 <- Borrow.borrow_mut (RedBlackTree_Node_Type.node_val ( * node)); - [#"../red_black_tree.rs" 780 39 780 52] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node x0 x1 x2 ( ^ _88) x4) }; + [#"../red_black_tree.rs" 780 39 780 52] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node x0 x1 x2 ( ^ _88) x4) ; }; assume { inv11 ( ^ _88) }; - [#"../red_black_tree.rs" 780 39 780 52] _87 <- Borrow.borrow_mut ( * _88); - [#"../red_black_tree.rs" 780 39 780 52] _88 <- { _88 with current = ^ _87 }; + [#"../red_black_tree.rs" 780 39 780 52] _87 <- Borrow.borrow_final ( * _88) (Borrow.get_id _88); + [#"../red_black_tree.rs" 780 39 780 52] _88 <- { _88 with current = ( ^ _87) ; }; assume { inv11 ( ^ _87) }; [#"../red_black_tree.rs" 780 54 780 63] _90 <- Borrow.borrow_mut (let (_, a) = kv in a); [#"../red_black_tree.rs" 780 54 780 63] kv <- (let (x0, x1) = kv in (x0, ^ _90)); assume { inv11 ( ^ _90) }; - [#"../red_black_tree.rs" 780 54 780 63] _89 <- Borrow.borrow_mut ( * _90); - [#"../red_black_tree.rs" 780 54 780 63] _90 <- { _90 with current = ^ _89 }; + [#"../red_black_tree.rs" 780 54 780 63] _89 <- Borrow.borrow_final ( * _90) (Borrow.get_id _90); + [#"../red_black_tree.rs" 780 54 780 63] _90 <- { _90 with current = ( ^ _89) ; }; assume { inv11 ( ^ _89) }; [#"../red_black_tree.rs" 780 24 780 64] _86 <- ([#"../red_black_tree.rs" 780 24 780 64] swap1 _87 _89); _87 <- any borrowed v; @@ -9514,7 +9514,7 @@ module RedBlackTree_Impl15_DeleteRec } BB63 { [#"../red_black_tree.rs" 783 28 783 54] _94 <- Borrow.borrow_mut (RedBlackTree_Node_Type.node_right ( * node)); - [#"../red_black_tree.rs" 783 28 783 54] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 ( ^ _94)) }; + [#"../red_black_tree.rs" 783 28 783 54] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 ( ^ _94)) ; }; assume { inv7 ( ^ _94) }; assert { [@expl:type invariant] inv3 key }; assume { resolve1 key }; @@ -9538,8 +9538,8 @@ module RedBlackTree_Impl15_DeleteRec goto BB69 } BB69 { - [#"../red_black_tree.rs" 788 8 788 22] _97 <- Borrow.borrow_mut ( * node); - [#"../red_black_tree.rs" 788 8 788 22] node <- { node with current = ^ _97 }; + [#"../red_black_tree.rs" 788 8 788 22] _97 <- Borrow.borrow_final ( * node) (Borrow.get_id node); + [#"../red_black_tree.rs" 788 8 788 22] node <- { node with current = ( ^ _97) ; }; assume { inv5 ( ^ _97) }; [#"../red_black_tree.rs" 788 8 788 22] _96 <- ([#"../red_black_tree.rs" 788 8 788 22] balance0 _97); _97 <- any borrowed (RedBlackTree_Node_Type.t_node k v); @@ -10063,7 +10063,7 @@ module RedBlackTree_Impl15_Delete BB1 { assume { resolve0 _7 }; [#"../red_black_tree.rs" 803 28 803 42] _10 <- Borrow.borrow_mut (RedBlackTree_Tree_Type.tree_node ( * self)); - [#"../red_black_tree.rs" 803 28 803 42] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ( ^ _10)) }; + [#"../red_black_tree.rs" 803 28 803 42] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ( ^ _10)) ; }; assume { inv0 ( ^ _10) }; switch ( * _10) | Core_Option_Option_Type.C_Some _ -> goto BB2 @@ -10074,8 +10074,8 @@ module RedBlackTree_Impl15_Delete goto BB3 } BB3 { - [#"../red_black_tree.rs" 803 20 803 24] node <- Borrow.borrow_mut (Core_Option_Option_Type.some_0 ( * _10)); - [#"../red_black_tree.rs" 803 20 803 24] _10 <- { _10 with current = (let Core_Option_Option_Type.C_Some x0 = * _10 in Core_Option_Option_Type.C_Some ( ^ node)) }; + [#"../red_black_tree.rs" 803 20 803 24] node <- Borrow.borrow_final (Core_Option_Option_Type.some_0 ( * _10)) (Borrow.inherit_id (Borrow.get_id _10) 1); + [#"../red_black_tree.rs" 803 20 803 24] _10 <- { _10 with current = (let Core_Option_Option_Type.C_Some x0 = * _10 in Core_Option_Option_Type.C_Some ( ^ node)) ; }; assume { inv1 ( ^ node) }; [#"../red_black_tree.rs" 804 16 804 34] _14 <- ([#"../red_black_tree.rs" 804 16 804 34] is_red0 ([#"../red_black_tree.rs" 804 16 804 34] RedBlackTree_Node_Type.node_left ( * node))); goto BB4 @@ -10087,7 +10087,7 @@ module RedBlackTree_Impl15_Delete end } BB5 { - [#"../red_black_tree.rs" 805 16 805 32] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node x0 ([#"../red_black_tree.rs" 805 29 805 32] RedBlackTree_Color_Type.C_Red) x2 x3 x4) }; + [#"../red_black_tree.rs" 805 16 805 32] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node x0 ([#"../red_black_tree.rs" 805 29 805 32] RedBlackTree_Color_Type.C_Red) x2 x3 x4) ; }; assert { [@expl:type invariant] inv2 node }; assume { resolve1 node }; assert { [@expl:type invariant] inv3 _10 }; @@ -10105,7 +10105,7 @@ module RedBlackTree_Impl15_Delete } BB7 { [#"../red_black_tree.rs" 810 16 810 36] _19 <- Borrow.borrow_mut ( * self); - [#"../red_black_tree.rs" 810 16 810 36] self <- { self with current = ^ _19 }; + [#"../red_black_tree.rs" 810 16 810 36] self <- { self with current = ( ^ _19) ; }; assume { inv4 ( ^ _19) }; assert { [@expl:type invariant] inv5 key }; assume { resolve3 key }; @@ -10134,8 +10134,8 @@ module RedBlackTree_Impl15_Delete end } BB11 { - [#"../red_black_tree.rs" 812 12 812 30] _27 <- Borrow.borrow_mut (RedBlackTree_Tree_Type.tree_node ( * self)); - [#"../red_black_tree.rs" 812 12 812 30] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ( ^ _27)) }; + [#"../red_black_tree.rs" 812 12 812 30] _27 <- Borrow.borrow_final (RedBlackTree_Tree_Type.tree_node ( * self)) (Borrow.inherit_id (Borrow.get_id self) 1); + [#"../red_black_tree.rs" 812 12 812 30] self <- { self with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * self in RedBlackTree_Tree_Type.C_Tree ( ^ _27)) ; }; assume { inv0 ( ^ _27) }; [#"../red_black_tree.rs" 812 12 812 30] _26 <- ([#"../red_black_tree.rs" 812 12 812 30] as_mut0 _27); _27 <- any borrowed (Core_Option_Option_Type.t_option (RedBlackTree_Node_Type.t_node k v)); @@ -10147,7 +10147,7 @@ module RedBlackTree_Impl15_Delete goto BB13 } BB13 { - [#"../red_black_tree.rs" 812 12 812 53] _25 <- { _25 with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * _25 in RedBlackTree_Node_Type.C_Node x0 ([#"../red_black_tree.rs" 812 48 812 53] RedBlackTree_Color_Type.C_Black) x2 x3 x4) }; + [#"../red_black_tree.rs" 812 12 812 53] _25 <- { _25 with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * _25 in RedBlackTree_Node_Type.C_Node x0 ([#"../red_black_tree.rs" 812 48 812 53] RedBlackTree_Color_Type.C_Black) x2 x3 x4) ; }; assert { [@expl:type invariant] inv2 _25 }; assume { resolve1 _25 }; assert { [@expl:type invariant] inv6 self }; @@ -11175,8 +11175,8 @@ module RedBlackTree_Impl15_GetMut goto BB4 } BB4 { - [#"../red_black_tree.rs" 862 31 862 45] _23 <- Borrow.borrow_mut (RedBlackTree_Tree_Type.tree_node ( * tree)); - [#"../red_black_tree.rs" 862 31 862 45] tree <- { tree with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * tree in RedBlackTree_Tree_Type.C_Tree ( ^ _23)) }; + [#"../red_black_tree.rs" 862 31 862 45] _23 <- Borrow.borrow_final (RedBlackTree_Tree_Type.tree_node ( * tree)) (Borrow.inherit_id (Borrow.get_id tree) 1); + [#"../red_black_tree.rs" 862 31 862 45] tree <- { tree with current = (let RedBlackTree_Tree_Type.C_Tree x0 = * tree in RedBlackTree_Tree_Type.C_Tree ( ^ _23)) ; }; assume { inv3 ( ^ _23) }; switch ( * _23) | Core_Option_Option_Type.C_Some _ -> goto BB5 @@ -11187,8 +11187,8 @@ module RedBlackTree_Impl15_GetMut goto BB6 } BB6 { - [#"../red_black_tree.rs" 862 23 862 27] node <- Borrow.borrow_mut (Core_Option_Option_Type.some_0 ( * _23)); - [#"../red_black_tree.rs" 862 23 862 27] _23 <- { _23 with current = (let Core_Option_Option_Type.C_Some x0 = * _23 in Core_Option_Option_Type.C_Some ( ^ node)) }; + [#"../red_black_tree.rs" 862 23 862 27] node <- Borrow.borrow_final (Core_Option_Option_Type.some_0 ( * _23)) (Borrow.inherit_id (Borrow.get_id _23) 1); + [#"../red_black_tree.rs" 862 23 862 27] _23 <- { _23 with current = (let Core_Option_Option_Type.C_Some x0 = * _23 in Core_Option_Option_Type.C_Some ( ^ node)) ; }; assume { inv4 ( ^ node) }; [#"../red_black_tree.rs" 863 26 863 35] _29 <- ([#"../red_black_tree.rs" 863 26 863 35] RedBlackTree_Node_Type.node_key ( * node)); assert { [@expl:type invariant] inv5 _29 }; @@ -11211,10 +11211,10 @@ module RedBlackTree_Impl15_GetMut } BB10 { [#"../red_black_tree.rs" 866 34 866 49] _37 <- Borrow.borrow_mut (RedBlackTree_Node_Type.node_right ( * node)); - [#"../red_black_tree.rs" 866 34 866 49] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 ( ^ _37)) }; + [#"../red_black_tree.rs" 866 34 866 49] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 ( ^ _37)) ; }; assume { inv6 ( ^ _37) }; - [#"../red_black_tree.rs" 866 34 866 49] _36 <- Borrow.borrow_mut ( * _37); - [#"../red_black_tree.rs" 866 34 866 49] _37 <- { _37 with current = ^ _36 }; + [#"../red_black_tree.rs" 866 34 866 49] _36 <- Borrow.borrow_final ( * _37) (Borrow.get_id _37); + [#"../red_black_tree.rs" 866 34 866 49] _37 <- { _37 with current = ( ^ _36) ; }; assume { inv6 ( ^ _36) }; assert { [@expl:type invariant] inv7 tree }; assume { resolve3 tree }; @@ -11239,10 +11239,10 @@ module RedBlackTree_Impl15_GetMut } BB12 { [#"../red_black_tree.rs" 864 31 864 45] _32 <- Borrow.borrow_mut (RedBlackTree_Node_Type.node_left ( * node)); - [#"../red_black_tree.rs" 864 31 864 45] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node ( ^ _32) x1 x2 x3 x4) }; + [#"../red_black_tree.rs" 864 31 864 45] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node ( ^ _32) x1 x2 x3 x4) ; }; assume { inv6 ( ^ _32) }; - [#"../red_black_tree.rs" 864 31 864 45] _31 <- Borrow.borrow_mut ( * _32); - [#"../red_black_tree.rs" 864 31 864 45] _32 <- { _32 with current = ^ _31 }; + [#"../red_black_tree.rs" 864 31 864 45] _31 <- Borrow.borrow_final ( * _32) (Borrow.get_id _32); + [#"../red_black_tree.rs" 864 31 864 45] _32 <- { _32 with current = ( ^ _31) ; }; assume { inv6 ( ^ _31) }; assert { [@expl:type invariant] inv7 tree }; assume { resolve3 tree }; @@ -11257,10 +11257,10 @@ module RedBlackTree_Impl15_GetMut assert { [@expl:type invariant] inv5 key }; assume { resolve2 key }; [#"../red_black_tree.rs" 865 37 865 50] _35 <- Borrow.borrow_mut (RedBlackTree_Node_Type.node_val ( * node)); - [#"../red_black_tree.rs" 865 37 865 50] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node x0 x1 x2 ( ^ _35) x4) }; + [#"../red_black_tree.rs" 865 37 865 50] node <- { node with current = (let RedBlackTree_Node_Type.C_Node x0 x1 x2 x3 x4 = * node in RedBlackTree_Node_Type.C_Node x0 x1 x2 ( ^ _35) x4) ; }; assume { inv1 ( ^ _35) }; - [#"../red_black_tree.rs" 865 37 865 50] _34 <- Borrow.borrow_mut ( * _35); - [#"../red_black_tree.rs" 865 37 865 50] _35 <- { _35 with current = ^ _34 }; + [#"../red_black_tree.rs" 865 37 865 50] _34 <- Borrow.borrow_final ( * _35) (Borrow.get_id _35); + [#"../red_black_tree.rs" 865 37 865 50] _35 <- { _35 with current = ( ^ _34) ; }; assume { inv1 ( ^ _34) }; [#"../red_black_tree.rs" 865 32 865 51] _0 <- ([#"../red_black_tree.rs" 865 32 865 51] Core_Option_Option_Type.C_Some _34); _34 <- any borrowed v; diff --git a/creusot/tests/should_succeed/red_black_tree/why3session.xml b/creusot/tests/should_succeed/red_black_tree/why3session.xml index cc40403129..3968f923ef 100644 --- a/creusot/tests/should_succeed/red_black_tree/why3session.xml +++ b/creusot/tests/should_succeed/red_black_tree/why3session.xml @@ -2,17 +2,16 @@ - + - - + @@ -79,73 +78,73 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -157,73 +156,73 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -232,55 +231,55 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -295,18 +294,18 @@ - + - + - + @@ -327,88 +326,79 @@ - + - + - + - + - + - + - - + + - + - + - + - + - + - + - + - - - - - - - + - - - - + - - + + - + - + - + - + - - + + - - + + @@ -418,6 +408,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -431,24 +479,27 @@ - + + + + - - + + - + - + - - + + - - + + @@ -456,44 +507,60 @@ - - - - + - + + + + + + + + + + + + + + + - - - - - + + - + - + - - + + + + + + + + + + - - + + @@ -501,24 +568,13 @@ + + + - - - - - - - - - - - - - - - + @@ -541,98 +597,108 @@ - - - - + - - + + - + - + - - + + - - + + - - + + - - + + - - + + - - + + + + + - + - + + + + + + + + - + + + + - + - - + + - + - + - - + + - + - + - - + + - - + + - - + + - - + + - - + + - - + + @@ -640,76 +706,66 @@ - - + + - - - - - - - - - - - + + + + - + - - + + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - - - + @@ -724,69 +780,49 @@ - - - - + - - - - - - - - - - - - - - - - - - - + + - + - - + + - + - + - - + + - + - + - - + + - - + + - - + + - - + + - - + + - - + + @@ -796,62 +832,62 @@ + + + + + + - - - - - - - + - - + + - + - - + + - + - + - - + + - + - + - - + + - - + + - - + + - - + + - - + + - - + + @@ -861,8 +897,28 @@ + + + + + + + + + + + + + + + + + + + + @@ -876,104 +932,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + - + - + - + - - + + - + - + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - @@ -987,160 +1043,112 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - + - + - - + + + + + + + + + + + + + - - + + - - + + - - + + - - + + - - + + - - + + + + + - - - - - + + - + - + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - + + - - + + - - + + - - + + + + + @@ -1150,109 +1158,157 @@ - - - - - + + - + - + - + - - + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + - - + + - - + + - - + + + + + - - - - - + + - + - + - + - - + + - + - + - - - - - - - - - - - - - + + - - + + - - + + - - + + - - + + - - + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + @@ -1277,80 +1333,22 @@ - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - - + + - - + + @@ -1360,10 +1358,19 @@ + + + + + + + + + @@ -1373,32 +1380,41 @@ - + + + + + + + + + + + + + + + + + + - - + + - + - + - - - - - - - - - - + + - - + + @@ -1406,58 +1422,38 @@ - - - - - - - - - - - - - - - - - - + - + - - - - - + + - + - + - - + + - - + + @@ -1465,10 +1461,13 @@ + + + - + @@ -1488,91 +1487,91 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -1581,7 +1580,7 @@ - + @@ -1592,7 +1591,7 @@ - + @@ -1605,18 +1604,18 @@ - + + + + + - - - - - + @@ -1627,14 +1626,14 @@ - + - + @@ -1643,15 +1642,15 @@ - - - - - + + + + + @@ -1659,14 +1658,14 @@ - + - + @@ -1677,14 +1676,14 @@ - + - + @@ -1699,7 +1698,7 @@ - + @@ -1710,7 +1709,7 @@ - + @@ -1723,14 +1722,14 @@ - + - + @@ -1743,14 +1742,14 @@ - + - + @@ -1761,21 +1760,21 @@ - + - + - + @@ -1784,132 +1783,132 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + - + - - + + - - - - - - - + - - + + + + + - + - + + + + - + - - + + - - - @@ -1917,14 +1916,14 @@ - + - + @@ -1939,7 +1938,7 @@ - + @@ -1950,7 +1949,7 @@ - + @@ -1961,15 +1960,15 @@ + + + - - + + - - - @@ -1977,33 +1976,33 @@ + + + - + - - + + - - - - + - + - + @@ -2017,115 +2016,115 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2134,18 +2133,18 @@ - + - + + - - + @@ -2154,10 +2153,10 @@ - + - + @@ -2183,25 +2182,25 @@ - + - + - + - + - + - + - + @@ -2210,61 +2209,61 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2273,127 +2272,127 @@ - + - + - + - + - + - + - + - + - + - - - - - + + - - + + + + + - + - - - - - + + - - + + + + + - + - + - + - + - + - + - + - + - + + + + - - + + - - + + - - - @@ -2401,20 +2400,20 @@ - + - + - + - + @@ -2425,47 +2424,39 @@ + + + - - - - - - + + - - - + + + - + - - + + - - - - - - + + - - + + - - - @@ -2477,14 +2468,18 @@ - + + + + + - + @@ -2495,27 +2490,20 @@ - + - + - - - - - - - - + - + @@ -2528,67 +2516,55 @@ - - - - - - - - - - - - - - + - + - - - - + - - + + - - + + + + + + + + + - - - - - - - + - - - - - + + + + + + + + @@ -2596,27 +2572,24 @@ - + + + + + - + - + - - - - - - - - + @@ -2629,24 +2602,27 @@ - + - - - - - + - + + + + + + + + - + @@ -2657,27 +2633,27 @@ - + - + - + - + - + @@ -2689,86 +2665,86 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2777,10 +2753,10 @@ - + - + @@ -2793,10 +2769,10 @@ - + - + @@ -2810,143 +2786,143 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -2957,10 +2933,10 @@ - + - + @@ -2971,7 +2947,7 @@ - + @@ -2982,14 +2958,14 @@ - + - + @@ -3004,7 +2980,7 @@ - + @@ -3015,7 +2991,7 @@ - + @@ -3024,10 +3000,10 @@ - + - + @@ -3042,21 +3018,21 @@ - + - + - + @@ -3067,15 +3043,15 @@ - + - + - + @@ -3086,19 +3062,19 @@ - + - + - + @@ -3109,10 +3085,10 @@ - + - + @@ -3124,69 +3100,69 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3199,7 +3175,7 @@ - + @@ -3218,10 +3194,10 @@ - + - + @@ -3236,14 +3212,14 @@ - + - + @@ -3260,10 +3236,10 @@ - + - + @@ -3277,85 +3253,85 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3364,21 +3340,21 @@ - + - + - + - + - + @@ -3389,133 +3365,133 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -3524,23 +3500,23 @@ - + - + - + - + - + @@ -3549,39 +3525,39 @@ - + - + - + - + - + - + - + - + - + @@ -3590,7 +3566,7 @@ - + @@ -3607,10 +3583,10 @@ - + - + @@ -3631,12 +3607,12 @@ - + - + @@ -3651,10 +3627,10 @@ - + - + @@ -3665,39 +3641,39 @@ - + - + - + - + - + - + - + @@ -3706,64 +3682,64 @@ - + - + - + - + - + - + - + - - - - - + + + + + - + - + - + @@ -3772,10 +3748,10 @@ - + - + @@ -3786,32 +3762,32 @@ - - - - - + + + + + - + - + - + - + @@ -3822,17 +3798,17 @@ - + - + - + @@ -3841,14 +3817,14 @@ - + - + @@ -3857,10 +3833,10 @@ - + - + @@ -3871,32 +3847,32 @@ - + - + - + - + - + - + @@ -3905,19 +3881,19 @@ - - - - - + + + + + - + @@ -3926,10 +3902,10 @@ - + - + @@ -3940,14 +3916,14 @@ - + - + @@ -3960,10 +3936,10 @@ - + - + @@ -3978,7 +3954,7 @@ - + @@ -4003,7 +3979,7 @@ - + @@ -4014,7 +3990,7 @@ - + @@ -4047,7 +4023,7 @@ - + @@ -4058,7 +4034,7 @@ - + @@ -4073,7 +4049,7 @@ - + @@ -4082,10 +4058,10 @@ - + - + @@ -4102,23 +4078,23 @@ - - - - + - - + + + + + - + @@ -4131,10 +4107,10 @@ - + - + @@ -4145,19 +4121,19 @@ - + - + - + @@ -4170,25 +4146,25 @@ - - - - + - - + + + + + - + @@ -4197,14 +4173,14 @@ - + - + @@ -4213,22 +4189,22 @@ - + - + - + - + @@ -4249,16 +4225,13 @@ - - - - + - + - - + + @@ -4266,31 +4239,34 @@ + + + - + - + - + - + @@ -4299,32 +4275,32 @@ - - - - - + + + + + - + - + - + - + @@ -4333,22 +4309,22 @@ - + - + - + - + - + - + @@ -4363,43 +4339,43 @@ - + - + - + - + - + - + - + - + - + - + - + - + @@ -4412,7 +4388,7 @@ - + @@ -4425,7 +4401,7 @@ - + @@ -4434,14 +4410,14 @@ - + - + @@ -4465,7 +4441,7 @@ - + @@ -4502,52 +4478,52 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -4556,10 +4532,10 @@ - + - + @@ -4568,43 +4544,43 @@ - + - + - + - + - + - + - + - + - + - + - + @@ -4615,7 +4591,7 @@ - + @@ -4624,17 +4600,17 @@ - + - + - + @@ -4643,7 +4619,7 @@ - + @@ -4656,7 +4632,7 @@ - + diff --git a/creusot/tests/should_succeed/red_black_tree/why3shapes.gz b/creusot/tests/should_succeed/red_black_tree/why3shapes.gz index 935dd3e1f3eca8aa63c6eb9dd3b9a0899472d675..1bc0a95c4557d957e578b1f3ff4d072758cd625f 100644 GIT binary patch literal 78217 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

MY*?IE`=6%R3BEr%)_%Kr9$;6#n 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 diff --git a/creusot/tests/should_succeed/resolve_uninit.mlcfg b/creusot/tests/should_succeed/resolve_uninit.mlcfg index d9da49e7aa..3ecf9bd148 100644 --- a/creusot/tests/should_succeed/resolve_uninit.mlcfg +++ b/creusot/tests/should_succeed/resolve_uninit.mlcfg @@ -121,15 +121,15 @@ module ResolveUninit_InitJoin BB1 { [#"../resolve_uninit.rs" 20 12 20 18] _8 <- Borrow.borrow_mut x; [#"../resolve_uninit.rs" 20 12 20 18] x <- ^ _8; - [#"../resolve_uninit.rs" 20 12 20 18] _7 <- Borrow.borrow_mut ( * _8); - [#"../resolve_uninit.rs" 20 12 20 18] _8 <- { _8 with current = ^ _7 }; + [#"../resolve_uninit.rs" 20 12 20 18] _7 <- Borrow.borrow_final ( * _8) (Borrow.get_id _8); + [#"../resolve_uninit.rs" 20 12 20 18] _8 <- { _8 with current = ( ^ _7) ; }; [#"../resolve_uninit.rs" 20 8 20 18] z <- ([#"../resolve_uninit.rs" 20 8 20 18] _7); [#"../resolve_uninit.rs" 20 8 20 18] _7 <- any borrowed int32; assume { resolve0 _8 }; - [#"../resolve_uninit.rs" 21 12 21 19] _10 <- Borrow.borrow_mut ( * z); - [#"../resolve_uninit.rs" 21 12 21 19] z <- { z with current = ^ _10 }; - [#"../resolve_uninit.rs" 21 12 21 19] _9 <- Borrow.borrow_mut ( * _10); - [#"../resolve_uninit.rs" 21 12 21 19] _10 <- { _10 with current = ^ _9 }; + [#"../resolve_uninit.rs" 21 12 21 19] _10 <- Borrow.borrow_final ( * z) (Borrow.get_id z); + [#"../resolve_uninit.rs" 21 12 21 19] z <- { z with current = ( ^ _10) ; }; + [#"../resolve_uninit.rs" 21 12 21 19] _9 <- Borrow.borrow_final ( * _10) (Borrow.get_id _10); + [#"../resolve_uninit.rs" 21 12 21 19] _10 <- { _10 with current = ( ^ _9) ; }; [#"../resolve_uninit.rs" 21 8 21 19] y <- ([#"../resolve_uninit.rs" 21 8 21 19] _9); [#"../resolve_uninit.rs" 21 8 21 19] _9 <- any borrowed int32; assume { resolve0 _10 }; @@ -139,8 +139,8 @@ module ResolveUninit_InitJoin BB2 { [#"../resolve_uninit.rs" 24 12 24 18] _12 <- Borrow.borrow_mut x; [#"../resolve_uninit.rs" 24 12 24 18] x <- ^ _12; - [#"../resolve_uninit.rs" 24 12 24 18] _11 <- Borrow.borrow_mut ( * _12); - [#"../resolve_uninit.rs" 24 12 24 18] _12 <- { _12 with current = ^ _11 }; + [#"../resolve_uninit.rs" 24 12 24 18] _11 <- Borrow.borrow_final ( * _12) (Borrow.get_id _12); + [#"../resolve_uninit.rs" 24 12 24 18] _12 <- { _12 with current = ( ^ _11) ; }; [#"../resolve_uninit.rs" 24 8 24 18] y <- ([#"../resolve_uninit.rs" 24 8 24 18] _11); [#"../resolve_uninit.rs" 24 8 24 18] _11 <- any borrowed int32; assume { resolve0 _12 }; @@ -148,7 +148,7 @@ module ResolveUninit_InitJoin goto BB3 } BB3 { - [#"../resolve_uninit.rs" 27 4 27 10] y <- { y with current = ([#"../resolve_uninit.rs" 27 4 27 10] [#"../resolve_uninit.rs" 27 9 27 10] (5 : int32)) }; + [#"../resolve_uninit.rs" 27 4 27 10] y <- { y with current = ([#"../resolve_uninit.rs" 27 4 27 10] [#"../resolve_uninit.rs" 27 9 27 10] (5 : int32)) ; }; assume { resolve0 y }; switch ([#"../resolve_uninit.rs" 28 4 28 19] not ([#"../resolve_uninit.rs" 28 12 28 18] ([#"../resolve_uninit.rs" 28 12 28 13] x) = ([#"../resolve_uninit.rs" 28 17 28 18] [#"../resolve_uninit.rs" 28 17 28 18] (5 : int32)))) | False -> goto BB5 diff --git a/creusot/tests/should_succeed/resolve_uninit/why3session.xml b/creusot/tests/should_succeed/resolve_uninit/why3session.xml index 80d3400f8a..7a6db60793 100644 --- a/creusot/tests/should_succeed/resolve_uninit/why3session.xml +++ b/creusot/tests/should_succeed/resolve_uninit/why3session.xml @@ -12,7 +12,7 @@ - + diff --git a/creusot/tests/should_succeed/resolve_uninit/why3shapes.gz b/creusot/tests/should_succeed/resolve_uninit/why3shapes.gz index 21777054c74faa42177ec88280667b57162eb655..43989e3bef937c68163a88f60e9da058b6f4d724 100644 GIT binary patch literal 451 zcmV;!0X+U6iwFP!00000|6Ni|kDM?Jz4I%$?JlP{->I~R(FinL_EhEAQGn3WorM;d zsrv7mkdW!lC64Xq_iW40MZWwnzwDCV?7R%q_$B9g@sh2-%`o1OMpYI*yf&|zYgT#7 zG_LBS`%q0xWiE>~vt6dk%_2w|vrWk@m&<>Si1i6#d_Xau8;0UlbxDE0!vYl8?vjzsPK zfZ7`Z5ky_2*r6aF7#&e$WLq^0Frk4bMxGd1WaR$w(EAkI#ef@-1P1yjM0O$ANFl(8 z2AqU&5`rj%{R3&8TRhxV+^D-Oh*yZJbUFTF&OfJN%rc2(Bd8@k6G#A|jc8=YRj+JI t72!C?Cpe+3Rjo9#v7I0dkj^63SVCKim8Aw-meUi-{sBR52{v#80061++ZTqNSGbKUp1c^XM6o!}85q6u zHU_Sp1PnK2+jZ@?J>Gr1SHifuF(+i9{ROB)k1V#T|KiOHW)nm1u7g;c6)JyXjCz#Z z#OY2+fv~%sD|q?kK_Ql;WK@8gqLfTkLB$fDt|x8K!NfRZH$+e~QAB`3kTX#R6XMrD zjY|gqT^8Z|R*%hk5CIH<&U!Q$SY`lYPvgdC1POB(cT4hRr(u_ex3+GQB%@iWxMfZ# zqJZ&ImDy2hr)|YGlQgA!*psB9K%L>fHxH?71xj!rnh>4|<%mi7o+ZDo`~pD=0{{T# CJH@a7 diff --git a/creusot/tests/should_succeed/result/own.mlcfg b/creusot/tests/should_succeed/result/own.mlcfg index 168e748b9f..24989490e2 100644 --- a/creusot/tests/should_succeed/result/own.mlcfg +++ b/creusot/tests/should_succeed/result/own.mlcfg @@ -611,11 +611,11 @@ module Own_Impl0_AsMut goto BB4 } BB2 { - [#"../own.rs" 74 27 74 36] x1 <- Borrow.borrow_mut (Own_OwnResult_Type.err_0 ( * self)); - [#"../own.rs" 74 27 74 36] self <- { self with current = (let Own_OwnResult_Type.C_Err x0 = * self in Own_OwnResult_Type.C_Err ( ^ x1)) }; + [#"../own.rs" 74 27 74 36] x1 <- Borrow.borrow_final (Own_OwnResult_Type.err_0 ( * self)) (Borrow.inherit_id (Borrow.get_id self) 1); + [#"../own.rs" 74 27 74 36] self <- { self with current = (let Own_OwnResult_Type.C_Err x0 = * self in Own_OwnResult_Type.C_Err ( ^ x1)) ; }; assume { inv2 ( ^ x1) }; - [#"../own.rs" 74 56 74 57] _7 <- Borrow.borrow_mut ( * x1); - [#"../own.rs" 74 56 74 57] x1 <- { x1 with current = ^ _7 }; + [#"../own.rs" 74 56 74 57] _7 <- Borrow.borrow_final ( * x1) (Borrow.get_id x1); + [#"../own.rs" 74 56 74 57] x1 <- { x1 with current = ( ^ _7) ; }; assume { inv2 ( ^ _7) }; [#"../own.rs" 74 41 74 58] _0 <- ([#"../own.rs" 74 41 74 58] Own_OwnResult_Type.C_Err _7); _7 <- any borrowed e; @@ -630,11 +630,11 @@ module Own_Impl0_AsMut absurd } BB4 { - [#"../own.rs" 73 26 73 35] x <- Borrow.borrow_mut (Own_OwnResult_Type.ok_0 ( * self)); - [#"../own.rs" 73 26 73 35] self <- { self with current = (let Own_OwnResult_Type.C_Ok x0 = * self in Own_OwnResult_Type.C_Ok ( ^ x)) }; + [#"../own.rs" 73 26 73 35] x <- Borrow.borrow_final (Own_OwnResult_Type.ok_0 ( * self)) (Borrow.inherit_id (Borrow.get_id self) 1); + [#"../own.rs" 73 26 73 35] self <- { self with current = (let Own_OwnResult_Type.C_Ok x0 = * self in Own_OwnResult_Type.C_Ok ( ^ x)) ; }; assume { inv0 ( ^ x) }; - [#"../own.rs" 73 54 73 55] _5 <- Borrow.borrow_mut ( * x); - [#"../own.rs" 73 54 73 55] x <- { x with current = ^ _5 }; + [#"../own.rs" 73 54 73 55] _5 <- Borrow.borrow_final ( * x) (Borrow.get_id x); + [#"../own.rs" 73 54 73 55] x <- { x with current = ( ^ _5) ; }; assume { inv0 ( ^ _5) }; [#"../own.rs" 73 40 73 56] _0 <- ([#"../own.rs" 73 40 73 56] Own_OwnResult_Type.C_Ok _5); _5 <- any borrowed t; diff --git a/creusot/tests/should_succeed/result/result.mlcfg b/creusot/tests/should_succeed/result/result.mlcfg index d0162f43e7..3c3d9c5192 100644 --- a/creusot/tests/should_succeed/result/result.mlcfg +++ b/creusot/tests/should_succeed/result/result.mlcfg @@ -642,7 +642,7 @@ module Result_TestResult goto BB40 } BB40 { - [#"../result.rs" 23 4 23 29] _65 <- { _65 with current = ([#"../result.rs" 23 4 23 29] [#"../result.rs" 23 28 23 29] (0 : int32)) }; + [#"../result.rs" 23 4 23 29] _65 <- { _65 with current = ([#"../result.rs" 23 4 23 29] [#"../result.rs" 23 28 23 29] (0 : int32)) ; }; assume { resolve0 _65 }; [#"../result.rs" 24 12 24 23] _71 <- ([#"../result.rs" 24 12 24 23] unwrap3 ([#"../result.rs" 24 12 24 14] ok)); goto BB41 @@ -670,7 +670,7 @@ module Result_TestResult goto BB45 } BB45 { - [#"../result.rs" 25 4 25 29] _74 <- { _74 with current = ([#"../result.rs" 25 4 25 29] [#"../result.rs" 25 28 25 29] (1 : int32)) }; + [#"../result.rs" 25 4 25 29] _74 <- { _74 with current = ([#"../result.rs" 25 4 25 29] [#"../result.rs" 25 28 25 29] (1 : int32)) ; }; assume { resolve0 _74 }; [#"../result.rs" 26 12 26 23] _80 <- ([#"../result.rs" 26 12 26 23] unwrap3 ([#"../result.rs" 26 12 26 14] ok)); goto BB46 @@ -698,7 +698,7 @@ module Result_TestResult goto BB50 } BB50 { - [#"../result.rs" 27 4 27 34] _83 <- { _83 with current = ([#"../result.rs" 27 4 27 34] [#"../result.rs" 27 33 27 34] (0 : int32)) }; + [#"../result.rs" 27 4 27 34] _83 <- { _83 with current = ([#"../result.rs" 27 4 27 34] [#"../result.rs" 27 33 27 34] (0 : int32)) ; }; assume { resolve0 _83 }; [#"../result.rs" 28 12 28 28] _89 <- ([#"../result.rs" 28 12 28 28] unwrap_err2 ([#"../result.rs" 28 12 28 15] err)); goto BB51 @@ -726,7 +726,7 @@ module Result_TestResult goto BB55 } BB55 { - [#"../result.rs" 29 4 29 35] _92 <- { _92 with current = ([#"../result.rs" 29 4 29 35] [#"../result.rs" 29 33 29 35] (-1 : int32)) }; + [#"../result.rs" 29 4 29 35] _92 <- { _92 with current = ([#"../result.rs" 29 4 29 35] [#"../result.rs" 29 33 29 35] (-1 : int32)) ; }; assume { resolve0 _92 }; [#"../result.rs" 30 12 30 28] _98 <- ([#"../result.rs" 30 12 30 28] unwrap_err2 ([#"../result.rs" 30 12 30 15] err)); goto BB56 diff --git a/creusot/tests/should_succeed/rusthorn/inc_max.mlcfg b/creusot/tests/should_succeed/rusthorn/inc_max.mlcfg index 0ccb885cab..2ff458f126 100644 --- a/creusot/tests/should_succeed/rusthorn/inc_max.mlcfg +++ b/creusot/tests/should_succeed/rusthorn/inc_max.mlcfg @@ -33,24 +33,24 @@ module IncMax_TakeMax } BB1 { assume { resolve0 mb }; - [#"../inc_max.rs" 8 8 8 10] _9 <- Borrow.borrow_mut ( * ma); - [#"../inc_max.rs" 8 8 8 10] ma <- { ma with current = ^ _9 }; - [#"../inc_max.rs" 8 8 8 10] _5 <- Borrow.borrow_mut ( * _9); - [#"../inc_max.rs" 8 8 8 10] _9 <- { _9 with current = ^ _5 }; + [#"../inc_max.rs" 8 8 8 10] _9 <- Borrow.borrow_final ( * ma) (Borrow.get_id ma); + [#"../inc_max.rs" 8 8 8 10] ma <- { ma with current = ( ^ _9) ; }; + [#"../inc_max.rs" 8 8 8 10] _5 <- Borrow.borrow_final ( * _9) (Borrow.get_id _9); + [#"../inc_max.rs" 8 8 8 10] _9 <- { _9 with current = ( ^ _5) ; }; assume { resolve0 _9 }; goto BB3 } BB2 { assume { resolve0 ma }; - [#"../inc_max.rs" 10 8 10 10] _5 <- Borrow.borrow_mut ( * mb); - [#"../inc_max.rs" 10 8 10 10] mb <- { mb with current = ^ _5 }; + [#"../inc_max.rs" 10 8 10 10] _5 <- Borrow.borrow_final ( * mb) (Borrow.get_id mb); + [#"../inc_max.rs" 10 8 10 10] mb <- { mb with current = ( ^ _5) ; }; goto BB3 } BB3 { - [#"../inc_max.rs" 7 4 11 5] _3 <- Borrow.borrow_mut ( * _5); - [#"../inc_max.rs" 7 4 11 5] _5 <- { _5 with current = ^ _3 }; - [#"../inc_max.rs" 7 4 11 5] _0 <- Borrow.borrow_mut ( * _3); - [#"../inc_max.rs" 7 4 11 5] _3 <- { _3 with current = ^ _0 }; + [#"../inc_max.rs" 7 4 11 5] _3 <- Borrow.borrow_final ( * _5) (Borrow.get_id _5); + [#"../inc_max.rs" 7 4 11 5] _5 <- { _5 with current = ( ^ _3) ; }; + [#"../inc_max.rs" 7 4 11 5] _0 <- Borrow.borrow_final ( * _3) (Borrow.get_id _3); + [#"../inc_max.rs" 7 4 11 5] _3 <- { _3 with current = ( ^ _0) ; }; assume { resolve0 _5 }; assume { resolve0 _3 }; assume { resolve0 mb }; @@ -93,12 +93,12 @@ module IncMax_IncMax BB0 { [#"../inc_max.rs" 16 22 16 28] _6 <- Borrow.borrow_mut a; [#"../inc_max.rs" 16 22 16 28] a <- ^ _6; - [#"../inc_max.rs" 16 22 16 28] _5 <- Borrow.borrow_mut ( * _6); - [#"../inc_max.rs" 16 22 16 28] _6 <- { _6 with current = ^ _5 }; + [#"../inc_max.rs" 16 22 16 28] _5 <- Borrow.borrow_final ( * _6) (Borrow.get_id _6); + [#"../inc_max.rs" 16 22 16 28] _6 <- { _6 with current = ( ^ _5) ; }; [#"../inc_max.rs" 16 30 16 36] _8 <- Borrow.borrow_mut b; [#"../inc_max.rs" 16 30 16 36] b <- ^ _8; - [#"../inc_max.rs" 16 30 16 36] _7 <- Borrow.borrow_mut ( * _8); - [#"../inc_max.rs" 16 30 16 36] _8 <- { _8 with current = ^ _7 }; + [#"../inc_max.rs" 16 30 16 36] _7 <- Borrow.borrow_final ( * _8) (Borrow.get_id _8); + [#"../inc_max.rs" 16 30 16 36] _8 <- { _8 with current = ( ^ _7) ; }; [#"../inc_max.rs" 16 13 16 37] mc <- ([#"../inc_max.rs" 16 13 16 37] take_max0 _5 _7); _5 <- any borrowed uint32; _7 <- any borrowed uint32; @@ -107,7 +107,7 @@ module IncMax_IncMax BB1 { assume { resolve0 _8 }; assume { resolve0 _6 }; - [#"../inc_max.rs" 17 4 17 12] mc <- { mc with current = ([#"../inc_max.rs" 17 4 17 12] * mc + ([#"../inc_max.rs" 17 11 17 12] [#"../inc_max.rs" 17 11 17 12] (1 : uint32))) }; + [#"../inc_max.rs" 17 4 17 12] mc <- { mc with current = ([#"../inc_max.rs" 17 4 17 12] * mc + ([#"../inc_max.rs" 17 11 17 12] [#"../inc_max.rs" 17 11 17 12] (1 : uint32))) ; }; assume { resolve0 mc }; switch ([#"../inc_max.rs" 18 4 18 19] not ([#"../inc_max.rs" 18 12 18 18] ([#"../inc_max.rs" 18 12 18 13] a) <> ([#"../inc_max.rs" 18 17 18 18] b))) | False -> goto BB3 diff --git a/creusot/tests/should_succeed/rusthorn/inc_max/why3session.xml b/creusot/tests/should_succeed/rusthorn/inc_max/why3session.xml index 57fd1b4099..139e9682ec 100644 --- a/creusot/tests/should_succeed/rusthorn/inc_max/why3session.xml +++ b/creusot/tests/should_succeed/rusthorn/inc_max/why3session.xml @@ -7,12 +7,12 @@ - + - + diff --git a/creusot/tests/should_succeed/rusthorn/inc_max/why3shapes.gz b/creusot/tests/should_succeed/rusthorn/inc_max/why3shapes.gz index def65a8d487788ef05c36407db966e9a38f99c7d..cb708c6f6edf016e9ccb505612eb557f5bee4b08 100644 GIT binary patch literal 516 zcmV+f0{i_RiwFP!00000|AkY@Zrm^oz56SCOFO-Y+H4h_0!A@|80cBY4Ct*jlGuek zN&ESwBzwFBX$?r$LOzmDj~@>4_!EECWBghVW7~J1V;vtpMlBw#v5?^r50>Er4R^r8 z0nh>9*CW2P-Bs{An!VX(3poz;*gw72%<|P*tk%F*nf{_CcTNaYQ|ABjtn@81{paTxUbrZ z9iE)b9j)L@dLctO6j1L45*}HcrdV>0C2z6B6im7) z81fw&p#(VQe0^m=Y4FpG#%Hwot+{*Jb>{zn`SUrl-{Php;wwJZmuLJFHF=XYdB~it z{wq(abhX(?15&SzbX|;vWM)SB%)?`@Arkzw+3OO{8MfV}=wG^Oe0%%dWv{lHT#^tz z2}S${WdPN{154T~%pd6+Zx3$TbES7&aW6&K%ZofiamLkVf)OVj&5B(lW>ylL3|+^X zO|MXESomjSczKC;8$&FO5sW1HhLx~N%q%qvH2vfn8;gxPoZK{$%1xhApN~~(Zw2H+&kNyI9DKrP+ G1ONbs+4unf literal 451 zcmV;!0X+U6iwFP!00000|AkY@Zrd;rz3VG=fO ze%a&8Fg`PS<>z>9b%YjYw@i<(j#ygkS+NIF98~Ll0KsmW=jn$#Up+l|KL-0@#78TS zZ45z&)jzNONSN9%WM=Sal~!bi@WW#vH5xOqY{TT48S=K=Le3u`Oo!$YYN!Sa*Djfe zzya~M7ug}d$@7~$ObMkM60ppQL4tQg51BDv?!Db|ANBQFlCK7o#n(q+^Z)LW*h+$CAzr`1`W;Mm|W-gVQBQ|XUDZbX|zKQ tgn?FPhBe%f%5a596mlfMPMuJ$gRXbfPzRkev}QN7`UMgg<32kC007vp+$jJ6 diff --git a/creusot/tests/should_succeed/rusthorn/inc_max_3.mlcfg b/creusot/tests/should_succeed/rusthorn/inc_max_3.mlcfg index f0b2117f3b..b27df33425 100644 --- a/creusot/tests/should_succeed/rusthorn/inc_max_3.mlcfg +++ b/creusot/tests/should_succeed/rusthorn/inc_max_3.mlcfg @@ -55,12 +55,12 @@ module IncMax3_IncMax3 BB1 { [#"../inc_max_3.rs" 14 13 14 20] _12 <- Borrow.borrow_mut ma; [#"../inc_max_3.rs" 14 13 14 20] ma <- ^ _12; - [#"../inc_max_3.rs" 14 13 14 20] _11 <- Borrow.borrow_mut ( * _12); - [#"../inc_max_3.rs" 14 13 14 20] _12 <- { _12 with current = ^ _11 }; + [#"../inc_max_3.rs" 14 13 14 20] _11 <- Borrow.borrow_final ( * _12) (Borrow.get_id _12); + [#"../inc_max_3.rs" 14 13 14 20] _12 <- { _12 with current = ( ^ _11) ; }; [#"../inc_max_3.rs" 14 22 14 29] _14 <- Borrow.borrow_mut mb; [#"../inc_max_3.rs" 14 22 14 29] mb <- ^ _14; - [#"../inc_max_3.rs" 14 22 14 29] _13 <- Borrow.borrow_mut ( * _14); - [#"../inc_max_3.rs" 14 22 14 29] _14 <- { _14 with current = ^ _13 }; + [#"../inc_max_3.rs" 14 22 14 29] _13 <- Borrow.borrow_final ( * _14) (Borrow.get_id _14); + [#"../inc_max_3.rs" 14 22 14 29] _14 <- { _14 with current = ( ^ _13) ; }; [#"../inc_max_3.rs" 14 8 14 30] _10 <- ([#"../inc_max_3.rs" 14 8 14 30] swap0 _11 _13); _11 <- any borrowed (borrowed uint32); _13 <- any borrowed (borrowed uint32); @@ -85,12 +85,12 @@ module IncMax3_IncMax3 BB5 { [#"../inc_max_3.rs" 17 13 17 20] _21 <- Borrow.borrow_mut mb; [#"../inc_max_3.rs" 17 13 17 20] mb <- ^ _21; - [#"../inc_max_3.rs" 17 13 17 20] _20 <- Borrow.borrow_mut ( * _21); - [#"../inc_max_3.rs" 17 13 17 20] _21 <- { _21 with current = ^ _20 }; + [#"../inc_max_3.rs" 17 13 17 20] _20 <- Borrow.borrow_final ( * _21) (Borrow.get_id _21); + [#"../inc_max_3.rs" 17 13 17 20] _21 <- { _21 with current = ( ^ _20) ; }; [#"../inc_max_3.rs" 17 22 17 29] _23 <- Borrow.borrow_mut mc; [#"../inc_max_3.rs" 17 22 17 29] mc <- ^ _23; - [#"../inc_max_3.rs" 17 22 17 29] _22 <- Borrow.borrow_mut ( * _23); - [#"../inc_max_3.rs" 17 22 17 29] _23 <- { _23 with current = ^ _22 }; + [#"../inc_max_3.rs" 17 22 17 29] _22 <- Borrow.borrow_final ( * _23) (Borrow.get_id _23); + [#"../inc_max_3.rs" 17 22 17 29] _23 <- { _23 with current = ( ^ _22) ; }; [#"../inc_max_3.rs" 17 8 17 30] _19 <- ([#"../inc_max_3.rs" 17 8 17 30] swap0 _20 _22); _20 <- any borrowed (borrowed uint32); _22 <- any borrowed (borrowed uint32); @@ -117,12 +117,12 @@ module IncMax3_IncMax3 BB9 { [#"../inc_max_3.rs" 20 13 20 20] _30 <- Borrow.borrow_mut ma; [#"../inc_max_3.rs" 20 13 20 20] ma <- ^ _30; - [#"../inc_max_3.rs" 20 13 20 20] _29 <- Borrow.borrow_mut ( * _30); - [#"../inc_max_3.rs" 20 13 20 20] _30 <- { _30 with current = ^ _29 }; + [#"../inc_max_3.rs" 20 13 20 20] _29 <- Borrow.borrow_final ( * _30) (Borrow.get_id _30); + [#"../inc_max_3.rs" 20 13 20 20] _30 <- { _30 with current = ( ^ _29) ; }; [#"../inc_max_3.rs" 20 22 20 29] _32 <- Borrow.borrow_mut mb; [#"../inc_max_3.rs" 20 22 20 29] mb <- ^ _32; - [#"../inc_max_3.rs" 20 22 20 29] _31 <- Borrow.borrow_mut ( * _32); - [#"../inc_max_3.rs" 20 22 20 29] _32 <- { _32 with current = ^ _31 }; + [#"../inc_max_3.rs" 20 22 20 29] _31 <- Borrow.borrow_final ( * _32) (Borrow.get_id _32); + [#"../inc_max_3.rs" 20 22 20 29] _32 <- { _32 with current = ( ^ _31) ; }; [#"../inc_max_3.rs" 20 8 20 30] _28 <- ([#"../inc_max_3.rs" 20 8 20 30] swap0 _29 _31); _29 <- any borrowed (borrowed uint32); _31 <- any borrowed (borrowed uint32); @@ -139,9 +139,9 @@ module IncMax3_IncMax3 goto BB12 } BB12 { - [#"../inc_max_3.rs" 22 4 22 12] ma <- { ma with current = ([#"../inc_max_3.rs" 22 4 22 12] * ma + ([#"../inc_max_3.rs" 22 11 22 12] [#"../inc_max_3.rs" 22 11 22 12] (2 : uint32))) }; + [#"../inc_max_3.rs" 22 4 22 12] ma <- { ma with current = ([#"../inc_max_3.rs" 22 4 22 12] * ma + ([#"../inc_max_3.rs" 22 11 22 12] [#"../inc_max_3.rs" 22 11 22 12] (2 : uint32))) ; }; assume { resolve1 ma }; - [#"../inc_max_3.rs" 23 4 23 12] mb <- { mb with current = ([#"../inc_max_3.rs" 23 4 23 12] * mb + ([#"../inc_max_3.rs" 23 11 23 12] [#"../inc_max_3.rs" 23 11 23 12] (1 : uint32))) }; + [#"../inc_max_3.rs" 23 4 23 12] mb <- { mb with current = ([#"../inc_max_3.rs" 23 4 23 12] * mb + ([#"../inc_max_3.rs" 23 11 23 12] [#"../inc_max_3.rs" 23 11 23 12] (1 : uint32))) ; }; assume { resolve1 mb }; [#"../inc_max_3.rs" 12 80 24 1] _0 <- ([#"../inc_max_3.rs" 12 80 24 1] ()); return _0 @@ -184,16 +184,16 @@ module IncMax3_TestIncMax3 BB0 { [#"../inc_max_3.rs" 28 14 28 20] _7 <- Borrow.borrow_mut a; [#"../inc_max_3.rs" 28 14 28 20] a <- ^ _7; - [#"../inc_max_3.rs" 28 14 28 20] _6 <- Borrow.borrow_mut ( * _7); - [#"../inc_max_3.rs" 28 14 28 20] _7 <- { _7 with current = ^ _6 }; + [#"../inc_max_3.rs" 28 14 28 20] _6 <- Borrow.borrow_final ( * _7) (Borrow.get_id _7); + [#"../inc_max_3.rs" 28 14 28 20] _7 <- { _7 with current = ( ^ _6) ; }; [#"../inc_max_3.rs" 28 22 28 28] _9 <- Borrow.borrow_mut b; [#"../inc_max_3.rs" 28 22 28 28] b <- ^ _9; - [#"../inc_max_3.rs" 28 22 28 28] _8 <- Borrow.borrow_mut ( * _9); - [#"../inc_max_3.rs" 28 22 28 28] _9 <- { _9 with current = ^ _8 }; + [#"../inc_max_3.rs" 28 22 28 28] _8 <- Borrow.borrow_final ( * _9) (Borrow.get_id _9); + [#"../inc_max_3.rs" 28 22 28 28] _9 <- { _9 with current = ( ^ _8) ; }; [#"../inc_max_3.rs" 28 30 28 36] _11 <- Borrow.borrow_mut c; [#"../inc_max_3.rs" 28 30 28 36] c <- ^ _11; - [#"../inc_max_3.rs" 28 30 28 36] _10 <- Borrow.borrow_mut ( * _11); - [#"../inc_max_3.rs" 28 30 28 36] _11 <- { _11 with current = ^ _10 }; + [#"../inc_max_3.rs" 28 30 28 36] _10 <- Borrow.borrow_final ( * _11) (Borrow.get_id _11); + [#"../inc_max_3.rs" 28 30 28 36] _11 <- { _11 with current = ( ^ _10) ; }; [#"../inc_max_3.rs" 28 4 28 37] _5 <- ([#"../inc_max_3.rs" 28 4 28 37] inc_max_30 _6 _8 _10); _6 <- any borrowed uint32; _8 <- any borrowed uint32; diff --git a/creusot/tests/should_succeed/rusthorn/inc_max_3/why3session.xml b/creusot/tests/should_succeed/rusthorn/inc_max_3/why3session.xml index 1306383961..37f40be6f6 100644 --- a/creusot/tests/should_succeed/rusthorn/inc_max_3/why3session.xml +++ b/creusot/tests/should_succeed/rusthorn/inc_max_3/why3session.xml @@ -7,12 +7,12 @@ - + - + diff --git a/creusot/tests/should_succeed/rusthorn/inc_max_3/why3shapes.gz b/creusot/tests/should_succeed/rusthorn/inc_max_3/why3shapes.gz index 6b7f9de372f152e5cf696d27be6945d56bd1f9a1..fe4a5412b8076cbd97fbf8b56e8e642d97a5b708 100644 GIT binary patch literal 794 zcmV+#1Lgc5iwFP!00000|Fu<1Z`&{ozUNo?wk^AeqFx@_Lr|n>fT5>B#|27kZ^qhW zNYZXUf21C+<1XuI0V0bJ@slX>)BAaK{2qR`$LhH~9Q*z5Q)R08huM9&4qv^bzgVO> zu$K~csRu~=OOi0UdAIM1Dd=_M{+?ohr=5yt6sBLP)PCnBf7=0sb*9*p}^larETt^*MZL8R@Y zM_EpavYZq}ItOXygDcm1nbU6Sd{$Zelw9ei*J(4P)bZ+caMG1SAU5OJpCRfr;#85!}`I5bQluDITsW_GBa$X&GR!pTjOXbYpRNeki z^}Fr*G5lWRtXp-9Zgn4v;mhHvUERd#ZFo4gc_g`ywn5fD7LDfaJ!?ok7F1m1O+1R3 zgrI`cx$yKP2vzf0NLoBBQ@LLGJ6WdAV~lbH<3gM^`F-hfYK4IqO;i;ra-;b_O|LIC z{hK`>DKRze#h%A;&u7<2GkK1gTVg+ZNJ^MOiVW#Ex=T*N*9EUGa4tov>F)+cW2JZA zW*FgmX=<29=3O@_`uigI8@3x-{T}(et9^IY$X3>AkS(HKa zB$uKuk4v}j4!ft<4lI;Qcjs5P-tG6hUtN3i{KM96({J6A<%M^;mwtOByz#4dd>X1% z1B;pKx2yH;W!oO!IKQ~5<-uk~_A(b+>9iG%x6+r@RD;*I@=n=`mc6gf7I5Z&$pYl9 zOABUpR!{;27Vuf1qXOD12$G68JYx)u$Ao$w0>EM^lBASUB-&Z()FMG`p-K@@`6C5C zm{DQK_Xmyv+JeeyN|tCRiRBRC??*X8?l^b111!V}BOPag3!p`sogV|wBEb-xYM>BD zaERolCc$O|YzpV%(S>|qdeAZ+oGf8FE}<;RE^V1*ziFM(tZjq}tMMC{R2fwaFcx*r z3U3$fAkB{|geZ%gL)c&c4OU1aJwSyX*H8*PW6oIA17J7-!vYLd38hLJJ^;gGU^oNA z5L<;TXJA->Np_T{=CD13<=kcLTR4JMj}fmj;)2G+-WQwQzUa5j>e>BX(PXpS%r?u% z&_rMNFWvG!hzs|0=+f%-KKM?$vZ2|O(D#CtYN&8XvO0jKM6gmw>9ZXpZb5Z{n_0=`%|C9N2h55-IW=fJN4U)j> z)DWKTqsnEfTt$CrGr4O2txkhVn$}j<2xfL2FM7?S#bnKdmKSgmJyU<{0M?z zd}jo443H6&v%&~Uc4>wz%iPH^WM#Vxq%2;6(84uGnH`JF_G5QAuFjO7aIM#^si-wt z8%6?Bs5%Ga)=DdG3V0|dO}k+Q3Zd3DcGPO9TGvoTX5B!$ZVGz9$sbX9`0Z#2007=A Bc|QOE diff --git a/creusot/tests/should_succeed/rusthorn/inc_max_many.mlcfg b/creusot/tests/should_succeed/rusthorn/inc_max_many.mlcfg index e72775b9f7..35ed05161b 100644 --- a/creusot/tests/should_succeed/rusthorn/inc_max_many.mlcfg +++ b/creusot/tests/should_succeed/rusthorn/inc_max_many.mlcfg @@ -33,24 +33,24 @@ module IncMaxMany_TakeMax } BB1 { assume { resolve0 mb }; - [#"../inc_max_many.rs" 8 8 8 10] _9 <- Borrow.borrow_mut ( * ma); - [#"../inc_max_many.rs" 8 8 8 10] ma <- { ma with current = ^ _9 }; - [#"../inc_max_many.rs" 8 8 8 10] _5 <- Borrow.borrow_mut ( * _9); - [#"../inc_max_many.rs" 8 8 8 10] _9 <- { _9 with current = ^ _5 }; + [#"../inc_max_many.rs" 8 8 8 10] _9 <- Borrow.borrow_final ( * ma) (Borrow.get_id ma); + [#"../inc_max_many.rs" 8 8 8 10] ma <- { ma with current = ( ^ _9) ; }; + [#"../inc_max_many.rs" 8 8 8 10] _5 <- Borrow.borrow_final ( * _9) (Borrow.get_id _9); + [#"../inc_max_many.rs" 8 8 8 10] _9 <- { _9 with current = ( ^ _5) ; }; assume { resolve0 _9 }; goto BB3 } BB2 { assume { resolve0 ma }; - [#"../inc_max_many.rs" 10 8 10 10] _5 <- Borrow.borrow_mut ( * mb); - [#"../inc_max_many.rs" 10 8 10 10] mb <- { mb with current = ^ _5 }; + [#"../inc_max_many.rs" 10 8 10 10] _5 <- Borrow.borrow_final ( * mb) (Borrow.get_id mb); + [#"../inc_max_many.rs" 10 8 10 10] mb <- { mb with current = ( ^ _5) ; }; goto BB3 } BB3 { - [#"../inc_max_many.rs" 7 4 11 5] _3 <- Borrow.borrow_mut ( * _5); - [#"../inc_max_many.rs" 7 4 11 5] _5 <- { _5 with current = ^ _3 }; - [#"../inc_max_many.rs" 7 4 11 5] _0 <- Borrow.borrow_mut ( * _3); - [#"../inc_max_many.rs" 7 4 11 5] _3 <- { _3 with current = ^ _0 }; + [#"../inc_max_many.rs" 7 4 11 5] _3 <- Borrow.borrow_final ( * _5) (Borrow.get_id _5); + [#"../inc_max_many.rs" 7 4 11 5] _5 <- { _5 with current = ( ^ _3) ; }; + [#"../inc_max_many.rs" 7 4 11 5] _0 <- Borrow.borrow_final ( * _3) (Borrow.get_id _3); + [#"../inc_max_many.rs" 7 4 11 5] _3 <- { _3 with current = ( ^ _0) ; }; assume { resolve0 _5 }; assume { resolve0 _3 }; assume { resolve0 mb }; @@ -95,12 +95,12 @@ module IncMaxMany_IncMaxMany BB0 { [#"../inc_max_many.rs" 16 22 16 28] _7 <- Borrow.borrow_mut a; [#"../inc_max_many.rs" 16 22 16 28] a <- ^ _7; - [#"../inc_max_many.rs" 16 22 16 28] _6 <- Borrow.borrow_mut ( * _7); - [#"../inc_max_many.rs" 16 22 16 28] _7 <- { _7 with current = ^ _6 }; + [#"../inc_max_many.rs" 16 22 16 28] _6 <- Borrow.borrow_final ( * _7) (Borrow.get_id _7); + [#"../inc_max_many.rs" 16 22 16 28] _7 <- { _7 with current = ( ^ _6) ; }; [#"../inc_max_many.rs" 16 30 16 36] _9 <- Borrow.borrow_mut b; [#"../inc_max_many.rs" 16 30 16 36] b <- ^ _9; - [#"../inc_max_many.rs" 16 30 16 36] _8 <- Borrow.borrow_mut ( * _9); - [#"../inc_max_many.rs" 16 30 16 36] _9 <- { _9 with current = ^ _8 }; + [#"../inc_max_many.rs" 16 30 16 36] _8 <- Borrow.borrow_final ( * _9) (Borrow.get_id _9); + [#"../inc_max_many.rs" 16 30 16 36] _9 <- { _9 with current = ( ^ _8) ; }; [#"../inc_max_many.rs" 16 13 16 37] mc <- ([#"../inc_max_many.rs" 16 13 16 37] take_max0 _6 _8); _6 <- any borrowed uint32; _8 <- any borrowed uint32; @@ -109,7 +109,7 @@ module IncMaxMany_IncMaxMany BB1 { assume { resolve0 _9 }; assume { resolve0 _7 }; - [#"../inc_max_many.rs" 17 4 17 12] mc <- { mc with current = ([#"../inc_max_many.rs" 17 4 17 12] * mc + ([#"../inc_max_many.rs" 17 11 17 12] k)) }; + [#"../inc_max_many.rs" 17 4 17 12] mc <- { mc with current = ([#"../inc_max_many.rs" 17 4 17 12] * mc + ([#"../inc_max_many.rs" 17 11 17 12] k)) ; }; assume { resolve0 mc }; switch ([#"../inc_max_many.rs" 18 12 18 22] ([#"../inc_max_many.rs" 18 12 18 13] a) >= ([#"../inc_max_many.rs" 18 17 18 22] ([#"../inc_max_many.rs" 18 17 18 18] b) + ([#"../inc_max_many.rs" 18 21 18 22] k))) | False -> goto BB3 diff --git a/creusot/tests/should_succeed/rusthorn/inc_max_many/why3session.xml b/creusot/tests/should_succeed/rusthorn/inc_max_many/why3session.xml index 344416079a..129fd31129 100644 --- a/creusot/tests/should_succeed/rusthorn/inc_max_many/why3session.xml +++ b/creusot/tests/should_succeed/rusthorn/inc_max_many/why3session.xml @@ -8,12 +8,12 @@ - + - + diff --git a/creusot/tests/should_succeed/rusthorn/inc_max_many/why3shapes.gz b/creusot/tests/should_succeed/rusthorn/inc_max_many/why3shapes.gz index 19c3c52f1e929b73f99f83e307677691b65edb8c..e9f08e6cc88dc9c5fad5258c64239ced9420c02e 100644 GIT binary patch literal 640 zcmV-`0)PD;0QNd z63W2*R~snsc*LW49ECF6P%jwnX~K&Vx`3P7^~=|ypn$Jm#1M!=#al$+k)e%TJaO?0 z7eq3SQ%Gb5nnMY21kd^}qpl3rCN!4NQm+}dc3JtqJHOdf=2JZ!=laRs_q#{?s~Wb$ zdf0yPLVlgky_Xh7yRi?a-bZp&*Zc%FWU=Gftsh05|reiMGctR0(F1UI7SI5zd z<$}3sNaN8{!G;&pC5MBzc}Qi564%uI({0QlCIp*;G3h4!zvxr6QHe|?E)if9{-8cd zy0c*=438w-xplL)P@e91ci!_-)=Iad{tVyo*3* zP68Db0WS%Ji)x9d3Viv$h2)8!onj!CSG8K!2EI07AYO*R4X~gyL-F0@gDl>^fSq?! z={zRWjWA9Jyb#=&epeL?@*wwYFO}#)A1vkKAb}2Se*oGvx~8|J8amk>2xqEM`(6tw aHFOQpoz)t|z;z9`toj2b8X;QB1^@sIKs9Cn literal 590 zcmV-U0ABZ#5~yL z01^PO0GLl}bLxjzq&If=V#yU6Gqv-0d~1oOi!(0HKo%F#SRX*lZk(p^M|-$=dA5F( z>H5JOHQzQq1nIukytFG|BGceegZWpktEf@gWigi;^_ghQG+ESid26O2<`3Yudh;Ht zV*{PodnT3Bf$Ew?tfNg9Z8En7lx9kRQOgGj))B3v7Ii!?Bl&k3w%bB~F1v9mU(Iv- z_+ow*UDIv4=BsDm+jMF@C)k^y0A~_@$!KR!#;;UTXZ{w!A_z^UdnN z_6}T{2Z8{L4dXk<_hrDT6OL!Ff6!Tm=m4tB@R^v(ze+8lf^a{H$GDXWr%JQ<%539p zH>MvRcjIX|%xQHfOK!Hg(psnQsG77Qs8VxC66NcDGr{GYk?!|LnKT88m^+54u(TvH z%lv;sNCm%GuCQ7TKe3DoeN>gkIEs*Iq=8}TXt$dODGwmJ>e?-DBFfV{Qa|o6pJ`S# zWK2~Mpc>&k5&B{827+C~uc9ytWJiS{l{~aeR)#Ct8U_SGiUXPw?nxnG*AcD^-w{ff c;4NqSgW`%Yi5-J|iTAYl4gO@3zE=hS0DTV|q5uE@ diff --git a/creusot/tests/should_succeed/rusthorn/inc_max_repeat.mlcfg b/creusot/tests/should_succeed/rusthorn/inc_max_repeat.mlcfg index c50aefebe3..05d513e74d 100644 --- a/creusot/tests/should_succeed/rusthorn/inc_max_repeat.mlcfg +++ b/creusot/tests/should_succeed/rusthorn/inc_max_repeat.mlcfg @@ -33,24 +33,24 @@ module IncMaxRepeat_TakeMax } BB1 { assume { resolve0 mb }; - [#"../inc_max_repeat.rs" 8 8 8 10] _9 <- Borrow.borrow_mut ( * ma); - [#"../inc_max_repeat.rs" 8 8 8 10] ma <- { ma with current = ^ _9 }; - [#"../inc_max_repeat.rs" 8 8 8 10] _5 <- Borrow.borrow_mut ( * _9); - [#"../inc_max_repeat.rs" 8 8 8 10] _9 <- { _9 with current = ^ _5 }; + [#"../inc_max_repeat.rs" 8 8 8 10] _9 <- Borrow.borrow_final ( * ma) (Borrow.get_id ma); + [#"../inc_max_repeat.rs" 8 8 8 10] ma <- { ma with current = ( ^ _9) ; }; + [#"../inc_max_repeat.rs" 8 8 8 10] _5 <- Borrow.borrow_final ( * _9) (Borrow.get_id _9); + [#"../inc_max_repeat.rs" 8 8 8 10] _9 <- { _9 with current = ( ^ _5) ; }; assume { resolve0 _9 }; goto BB3 } BB2 { assume { resolve0 ma }; - [#"../inc_max_repeat.rs" 10 8 10 10] _5 <- Borrow.borrow_mut ( * mb); - [#"../inc_max_repeat.rs" 10 8 10 10] mb <- { mb with current = ^ _5 }; + [#"../inc_max_repeat.rs" 10 8 10 10] _5 <- Borrow.borrow_final ( * mb) (Borrow.get_id mb); + [#"../inc_max_repeat.rs" 10 8 10 10] mb <- { mb with current = ( ^ _5) ; }; goto BB3 } BB3 { - [#"../inc_max_repeat.rs" 7 4 11 5] _3 <- Borrow.borrow_mut ( * _5); - [#"../inc_max_repeat.rs" 7 4 11 5] _5 <- { _5 with current = ^ _3 }; - [#"../inc_max_repeat.rs" 7 4 11 5] _0 <- Borrow.borrow_mut ( * _3); - [#"../inc_max_repeat.rs" 7 4 11 5] _3 <- { _3 with current = ^ _0 }; + [#"../inc_max_repeat.rs" 7 4 11 5] _3 <- Borrow.borrow_final ( * _5) (Borrow.get_id _5); + [#"../inc_max_repeat.rs" 7 4 11 5] _5 <- { _5 with current = ( ^ _3) ; }; + [#"../inc_max_repeat.rs" 7 4 11 5] _0 <- Borrow.borrow_final ( * _3) (Borrow.get_id _3); + [#"../inc_max_repeat.rs" 7 4 11 5] _3 <- { _3 with current = ( ^ _0) ; }; assume { resolve0 _5 }; assume { resolve0 _3 }; assume { resolve0 mb }; @@ -272,8 +272,8 @@ module IncMaxRepeat_IncMaxRepeat BB5 { [#"../inc_max_repeat.rs" 16 4 16 86] _20 <- Borrow.borrow_mut iter; [#"../inc_max_repeat.rs" 16 4 16 86] iter <- ^ _20; - [#"../inc_max_repeat.rs" 16 4 16 86] _19 <- Borrow.borrow_mut ( * _20); - [#"../inc_max_repeat.rs" 16 4 16 86] _20 <- { _20 with current = ^ _19 }; + [#"../inc_max_repeat.rs" 16 4 16 86] _19 <- Borrow.borrow_final ( * _20) (Borrow.get_id _20); + [#"../inc_max_repeat.rs" 16 4 16 86] _20 <- { _20 with current = ( ^ _19) ; }; [#"../inc_max_repeat.rs" 16 4 16 86] _18 <- ([#"../inc_max_repeat.rs" 16 4 16 86] next0 _19); _19 <- any borrowed (Core_Ops_Range_Range_Type.t_range uint32); goto BB6 @@ -308,12 +308,12 @@ module IncMaxRepeat_IncMaxRepeat [#"../inc_max_repeat.rs" 16 4 16 86] _23 <- any Ghost.ghost_ty (Seq.seq uint32); [#"../inc_max_repeat.rs" 19 26 19 32] _27 <- Borrow.borrow_mut a; [#"../inc_max_repeat.rs" 19 26 19 32] a <- ^ _27; - [#"../inc_max_repeat.rs" 19 26 19 32] _26 <- Borrow.borrow_mut ( * _27); - [#"../inc_max_repeat.rs" 19 26 19 32] _27 <- { _27 with current = ^ _26 }; + [#"../inc_max_repeat.rs" 19 26 19 32] _26 <- Borrow.borrow_final ( * _27) (Borrow.get_id _27); + [#"../inc_max_repeat.rs" 19 26 19 32] _27 <- { _27 with current = ( ^ _26) ; }; [#"../inc_max_repeat.rs" 19 34 19 40] _29 <- Borrow.borrow_mut b; [#"../inc_max_repeat.rs" 19 34 19 40] b <- ^ _29; - [#"../inc_max_repeat.rs" 19 34 19 40] _28 <- Borrow.borrow_mut ( * _29); - [#"../inc_max_repeat.rs" 19 34 19 40] _29 <- { _29 with current = ^ _28 }; + [#"../inc_max_repeat.rs" 19 34 19 40] _28 <- Borrow.borrow_final ( * _29) (Borrow.get_id _29); + [#"../inc_max_repeat.rs" 19 34 19 40] _29 <- { _29 with current = ( ^ _28) ; }; [#"../inc_max_repeat.rs" 19 17 19 41] mc <- ([#"../inc_max_repeat.rs" 19 17 19 41] take_max0 _26 _28); _26 <- any borrowed uint32; _28 <- any borrowed uint32; @@ -322,7 +322,7 @@ module IncMaxRepeat_IncMaxRepeat BB12 { assume { resolve1 _29 }; assume { resolve1 _27 }; - [#"../inc_max_repeat.rs" 20 8 20 16] mc <- { mc with current = ([#"../inc_max_repeat.rs" 20 8 20 16] * mc + ([#"../inc_max_repeat.rs" 20 15 20 16] [#"../inc_max_repeat.rs" 20 15 20 16] (1 : uint32))) }; + [#"../inc_max_repeat.rs" 20 8 20 16] mc <- { mc with current = ([#"../inc_max_repeat.rs" 20 8 20 16] * mc + ([#"../inc_max_repeat.rs" 20 15 20 16] [#"../inc_max_repeat.rs" 20 15 20 16] (1 : uint32))) ; }; assume { resolve1 mc }; goto BB4 } diff --git a/creusot/tests/should_succeed/rusthorn/inc_max_repeat/why3session.xml b/creusot/tests/should_succeed/rusthorn/inc_max_repeat/why3session.xml index 8c93002a7e..2c8bd869fa 100644 --- a/creusot/tests/should_succeed/rusthorn/inc_max_repeat/why3session.xml +++ b/creusot/tests/should_succeed/rusthorn/inc_max_repeat/why3session.xml @@ -8,12 +8,12 @@ - + - + diff --git a/creusot/tests/should_succeed/rusthorn/inc_max_repeat/why3shapes.gz b/creusot/tests/should_succeed/rusthorn/inc_max_repeat/why3shapes.gz index 59d6492d405e53a3d89dbeb810157c63a3cefe88..44a9fe6183ce99dc2c34f8a13af6a1a6ab7dee94 100644 GIT binary patch literal 770 zcmV+d1O5CTiwFP!00000|AkadkDD+Mz4I%$ZM(Vn0~=FyD@9QdxooAj^0AR2CW|(K z6v%G-?>jaofYsebB6!BnZ|r%`e7Fz0Cw0+X_@djcYU)oR5AQz)m3okg#B24S?j=$` z;V}s`Brqhf`tqQzRozo^2mcnf2=Pv}x@%4^8c8x6)7coKSrG4_21Y7x+O~Pshr9DL z)JarX)#@a6JOE&VbktZ5>7(4(n zZ6Nm4l6riRkX(P->>9W-!Bo*;|FEWu{wKD;jG> zw_4N{i_G5uBpw^E40On>wI{={4YD2C$jCNoO^mejo&R6?G!5h?ESom$)wAB8)$gGH zrKAy4fyBu?qE_`qLai2X zv53faD&`X}kQDjE$RkdC;?4fCsdWkO@6B1iN|MZ^B(e2KB8dQnttv#UH>zmPmy_=G z0U+E_O#K6iA=_2;5im_HDFI_yoGBp(GNARZAQ|rZR z$gsFEm1J-&OvAQ~MWJ#qamZnQn}kEG2N&AYfF)v8>({}oLxP(Gd?SX4!ByY7CFXko)nN<0Zugg_>k$a@ zP1Q$Tz$`J)6r`={ecoK_L$@>z^&AQQUm9@v7L)z_MGRP{GWz24fHlFn>Os> z$sA7bJLrEwRX=l0QnzFXb4#jO8o;@2ic4-fqzhIn>|0uTaGSU<*V5U-*^#r6-zi#* zfwOd&ODqZ~FsF0>M=KYvuALB_q(QkaH|73rI0yLAUd(=54Mqhi96K}kmS>=8GPn4^ z;=%!|1zasGwwsFii5Eyt{KUjdocM{ihr6aWC4Rp*C-b6NGNY2kgBTLc6f!)p!qjF9 zd2>1+O>YW>NS9(dKcpDFT~$9Irl~b&sGtF7OXx8fruA69N zn+|LAQTe)wLu^K|4bvd=G1TT|)a2-p)`3@hv;zl)^+bp~bz)nKFpBAI4N(MluhROl5Hlj4+j7MU$R?2 diff --git a/creusot/tests/should_succeed/rusthorn/inc_some_2_list.mlcfg b/creusot/tests/should_succeed/rusthorn/inc_some_2_list.mlcfg index 5161ed570b..132849a8bf 100644 --- a/creusot/tests/should_succeed/rusthorn/inc_some_2_list.mlcfg +++ b/creusot/tests/should_succeed/rusthorn/inc_some_2_list.mlcfg @@ -184,10 +184,10 @@ module IncSome2List_Impl0_TakeSomeRest absurd } BB4 { - [#"../inc_some_2_list.rs" 56 17 56 19] ma <- Borrow.borrow_mut (IncSome2List_List_Type.cons_0 ( * self)); - [#"../inc_some_2_list.rs" 56 17 56 19] self <- { self with current = (let IncSome2List_List_Type.C_Cons x0 x1 = * self in IncSome2List_List_Type.C_Cons ( ^ ma) x1) }; - [#"../inc_some_2_list.rs" 56 21 56 23] ml <- Borrow.borrow_mut (IncSome2List_List_Type.cons_1 ( * self)); - [#"../inc_some_2_list.rs" 56 21 56 23] self <- { self with current = (let IncSome2List_List_Type.C_Cons x0 x1 = * self in IncSome2List_List_Type.C_Cons x0 ( ^ ml)) }; + [#"../inc_some_2_list.rs" 56 17 56 19] ma <- Borrow.borrow_final (IncSome2List_List_Type.cons_0 ( * self)) (Borrow.inherit_id (Borrow.get_id self) 1); + [#"../inc_some_2_list.rs" 56 17 56 19] self <- { self with current = (let IncSome2List_List_Type.C_Cons x0 x1 = * self in IncSome2List_List_Type.C_Cons ( ^ ma) x1) ; }; + [#"../inc_some_2_list.rs" 56 21 56 23] ml <- Borrow.borrow_final (IncSome2List_List_Type.cons_1 ( * self)) (Borrow.inherit_id (Borrow.get_id self) 2); + [#"../inc_some_2_list.rs" 56 21 56 23] self <- { self with current = (let IncSome2List_List_Type.C_Cons x0 x1 = * self in IncSome2List_List_Type.C_Cons x0 ( ^ ml)) ; }; [#"../inc_some_2_list.rs" 57 16 57 45] _8 <- ([#"../inc_some_2_list.rs" 57 16 57 45] Ghost.new (lemma_sum_nonneg0 ( * ml))); goto BB5 } @@ -202,10 +202,10 @@ module IncSome2List_Impl0_TakeSomeRest end } BB7 { - [#"../inc_some_2_list.rs" 59 21 59 23] _11 <- Borrow.borrow_mut ( * ma); - [#"../inc_some_2_list.rs" 59 21 59 23] ma <- { ma with current = ^ _11 }; + [#"../inc_some_2_list.rs" 59 21 59 23] _11 <- Borrow.borrow_final ( * ma) (Borrow.get_id ma); + [#"../inc_some_2_list.rs" 59 21 59 23] ma <- { ma with current = ( ^ _11) ; }; [#"../inc_some_2_list.rs" 59 25 59 27] _12 <- Borrow.borrow_mut ( * ml); - [#"../inc_some_2_list.rs" 59 25 59 27] ml <- { ml with current = ^ _12 }; + [#"../inc_some_2_list.rs" 59 25 59 27] ml <- { ml with current = ( ^ _12) ; }; [#"../inc_some_2_list.rs" 59 20 59 28] _0 <- ([#"../inc_some_2_list.rs" 59 20 59 28] (_11, _12)); _11 <- any borrowed uint32; _12 <- any borrowed (IncSome2List_List_Type.t_list); @@ -214,7 +214,7 @@ module IncSome2List_Impl0_TakeSomeRest BB8 { assume { resolve0 ma }; [#"../inc_some_2_list.rs" 61 20 61 39] _13 <- Borrow.borrow_mut ( * ml); - [#"../inc_some_2_list.rs" 61 20 61 39] ml <- { ml with current = ^ _13 }; + [#"../inc_some_2_list.rs" 61 20 61 39] ml <- { ml with current = ( ^ _13) ; }; [#"../inc_some_2_list.rs" 61 20 61 39] _0 <- ([#"../inc_some_2_list.rs" 61 20 61 39] take_some_rest _13); _13 <- any borrowed (IncSome2List_List_Type.t_list); goto BB9 @@ -320,8 +320,8 @@ module IncSome2List_IncSome2List [#"../inc_some_2_list.rs" 72 13 72 15] ml <- ([#"../inc_some_2_list.rs" 72 13 72 15] let (_, a) = _9 in a); [#"../inc_some_2_list.rs" 72 13 72 15] _9 <- (let (x0, x1) = _9 in (x0, any borrowed (IncSome2List_List_Type.t_list))); assume { resolve0 _9 }; - [#"../inc_some_2_list.rs" 73 18 73 37] _13 <- Borrow.borrow_mut ( * ml); - [#"../inc_some_2_list.rs" 73 18 73 37] ml <- { ml with current = ^ _13 }; + [#"../inc_some_2_list.rs" 73 18 73 37] _13 <- Borrow.borrow_final ( * ml) (Borrow.get_id ml); + [#"../inc_some_2_list.rs" 73 18 73 37] ml <- { ml with current = ( ^ _13) ; }; [#"../inc_some_2_list.rs" 73 18 73 37] _12 <- ([#"../inc_some_2_list.rs" 73 18 73 37] take_some_rest0 _13); _13 <- any borrowed (IncSome2List_List_Type.t_list); goto BB4 @@ -330,9 +330,9 @@ module IncSome2List_IncSome2List [#"../inc_some_2_list.rs" 73 9 73 11] mb <- ([#"../inc_some_2_list.rs" 73 9 73 11] let (a, _) = _12 in a); [#"../inc_some_2_list.rs" 73 9 73 11] _12 <- (let (x0, x1) = _12 in (any borrowed uint32, x1)); assume { resolve0 _12 }; - [#"../inc_some_2_list.rs" 74 4 74 12] ma <- { ma with current = ([#"../inc_some_2_list.rs" 74 4 74 12] * ma + ([#"../inc_some_2_list.rs" 74 11 74 12] j)) }; + [#"../inc_some_2_list.rs" 74 4 74 12] ma <- { ma with current = ([#"../inc_some_2_list.rs" 74 4 74 12] * ma + ([#"../inc_some_2_list.rs" 74 11 74 12] j)) ; }; assume { resolve1 ma }; - [#"../inc_some_2_list.rs" 75 4 75 12] mb <- { mb with current = ([#"../inc_some_2_list.rs" 75 4 75 12] * mb + ([#"../inc_some_2_list.rs" 75 11 75 12] k)) }; + [#"../inc_some_2_list.rs" 75 4 75 12] mb <- { mb with current = ([#"../inc_some_2_list.rs" 75 4 75 12] * mb + ([#"../inc_some_2_list.rs" 75 11 75 12] k)) ; }; assume { resolve1 mb }; assume { resolve2 ml }; [#"../inc_some_2_list.rs" 76 12 76 21] _19 <- ([#"../inc_some_2_list.rs" 76 12 76 21] sum_x0 ([#"../inc_some_2_list.rs" 76 12 76 21] l)); diff --git a/creusot/tests/should_succeed/rusthorn/inc_some_2_list/why3session.xml b/creusot/tests/should_succeed/rusthorn/inc_some_2_list/why3session.xml index 03dc890a88..f4a5c9a0a0 100644 --- a/creusot/tests/should_succeed/rusthorn/inc_some_2_list/why3session.xml +++ b/creusot/tests/should_succeed/rusthorn/inc_some_2_list/why3session.xml @@ -18,12 +18,12 @@ - + - + diff --git a/creusot/tests/should_succeed/rusthorn/inc_some_2_list/why3shapes.gz b/creusot/tests/should_succeed/rusthorn/inc_some_2_list/why3shapes.gz index ac125aebb9407f84f8c86ae94ee168e20c9c3268..d030e5ecf643f40c2d2e8831ccc58c9c87a0e7ee 100644 GIT binary patch literal 1009 zcmVH>zah6NNk1w2NeB`Rw~ zmI8mo{rMe|A}wj{HmDD4QZw`3%xLC$e|bsHZ~D7ACqK;Td>H!Q6PdjHy3&8H_4#@v ziqxbm;tgt|i>es<^G#jw^y$zkvMCC^R!q@oYJ=&$^LC|*q#aI4XO2f*A!^kReQ&<5 z^jcqr>d;>ljMSyY1tm9Vx}t&657sR8Z__KCUc@UpE1|gk4tU(-F=u1C#*8XZ#9gVs zBHL?7_GVdKp+4hHp$~nvAFh3Ko>QmO3y{(V5|wYuJ9qB6v+YLzF*Y%)fw+(L&tf_@ z3K2s(+n7%5T^S)rfQaq1jr`m8aM@RME*?CD_-gd$>-Wyw%e}vQTHD*msb7=`2j+`; z(_J^*s^id@4#qBf>so*Gw=dZ5@ED(c#QyolpoIq)@f1pw`ee>S_rp*nXD`$H;dB~qrulIE z=7HNouR8@o9~%7YCK3bPY}z;*40fnv=|J>WcW2`ZO~*pTL-_O&e5$An@G`*L$y)@A z5KLUKYb`}ezgqZ+a{bj@s$jHu+~VOTeLh`{g4~8ct{{7L6mmx4=TCt|GKgf%k+EP^ z?ae~E_X$ElBnOU5`DRWBn?THi)zoK#X1`Z1+OZ?(dwR=_J*6YPV`r~(c2ACb9k}xc z)T{>2oR1r91MiYDDx!UedQudZ1qHRs&$wdDiH8Mbk636ZkgaA(+$(2no=(^TTnD>M^j$i1!2&Vx#Pk1+WM3M9-)Jkwxj>0!uG1~u^0ig0x)UsLs@^Fxk zx|dC?YaL|a(AQoSXw@B17gms)MhGHu5S&X>?@7w{WSZZjPl4eQ1%U1sY+eu@W>E< z3M@PB=XXeovLxF{P;X4m{Jt@Ny_(^2L>g5n z&!!u$kjaXy?}n>B!|CIp)o7b#=2cToCRGzv_r|-8&XT4-C9ORkO#!Gy*LR)$XJcN? zxi1dgS>rKu?r^adTTop}%WNvCBdGYTk$2XXtkngX}%@FEj=;ESm7AP&_v$JM`^$OSG8INXzMrwaT;1 zPoRY6hu0@A1G@1rRdV&q^TprdSsdoj!Z`r+{JhlqvhuslVF#-SKMx zZVsJkHRgU6!NpId^Kfq1jq_AAMrLQ)!G;p$SR#K2ESJDi6A^($1a{N5a^um>H$`dhmG1yUF-jRj!h36n;-Zmtf@KN98|#~7H6%iy&h7o6^a z9V)bgjKK752^?@?4@cN^+$pEJE&0e%P6!*GW#<(LaqCE#rqr)9Na!s)O8mA`@;Ez^ zY8s!G?pDCg5e$eLafzDccenLk7?=EPzS?5wkG6oJIB%M~**5t{mx$8L(@8wciHWND z?M}_mlGJFrU{@fnC+xQ}Tt`ip)@;F*&rz3lV@*`fIhD%5PjW`8@L-BGWg>ByF}X{Gtnl$Kc5-Ft62Z5QpuqdY z4{MkmV0^KirqfTjV-6lp0yrSDg4>B1v9g~KEB!yjN+&D!13(s%BTt!C1OrE{ap63* zI{CU4SOKTyBeQvebrKd@fd!CNI00v2uVp|`qZYiwPdLUp9T`Y1+LXqFc+?~{)6QBX zCh@vK%0yZ?bX8ylQnUx)g$=brGDeM(4VIY8igBJIT2@?POL&vuJ=!QCQp5#irEF>| zZ7PHW5rGfq;Fi!m*_cMq3jQNCX<8X!OJ!4D1ErV5)^*jGMDE3&@7cyGE^Ski$~G0M djX|X;OUhY=SR>L}CFx#m{sY%RY#nY2005ga)1LqU diff --git a/creusot/tests/should_succeed/rusthorn/inc_some_2_tree.mlcfg b/creusot/tests/should_succeed/rusthorn/inc_some_2_tree.mlcfg index ee571defc0..f7d1c129d8 100644 --- a/creusot/tests/should_succeed/rusthorn/inc_some_2_tree.mlcfg +++ b/creusot/tests/should_succeed/rusthorn/inc_some_2_tree.mlcfg @@ -210,12 +210,12 @@ module IncSome2Tree_Impl0_TakeSomeRest absurd } BB4 { - [#"../inc_some_2_tree.rs" 65 17 65 20] mtl <- Borrow.borrow_mut (IncSome2Tree_Tree_Type.node_0 ( * self)); - [#"../inc_some_2_tree.rs" 65 17 65 20] self <- { self with current = (let IncSome2Tree_Tree_Type.C_Node x0 x1 x2 = * self in IncSome2Tree_Tree_Type.C_Node ( ^ mtl) x1 x2) }; - [#"../inc_some_2_tree.rs" 65 22 65 24] ma <- Borrow.borrow_mut (IncSome2Tree_Tree_Type.node_1 ( * self)); - [#"../inc_some_2_tree.rs" 65 22 65 24] self <- { self with current = (let IncSome2Tree_Tree_Type.C_Node x0 x1 x2 = * self in IncSome2Tree_Tree_Type.C_Node x0 ( ^ ma) x2) }; - [#"../inc_some_2_tree.rs" 65 26 65 29] mtr <- Borrow.borrow_mut (IncSome2Tree_Tree_Type.node_2 ( * self)); - [#"../inc_some_2_tree.rs" 65 26 65 29] self <- { self with current = (let IncSome2Tree_Tree_Type.C_Node x0 x1 x2 = * self in IncSome2Tree_Tree_Type.C_Node x0 x1 ( ^ mtr)) }; + [#"../inc_some_2_tree.rs" 65 17 65 20] mtl <- Borrow.borrow_final (IncSome2Tree_Tree_Type.node_0 ( * self)) (Borrow.inherit_id (Borrow.get_id self) 1); + [#"../inc_some_2_tree.rs" 65 17 65 20] self <- { self with current = (let IncSome2Tree_Tree_Type.C_Node x0 x1 x2 = * self in IncSome2Tree_Tree_Type.C_Node ( ^ mtl) x1 x2) ; }; + [#"../inc_some_2_tree.rs" 65 22 65 24] ma <- Borrow.borrow_final (IncSome2Tree_Tree_Type.node_1 ( * self)) (Borrow.inherit_id (Borrow.get_id self) 2); + [#"../inc_some_2_tree.rs" 65 22 65 24] self <- { self with current = (let IncSome2Tree_Tree_Type.C_Node x0 x1 x2 = * self in IncSome2Tree_Tree_Type.C_Node x0 ( ^ ma) x2) ; }; + [#"../inc_some_2_tree.rs" 65 26 65 29] mtr <- Borrow.borrow_final (IncSome2Tree_Tree_Type.node_2 ( * self)) (Borrow.inherit_id (Borrow.get_id self) 3); + [#"../inc_some_2_tree.rs" 65 26 65 29] self <- { self with current = (let IncSome2Tree_Tree_Type.C_Node x0 x1 x2 = * self in IncSome2Tree_Tree_Type.C_Node x0 x1 ( ^ mtr)) ; }; assert { [@expl:assertion] [#"../inc_some_2_tree.rs" 67 20 67 42] let _ = lemma_sum_nonneg0 ( * mtl) in let _ = lemma_sum_nonneg0 ( * mtr) in true }; [#"../inc_some_2_tree.rs" 71 19 71 27] _11 <- ([#"../inc_some_2_tree.rs" 71 19 71 27] random0 ()); goto BB5 @@ -227,8 +227,8 @@ module IncSome2Tree_Impl0_TakeSomeRest end } BB6 { - [#"../inc_some_2_tree.rs" 72 21 72 23] _12 <- Borrow.borrow_mut ( * ma); - [#"../inc_some_2_tree.rs" 72 21 72 23] ma <- { ma with current = ^ _12 }; + [#"../inc_some_2_tree.rs" 72 21 72 23] _12 <- Borrow.borrow_final ( * ma) (Borrow.get_id ma); + [#"../inc_some_2_tree.rs" 72 21 72 23] ma <- { ma with current = ( ^ _12) ; }; [#"../inc_some_2_tree.rs" 72 28 72 36] _15 <- ([#"../inc_some_2_tree.rs" 72 28 72 36] random0 ()); goto BB7 } @@ -241,21 +241,21 @@ module IncSome2Tree_Impl0_TakeSomeRest BB8 { assume { resolve1 mtr }; [#"../inc_some_2_tree.rs" 72 39 72 42] _16 <- Borrow.borrow_mut ( * mtl); - [#"../inc_some_2_tree.rs" 72 39 72 42] mtl <- { mtl with current = ^ _16 }; - [#"../inc_some_2_tree.rs" 72 39 72 42] _14 <- Borrow.borrow_mut ( * _16); - [#"../inc_some_2_tree.rs" 72 39 72 42] _16 <- { _16 with current = ^ _14 }; + [#"../inc_some_2_tree.rs" 72 39 72 42] mtl <- { mtl with current = ( ^ _16) ; }; + [#"../inc_some_2_tree.rs" 72 39 72 42] _14 <- Borrow.borrow_final ( * _16) (Borrow.get_id _16); + [#"../inc_some_2_tree.rs" 72 39 72 42] _16 <- { _16 with current = ( ^ _14) ; }; assume { resolve2 _16 }; goto BB10 } BB9 { assume { resolve1 mtl }; [#"../inc_some_2_tree.rs" 72 52 72 55] _14 <- Borrow.borrow_mut ( * mtr); - [#"../inc_some_2_tree.rs" 72 52 72 55] mtr <- { mtr with current = ^ _14 }; + [#"../inc_some_2_tree.rs" 72 52 72 55] mtr <- { mtr with current = ( ^ _14) ; }; goto BB10 } BB10 { - [#"../inc_some_2_tree.rs" 72 25 72 57] _13 <- Borrow.borrow_mut ( * _14); - [#"../inc_some_2_tree.rs" 72 25 72 57] _14 <- { _14 with current = ^ _13 }; + [#"../inc_some_2_tree.rs" 72 25 72 57] _13 <- Borrow.borrow_final ( * _14) (Borrow.get_id _14); + [#"../inc_some_2_tree.rs" 72 25 72 57] _14 <- { _14 with current = ( ^ _13) ; }; [#"../inc_some_2_tree.rs" 72 20 72 58] _0 <- ([#"../inc_some_2_tree.rs" 72 20 72 58] (_12, _13)); _12 <- any borrowed uint32; _13 <- any borrowed (IncSome2Tree_Tree_Type.t_tree); @@ -276,7 +276,7 @@ module IncSome2Tree_Impl0_TakeSomeRest BB13 { assume { resolve1 mtr }; [#"../inc_some_2_tree.rs" 74 20 74 40] _18 <- Borrow.borrow_mut ( * mtl); - [#"../inc_some_2_tree.rs" 74 20 74 40] mtl <- { mtl with current = ^ _18 }; + [#"../inc_some_2_tree.rs" 74 20 74 40] mtl <- { mtl with current = ( ^ _18) ; }; [#"../inc_some_2_tree.rs" 74 20 74 40] _0 <- ([#"../inc_some_2_tree.rs" 74 20 74 40] take_some_rest _18); _18 <- any borrowed (IncSome2Tree_Tree_Type.t_tree); goto BB14 @@ -287,7 +287,7 @@ module IncSome2Tree_Impl0_TakeSomeRest BB15 { assume { resolve1 mtl }; [#"../inc_some_2_tree.rs" 76 20 76 40] _19 <- Borrow.borrow_mut ( * mtr); - [#"../inc_some_2_tree.rs" 76 20 76 40] mtr <- { mtr with current = ^ _19 }; + [#"../inc_some_2_tree.rs" 76 20 76 40] mtr <- { mtr with current = ( ^ _19) ; }; [#"../inc_some_2_tree.rs" 76 20 76 40] _0 <- ([#"../inc_some_2_tree.rs" 76 20 76 40] take_some_rest _19); _19 <- any borrowed (IncSome2Tree_Tree_Type.t_tree); goto BB16 @@ -397,8 +397,8 @@ module IncSome2Tree_IncSome2Tree [#"../inc_some_2_tree.rs" 87 13 87 15] mt <- ([#"../inc_some_2_tree.rs" 87 13 87 15] let (_, a) = _9 in a); [#"../inc_some_2_tree.rs" 87 13 87 15] _9 <- (let (x0, x1) = _9 in (x0, any borrowed (IncSome2Tree_Tree_Type.t_tree))); assume { resolve0 _9 }; - [#"../inc_some_2_tree.rs" 88 18 88 37] _13 <- Borrow.borrow_mut ( * mt); - [#"../inc_some_2_tree.rs" 88 18 88 37] mt <- { mt with current = ^ _13 }; + [#"../inc_some_2_tree.rs" 88 18 88 37] _13 <- Borrow.borrow_final ( * mt) (Borrow.get_id mt); + [#"../inc_some_2_tree.rs" 88 18 88 37] mt <- { mt with current = ( ^ _13) ; }; [#"../inc_some_2_tree.rs" 88 18 88 37] _12 <- ([#"../inc_some_2_tree.rs" 88 18 88 37] take_some_rest0 _13); _13 <- any borrowed (IncSome2Tree_Tree_Type.t_tree); goto BB4 @@ -407,9 +407,9 @@ module IncSome2Tree_IncSome2Tree [#"../inc_some_2_tree.rs" 88 9 88 11] mb <- ([#"../inc_some_2_tree.rs" 88 9 88 11] let (a, _) = _12 in a); [#"../inc_some_2_tree.rs" 88 9 88 11] _12 <- (let (x0, x1) = _12 in (any borrowed uint32, x1)); assume { resolve0 _12 }; - [#"../inc_some_2_tree.rs" 89 4 89 12] ma <- { ma with current = ([#"../inc_some_2_tree.rs" 89 4 89 12] * ma + ([#"../inc_some_2_tree.rs" 89 11 89 12] j)) }; + [#"../inc_some_2_tree.rs" 89 4 89 12] ma <- { ma with current = ([#"../inc_some_2_tree.rs" 89 4 89 12] * ma + ([#"../inc_some_2_tree.rs" 89 11 89 12] j)) ; }; assume { resolve1 ma }; - [#"../inc_some_2_tree.rs" 90 4 90 12] mb <- { mb with current = ([#"../inc_some_2_tree.rs" 90 4 90 12] * mb + ([#"../inc_some_2_tree.rs" 90 11 90 12] k)) }; + [#"../inc_some_2_tree.rs" 90 4 90 12] mb <- { mb with current = ([#"../inc_some_2_tree.rs" 90 4 90 12] * mb + ([#"../inc_some_2_tree.rs" 90 11 90 12] k)) ; }; assume { resolve1 mb }; assume { resolve2 mt }; [#"../inc_some_2_tree.rs" 91 12 91 21] _19 <- ([#"../inc_some_2_tree.rs" 91 12 91 21] sum_x0 ([#"../inc_some_2_tree.rs" 91 12 91 21] t)); diff --git a/creusot/tests/should_succeed/rusthorn/inc_some_2_tree/why3session.xml b/creusot/tests/should_succeed/rusthorn/inc_some_2_tree/why3session.xml index 1050596e51..eae494becb 100644 --- a/creusot/tests/should_succeed/rusthorn/inc_some_2_tree/why3session.xml +++ b/creusot/tests/should_succeed/rusthorn/inc_some_2_tree/why3session.xml @@ -18,12 +18,12 @@ - + - + diff --git a/creusot/tests/should_succeed/rusthorn/inc_some_2_tree/why3shapes.gz b/creusot/tests/should_succeed/rusthorn/inc_some_2_tree/why3shapes.gz index 2a615417f73cdd5a3ce9af4c35f90aaa3daa905d..15ce905d78250dc3cea79262e8c749fd8eb235c6 100644 GIT binary patch literal 1128 zcmV-u1eg0CiwFP!00000|BY5lkJ~m7zWZ1BmUfE(9Fn4_qFcZ)Y*@e|y#ze2K*?0r zh%E)SH}22x@F9xQ+C_YjIhqG&KF)m9Z%@n1oBm-g%b(_aIrQD1OR;?VeWCw;)|dAa zQKTW|I!d%5t0+K2^t$@e?~S^tD=uG*ZWURr*ZNrr#s9&-O!3jCjW%Tr!Z4z>mx@{Y zT(Nuh_x9N?)Oy+W=jG9yPP)QqRo8c&`L@u{dj1XzS?jOwKaPgH+)>hdFJas@xF&nY z0fTYq=qIZOq5qi3*+k--xqUXXr>Rs}bM#WcoMT7= zSU4f#^;7{&^x*Y!v${G1qB|_KqDnZ2!ix|@=|!w+6Ckd20lOs%hzg_{TCUyC z^%VBy%1^dU%8qunN(y2zImYjm#IjVM6vg9F45hJVuDAMlF@Daxi&UJ1l8dxtPGSb~ZplTePfM1g z;zP;BU}eKU3djQ$ka@{6l#F#?$^OU~o>@MWoa4jsQY;zK`Feggicx1w6@$&Fw>{w@ zX@i-=f+5Qmn?N|lB#S_^R4AHbN*F$z0&}MjZv>^(Sn_Zw41{pi-%WMtPo_eguZy;9S8e&l9~O5sHY`$7#N$n*4{Gd~ z38P}ar2P7rdS{07U5lype`8ZNQcgLfnP**W@yua5gp>cZ4j{n zXS58H>KGf}P`Pzi8O?Fv{0gU(4+F@yWkPQ>5;KK+^hQ~#Pw0)psF>5+;PmRkKMcry za&tzm8e&?^?t#_O%*<;7CPq!x_1R~O^eX0Do$Ry5n zRUj3x<^KE||A^ycq3ZDf9?#6@neohLep}2hU(I)Wng6io%WHS~b1vqK-)H9UCv$l_ z5>0ASt&#*aStfzj#H@Coy2k38zT)!PnpTtLYGt0Z(EKz06q*kD9dL&hvvk9?cHXcBk%ivj5D?lbP;eA}jOd?fb!!=Q~Qcw@HUnqic3{ zN}#Bn^klBx?)7xlW!M$f%4b8x5_NB=VerA}sW5+x<$8Jb2E?2&(H&^v9aIo$6lD-Gt92~N?RInN)u|$4gSYs4+U>iy zQ*#-I416T9YMdde$L4gDuiPvj0#7Uv7~wU*rW$euh_z4%^jF`ys;0z$ybsktMm{8( zmAOxue6Gu@^P?)2ZR2H`>K5cO6>c*WE_JY|61M1}Q&YP}{CCzHm<3)!T!;|TS93UY zx7`sz4>Y!2&_0=uL3+_5ZR6fYtX@bEHDzxiA3|Y0&-T(Cept{dttoa(60j;X*Fd%M zAKz2hm&-8OE+{wJ#WG8XrQjI9ml7*-eU=pCgJPOi@ATr~9|DRv7iQm`&)v;7ACBJw za{GER2MvYOGp<>fD|BJ_1qDh&w%lyY;bOyt1sAC~iOH%wSx(Z~@@}#!*XPN~LGdnG z)mu6EM}Rz%0GTE$W3u6z7~WIaCtKo|=c1G>6z0qM&1weT7&N2nLGSt?6r+u1z6uPP zRjnh*sL}b6T0v+iF&Ko8l~4Syb$fF)XU-W4B#ETa3AR;b=MVfm3Ew+P`yd`|~h!yjb>Z za5dlT?$RCY4z<@=TeZu!`V?-Bdk*UtIV0i?XVN=0HqD4mv1M{{eayQP!|ADNY&~Ls z`WSU=SM@EK^D>LCYfj4pD-V?e$ViC^k0tU;bX*YoEgX=?KY4K(|JAaL4WC_mmU$q| z2g1gIq~3&gfxrZx{$eF3hAt2~RD^^-Ggu{s16su~_05VqAUFQ)f)ZygtZ+nmKZ9&j zWvm8?iGki@HDI|uV>O_IV#;d0(~F0H2*^WlQwm4CSkLeV4{!Uz@xdbOPfI~14t{vj zaiGJ{@Ed`gF_x`*cgw)57bi4y*vX>)G1b zOj1r+O?@mb7KEHMF#K)3yvvrNI~qGFMwU N`wvAT2t{iQ0044^AFlua diff --git a/creusot/tests/should_succeed/rusthorn/inc_some_list.mlcfg b/creusot/tests/should_succeed/rusthorn/inc_some_list.mlcfg index 3b75bf0e0a..61ee547893 100644 --- a/creusot/tests/should_succeed/rusthorn/inc_some_list.mlcfg +++ b/creusot/tests/should_succeed/rusthorn/inc_some_list.mlcfg @@ -187,10 +187,10 @@ module IncSomeList_Impl0_TakeSome absurd } BB4 { - [#"../inc_some_list.rs" 53 17 53 19] ma <- Borrow.borrow_mut (IncSomeList_List_Type.cons_0 ( * self)); - [#"../inc_some_list.rs" 53 17 53 19] self <- { self with current = (let IncSomeList_List_Type.C_Cons x0 x1 = * self in IncSomeList_List_Type.C_Cons ( ^ ma) x1) }; - [#"../inc_some_list.rs" 53 21 53 23] ml <- Borrow.borrow_mut (IncSomeList_List_Type.cons_1 ( * self)); - [#"../inc_some_list.rs" 53 21 53 23] self <- { self with current = (let IncSomeList_List_Type.C_Cons x0 x1 = * self in IncSomeList_List_Type.C_Cons x0 ( ^ ml)) }; + [#"../inc_some_list.rs" 53 17 53 19] ma <- Borrow.borrow_final (IncSomeList_List_Type.cons_0 ( * self)) (Borrow.inherit_id (Borrow.get_id self) 1); + [#"../inc_some_list.rs" 53 17 53 19] self <- { self with current = (let IncSomeList_List_Type.C_Cons x0 x1 = * self in IncSomeList_List_Type.C_Cons ( ^ ma) x1) ; }; + [#"../inc_some_list.rs" 53 21 53 23] ml <- Borrow.borrow_final (IncSomeList_List_Type.cons_1 ( * self)) (Borrow.inherit_id (Borrow.get_id self) 2); + [#"../inc_some_list.rs" 53 21 53 23] self <- { self with current = (let IncSomeList_List_Type.C_Cons x0 x1 = * self in IncSomeList_List_Type.C_Cons x0 ( ^ ml)) ; }; [#"../inc_some_list.rs" 54 16 54 45] _10 <- ([#"../inc_some_list.rs" 54 16 54 45] Ghost.new (lemma_sum_nonneg0 ( * ml))); goto BB5 } @@ -206,40 +206,40 @@ module IncSomeList_Impl0_TakeSome } BB7 { assume { resolve1 ml }; - [#"../inc_some_list.rs" 56 20 56 22] _14 <- Borrow.borrow_mut ( * ma); - [#"../inc_some_list.rs" 56 20 56 22] ma <- { ma with current = ^ _14 }; - [#"../inc_some_list.rs" 56 20 56 22] _12 <- Borrow.borrow_mut ( * _14); - [#"../inc_some_list.rs" 56 20 56 22] _14 <- { _14 with current = ^ _12 }; + [#"../inc_some_list.rs" 56 20 56 22] _14 <- Borrow.borrow_final ( * ma) (Borrow.get_id ma); + [#"../inc_some_list.rs" 56 20 56 22] ma <- { ma with current = ( ^ _14) ; }; + [#"../inc_some_list.rs" 56 20 56 22] _12 <- Borrow.borrow_final ( * _14) (Borrow.get_id _14); + [#"../inc_some_list.rs" 56 20 56 22] _14 <- { _14 with current = ( ^ _12) ; }; assume { resolve0 _14 }; goto BB10 } BB8 { assume { resolve0 ma }; [#"../inc_some_list.rs" 58 20 58 34] _16 <- Borrow.borrow_mut ( * ml); - [#"../inc_some_list.rs" 58 20 58 34] ml <- { ml with current = ^ _16 }; + [#"../inc_some_list.rs" 58 20 58 34] ml <- { ml with current = ( ^ _16) ; }; [#"../inc_some_list.rs" 58 20 58 34] _15 <- ([#"../inc_some_list.rs" 58 20 58 34] take_some _16); _16 <- any borrowed (IncSomeList_List_Type.t_list); goto BB9 } BB9 { - [#"../inc_some_list.rs" 58 20 58 34] _12 <- Borrow.borrow_mut ( * _15); - [#"../inc_some_list.rs" 58 20 58 34] _15 <- { _15 with current = ^ _12 }; + [#"../inc_some_list.rs" 58 20 58 34] _12 <- Borrow.borrow_final ( * _15) (Borrow.get_id _15); + [#"../inc_some_list.rs" 58 20 58 34] _15 <- { _15 with current = ( ^ _12) ; }; assume { resolve0 _15 }; goto BB10 } BB10 { - [#"../inc_some_list.rs" 55 16 59 17] _9 <- Borrow.borrow_mut ( * _12); - [#"../inc_some_list.rs" 55 16 59 17] _12 <- { _12 with current = ^ _9 }; - [#"../inc_some_list.rs" 55 16 59 17] _5 <- Borrow.borrow_mut ( * _9); - [#"../inc_some_list.rs" 55 16 59 17] _9 <- { _9 with current = ^ _5 }; + [#"../inc_some_list.rs" 55 16 59 17] _9 <- Borrow.borrow_final ( * _12) (Borrow.get_id _12); + [#"../inc_some_list.rs" 55 16 59 17] _12 <- { _12 with current = ( ^ _9) ; }; + [#"../inc_some_list.rs" 55 16 59 17] _5 <- Borrow.borrow_final ( * _9) (Borrow.get_id _9); + [#"../inc_some_list.rs" 55 16 59 17] _9 <- { _9 with current = ( ^ _5) ; }; assume { resolve0 _12 }; assume { resolve0 _9 }; assume { resolve1 ml }; assume { resolve0 ma }; - [#"../inc_some_list.rs" 52 8 62 9] _2 <- Borrow.borrow_mut ( * _5); - [#"../inc_some_list.rs" 52 8 62 9] _5 <- { _5 with current = ^ _2 }; - [#"../inc_some_list.rs" 52 8 62 9] _0 <- Borrow.borrow_mut ( * _2); - [#"../inc_some_list.rs" 52 8 62 9] _2 <- { _2 with current = ^ _0 }; + [#"../inc_some_list.rs" 52 8 62 9] _2 <- Borrow.borrow_final ( * _5) (Borrow.get_id _5); + [#"../inc_some_list.rs" 52 8 62 9] _5 <- { _5 with current = ( ^ _2) ; }; + [#"../inc_some_list.rs" 52 8 62 9] _0 <- Borrow.borrow_final ( * _2) (Borrow.get_id _2); + [#"../inc_some_list.rs" 52 8 62 9] _2 <- { _2 with current = ( ^ _0) ; }; assume { resolve0 _5 }; assume { resolve0 _2 }; assume { resolve2 self }; @@ -315,7 +315,7 @@ module IncSomeList_IncSomeList goto BB3 } BB3 { - [#"../inc_some_list.rs" 70 4 70 12] ma <- { ma with current = ([#"../inc_some_list.rs" 70 4 70 12] * ma + ([#"../inc_some_list.rs" 70 11 70 12] k)) }; + [#"../inc_some_list.rs" 70 4 70 12] ma <- { ma with current = ([#"../inc_some_list.rs" 70 4 70 12] * ma + ([#"../inc_some_list.rs" 70 11 70 12] k)) ; }; assume { resolve0 ma }; [#"../inc_some_list.rs" 71 12 71 21] _12 <- ([#"../inc_some_list.rs" 71 12 71 21] sum_x0 ([#"../inc_some_list.rs" 71 12 71 21] l)); goto BB4 diff --git a/creusot/tests/should_succeed/rusthorn/inc_some_list/why3session.xml b/creusot/tests/should_succeed/rusthorn/inc_some_list/why3session.xml index 111215d6fd..d6fe7e8cb2 100644 --- a/creusot/tests/should_succeed/rusthorn/inc_some_list/why3session.xml +++ b/creusot/tests/should_succeed/rusthorn/inc_some_list/why3session.xml @@ -18,12 +18,12 @@ - + - + diff --git a/creusot/tests/should_succeed/rusthorn/inc_some_list/why3shapes.gz b/creusot/tests/should_succeed/rusthorn/inc_some_list/why3shapes.gz index c1942438e552bf1810f952af96bb6d9088c54b29..c9506d6d1c8834e5d84c8f393154d9f3fd54ba3e 100644 GIT binary patch literal 901 zcmV;01A6=)iwFP!00000|BY2$tK&8hefO{M+qPK>`j%CC3&A8LQ1)rj;~LqKcf&gN z5+{56^Q)08`6Dg#!gVCg%$cL(nei{XeEep9*fIZU@8fmof6qm}`!zFvzM1iPLmD;c zT&5jvkSVKj=*M^caH~((PNRKUnm0`~Nv1ZMUY(DbF7tM{=bgRXOyy9ke&~DqH8XGK zF;v(7q4AXZ47gZ}y)!+Xfszkk7Utt}OO_jcaL$@*2EP%H1w86))HIG!g*Eb961Fbe zA(DNEtp1{b@xCEEqYIhX%(h|{YvpPxTEJ70Hx_oRUxab!EZpCng7-H5Z0>d(x}TP4me!7xT5g2bQ<-|W--ma5`EdIl z;M!|%I*qxxUfk2`h6|0Q*B#EJ`D!1Pw*tW(oa~aT*dp?XNPIL2Zd_xQ5LrSb6C#5L zxF*6ptzFG7FG81_P$hKBflM3}q*H+b(HJKNI5JQZ0qh==Bif*;2~0wymqjaAf)i8` zkz_zB+`n@wOW(&_6TF}KQsJ9stC^fKPzH$9x0{xldcEO<$0U@6Ebe3%9Vycky79HN z=v+f&U0Y-}EUOCwwh%tYmNAVA69EKCxEIkBA0~nzC=rLn;6=hLLmSW1P;1L}8mU1k0#{(#1Pr1-k9wJ_N!()Ep_nu*eYL`2bxHi*@aA*SsXAA^W9eCaI;x^Zujl^lP_b}2j|6NH4o`(_hM%2 zS-SRi=gXy5Vz0{qH-5B)uMnoZvs_qARsHVK9nf}vS3cl2>O zOcK9*fUbSx%cJV9<0H$kvKP(~SC}&ix;^(i4#Au%+#%H7;hU@ONuNP bEw`$Ws$ljaP@{5nDzbk7s7&C;@dy9_FyX+? literal 887 zcmV--1Bm<|iwFP!00000|BY4Ks^c~kefL-RZQ3&wbhlJ`3c)1AQ08gS;~3eNJ7FAq zh?7Y_zgv>!Tc*&!(b2vyEopE6@|KQY&38MdKkRM14E^t^NZ)=<%%AUOd|Z)6H7fF1 z!Zk8^nGgN=)OXl@x^x;H^4z>@s>y6>qv_T8l;}Kdhg;g&>(!Kywd{w!w|^(*-Q0)r z(%&_nN*69K*5UxB2N)>%;LO5&T#IBa@FO^Du9^EE^RbYRdK)!0AS$s&UL-+;YR3rn z>8kpJ2E>QlT>7#a9(^-zOJ{2VqrwFutxm;KTZP*4bTEHRB+42i|8xFwhU20jV}x^> z;mq6>a|#qw%yc>;|8X4dc?IYECrUhDjrsie-r422%iWXONv`Hs({;nMybg`+u*TBc z&6}o<<==wz1*nZ`(1r7Z)_L#a3v;vM(EYGPvw07o)LIapPi3m%b{n3y`EdOf(zTb~ zbQ*Kd7?v7mp7A%>xMk9deISp4Bsg%5Sqx-uar(JDpZD+r*RbeX2zO5RrN~rDg-S$Y z94ld1CNlM@GF3I+e$zoXFvJ2R!@HO_pXyk?j;6zh=oS->wh&ZlJN3c1WZnQ3ukC-hC zxp21Ua6Y$;=T=j4<(8o3dra|7Ic5Qq)HI8j+>;`B!Gr;Z`Fwj=O+5k%Al1>QWt+62 zzck690EA2hSk&wG=`u4vgy3v^DoFS=5xh0bsGlWvSpf@;=RIx{Qy&NpDCR}eXmQ46 z)=i_@DPhp%`F)#)@i<`a=9?|Y;cAn%Xb)}i$v=GPoMN@v%tN}7Ud(JeOSj%IF8^cZ zZvA3$vYxp(yiqMyLsu+Acj?{`j@RtEt_+NZ?%NFbEfV!V5pVteat-Y#zwh(c*2`jp z@lE6LS-oz%>?PXI4&eg)4nBp`6k*dR20qklvL>$3iYv5m1*(sea%T7C+jHq_|1!$% zGTxJfT9GkEjm%n{VV>2DbA@PCbBQhCZHmt*kwPfM1!Yy%Ha4?LhzwK&ew;&CO3x%g zs;Ujbgd<{PTMJSX+ej)JR!K=!on~io=4X}=$!keb(~_zZRig~gY|CqFYSYN3BB?sd N - + - + diff --git a/creusot/tests/should_succeed/rusthorn/inc_some_tree/why3shapes.gz b/creusot/tests/should_succeed/rusthorn/inc_some_tree/why3shapes.gz index cd90effd96781c04196c3d65cd6d59f191b1346c..527489e01fc13030a18c863cc98017f57b5460d4 100644 GIT binary patch literal 986 zcmV<0110<)iwFP!00000|BY5nkJ~m7z3W%#mexT5ep4#C1q@>i3s@wVfX4`wL?uRS zDX_h9e}0A^qC~A1s1I7r@Xh1Q<7l{lZ1U@O{nK3YU*>W>j>F%%$Txpx`rjvgeLW+E zT2$?#MOw6t25ynw)t|=BsJpts>x>%2J(7%xFAo;UBPX7B4WWy@V*$Li z)|0-C^>Mf<>Aj-bxoWW3!rCjWQ1Zd9W1&ALHcu?}yvFkto-D1>!XZjw>H4qls-A-+_xs(J*G5Ie9!~K%)Xn%hbk{Ux z!V-&CX@#(y!f{e>vERN+yg~vo&?`dr)m$qfL5mWI{+U|0Y%y{_7lRc+Nel`wxr~u9 z=C-}rI9x{A_RcP%Zr+wrxcw|#>|jwvZZT2ErnZgvU*-Vc_31R;>obI(@Klf9DA!tl zdF!hZ(G5Od2Y4-d9bf5-xsIn_hA0`|kvo{#@WN2tjF-!JH{FNx4^P)02Ys@oA3Lk5 zgAtI>=?6YIlyBx%yH%Uu#(FjpidKw36c~kL49b=E-~%JbIxz~*2%e3HhJ>*y7Ri?j zKSqlMysQ_qa7L?y#FP+qn^T{VfG;s7#A8A%Bf*jpK76Q5s$> z4M)a{_jKaiZprzi6PH0JE+?Hh_gR2vGaP z=8-#pgFYNDwY2Twl`O1iehe&kL}@zZ|4ci@y@2rU!YGv7R}b1_1Vgi6;QAPxQQ|jO#&Kv}d(^j!F`{dlo`Sh~dz_6g@U5j=T*` z?2=2fKfk(JwtRA6{or^m-)QF3Xp}z|<@LM%X|CljbGaV-?yr)Ui$4qf&x^j^&q$#L z)vF}o1}&2S4brRK=l)>SL*4A>tI@4O%hgK1D6Z%i`@<9+ecI$xry#^ebpApS=U*xE z%>UUsn?kM1w!f4ob3W^xjkfFht~37@`bE!mwvd(ndjEMc==F&aKU2cEYJ^VKP6e>W zNiX`=?~dI~RYA+^m9GZ)(%SCULhuJ?2d+P6GRq{op8KNO!i-9ah`}WDp^WB8axCb)@9+c)0SK#0cNmT|9QXeShx`*F0rR zGl|rBh1Q(ALsqZYEZ+@0^R$6&c!lw%9&5!oav^P?zlYY94Iuw`3@D5;42o{m6jLS4 zZFzGzkcqa9mqp?&$W6_w7ZFQjzt99OUe626$+Mj+Itg7^l{KkwzAcp9Df4TGzbNF!n5yG{{PM;i`-T_|{mj@*#smO^Q(8K`K?14tcXY2A|T@u#i_CyWq zGWUvlItP*g2*H8aV>AG%q;109MhNSjI94_qxW_qJfSK}jj zNUEKQso;Y#@g5P34MeaiEXFGL3Tnn@I5s57NN`|^4Oudm<)9~u;in9;bb1(M3^EuE zQwG_a1LPySp*YKJsL6GLO~E>%AvG5kvnhdu>#vu)QIvSLiK2MDo)9Mkzr!@R=^tiy z?a!uY>vq}JpJPYTdh(GCLy})BbMtKG=HBm5+}tle7sK5W=PjR%PCicC@xTT+Olfp& z8AuGXVY(Q~Gm-x@>-LHgDQW) zD0@3)7ft+=HQ@@4Tv^q}s7&m>xhRfZ<2z$_yBJdx0w|CMTFC@&c_lF+q^0J7un_oQ zNC{h1FuFg$fkGq5z5xMN_gZ-I6UXFkrmrl2!Z0>@|{D8;b7W_aECx(`CD~jLwRmDAR3IG5=65(+G diff --git a/creusot/tests/should_succeed/selection_sort_generic.mlcfg b/creusot/tests/should_succeed/selection_sort_generic.mlcfg index 4d3cc5231a..544ee36e7f 100644 --- a/creusot/tests/should_succeed/selection_sort_generic.mlcfg +++ b/creusot/tests/should_succeed/selection_sort_generic.mlcfg @@ -628,8 +628,8 @@ module SelectionSortGeneric_SelectionSort BB7 { [#"../selection_sort_generic.rs" 35 4 35 43] _22 <- Borrow.borrow_mut iter; [#"../selection_sort_generic.rs" 35 4 35 43] iter <- ^ _22; - [#"../selection_sort_generic.rs" 35 4 35 43] _21 <- Borrow.borrow_mut ( * _22); - [#"../selection_sort_generic.rs" 35 4 35 43] _22 <- { _22 with current = ^ _21 }; + [#"../selection_sort_generic.rs" 35 4 35 43] _21 <- Borrow.borrow_final ( * _22) (Borrow.get_id _22); + [#"../selection_sort_generic.rs" 35 4 35 43] _22 <- { _22 with current = ( ^ _21) ; }; [#"../selection_sort_generic.rs" 35 4 35 43] _20 <- ([#"../selection_sort_generic.rs" 35 4 35 43] next0 _21); _21 <- any borrowed (Core_Ops_Range_Range_Type.t_range usize); goto BB8 @@ -693,8 +693,8 @@ module SelectionSortGeneric_SelectionSort BB19 { [#"../selection_sort_generic.rs" 41 8 41 121] _46 <- Borrow.borrow_mut iter1; [#"../selection_sort_generic.rs" 41 8 41 121] iter1 <- ^ _46; - [#"../selection_sort_generic.rs" 41 8 41 121] _45 <- Borrow.borrow_mut ( * _46); - [#"../selection_sort_generic.rs" 41 8 41 121] _46 <- { _46 with current = ^ _45 }; + [#"../selection_sort_generic.rs" 41 8 41 121] _45 <- Borrow.borrow_final ( * _46) (Borrow.get_id _46); + [#"../selection_sort_generic.rs" 41 8 41 121] _46 <- { _46 with current = ( ^ _45) ; }; [#"../selection_sort_generic.rs" 41 8 41 121] _44 <- ([#"../selection_sort_generic.rs" 41 8 41 121] next0 _45); _45 <- any borrowed (Core_Ops_Range_Range_Type.t_range usize); goto BB20 @@ -708,7 +708,7 @@ module SelectionSortGeneric_SelectionSort } BB21 { [#"../selection_sort_generic.rs" 48 8 48 22] _66 <- Borrow.borrow_mut ( * v); - [#"../selection_sort_generic.rs" 48 8 48 22] v <- { v with current = ^ _66 }; + [#"../selection_sort_generic.rs" 48 8 48 22] v <- { v with current = ( ^ _66) ; }; assume { inv3 ( ^ _66) }; [#"../selection_sort_generic.rs" 48 8 48 22] _65 <- ([#"../selection_sort_generic.rs" 48 8 48 22] deref_mut0 _66); _66 <- any borrowed (Alloc_Vec_Vec_Type.t_vec t (Alloc_Alloc_Global_Type.t_global)); @@ -760,8 +760,8 @@ module SelectionSortGeneric_SelectionSort goto BB18 } BB31 { - [#"../selection_sort_generic.rs" 48 8 48 22] _64 <- Borrow.borrow_mut ( * _65); - [#"../selection_sort_generic.rs" 48 8 48 22] _65 <- { _65 with current = ^ _64 }; + [#"../selection_sort_generic.rs" 48 8 48 22] _64 <- Borrow.borrow_final ( * _65) (Borrow.get_id _65); + [#"../selection_sort_generic.rs" 48 8 48 22] _65 <- { _65 with current = ( ^ _64) ; }; assume { inv4 ( ^ _64) }; [#"../selection_sort_generic.rs" 48 8 48 22] _63 <- ([#"../selection_sort_generic.rs" 48 8 48 22] swap0 _64 ([#"../selection_sort_generic.rs" 48 15 48 16] i) ([#"../selection_sort_generic.rs" 48 18 48 21] min)); _64 <- any borrowed (slice t); diff --git a/creusot/tests/should_succeed/selection_sort_generic/why3session.xml b/creusot/tests/should_succeed/selection_sort_generic/why3session.xml index 533f29cb36..216b2d283d 100644 --- a/creusot/tests/should_succeed/selection_sort_generic/why3session.xml +++ b/creusot/tests/should_succeed/selection_sort_generic/why3session.xml @@ -39,70 +39,70 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -111,27 +111,27 @@ - + - + - + - + - + @@ -142,49 +142,49 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/creusot/tests/should_succeed/selection_sort_generic/why3shapes.gz b/creusot/tests/should_succeed/selection_sort_generic/why3shapes.gz index fe7b7e5ca414cd5cf0828f60e46503317a229919..269147f7ec6a2c6c2c430ab2129cc39790ea5ebd 100644 GIT binary patch literal 4032 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 literal 3987 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 diff --git a/creusot/tests/should_succeed/slices/01.mlcfg b/creusot/tests/should_succeed/slices/01.mlcfg index 15c407ebeb..151009e3f2 100644 --- a/creusot/tests/should_succeed/slices/01.mlcfg +++ b/creusot/tests/should_succeed/slices/01.mlcfg @@ -139,7 +139,7 @@ module C01_IndexMutSlice goto BB1 } BB1 { - [#"../01.rs" 13 4 13 12] a <- { a with current = Slice.set ( * a) _4 ([#"../01.rs" 13 4 13 12] [#"../01.rs" 13 11 13 12] (3 : uint32)) }; + [#"../01.rs" 13 4 13 12] a <- { a with current = Slice.set ( * a) _4 ([#"../01.rs" 13 4 13 12] [#"../01.rs" 13 11 13 12] (3 : uint32)) ; }; assume { resolve0 a }; [#"../01.rs" 12 38 14 1] _0 <- ([#"../01.rs" 12 38 14 1] ()); return _0 diff --git a/creusot/tests/should_succeed/slices/01/why3session.xml b/creusot/tests/should_succeed/slices/01/why3session.xml index b339d54451..f4f1f2553e 100644 --- a/creusot/tests/should_succeed/slices/01/why3session.xml +++ b/creusot/tests/should_succeed/slices/01/why3session.xml @@ -13,12 +13,12 @@ - + - + diff --git a/creusot/tests/should_succeed/slices/01/why3shapes.gz b/creusot/tests/should_succeed/slices/01/why3shapes.gz index 574e31b24737339af3ef1ac275dd177da997f965..e5d8b2fbb8a087b5ead6bf73a06cc106bcd9dd0a 100644 GIT binary patch literal 644 zcmV-~0(<=*iwFP!00000|E*I^kDM?Jz4I%$ZM&y9frL~$mC$MtNY!3i<=Bx4VHcHw z7TAxU-w+s>kDckI7vjYBGtYkhbnExe_}ldUtLgfxZNB*2zy0hDf3Rv^L6KxOiGsw# zyA9T+c^aP4X4Q53w%xUbsX-MSA1b-@~sb<-bVQ2cbel6xV6B*~HgmhM2GM zsxBT+bolIch`^Qza2H4Z;PoJHoE5r7NWq&5MQJ`4P9t~B1DX6S%g}MC@-}&B@sMl eMP$K!uyH{OECq`VDUejAk@pvX@P+K71^@tf4nYq9 literal 641 zcmV-{0)G7;iwFP!00000|E*I^kDD+Mz4I%$ZM!FbfQ_q7CA3-uQni;>J~kR`XBU+~ z3+%_wudxY)WRqTc!5=g8%$xV-({0#4!*A1vucqs(w)qmW@b+^s{DG=@#S&%H7D=21 zaJPZlG*81b*s8j2-?sZ!n;J_3L%Xe-0rv2YQrMiwD=kUtK+j@@e}Ie+z>7s;(T)Ae z=uuHN+I|usUnINLjj%X+xpcYnT$*lDBG@U z-;BQ5|B@VbRRgtW3BGk)ifPBBC?0K%Sam6dJ9~57Y-X=E3Q3Wr3(BfS(J^vd!`BG5 z@`{?%1FM8@aQoj>9-$_kiR;7#ja7W2^8RI*l=jAtmKmVq4EQY>l{yRwU4|sOJS4=D zxo(hnG)U|W5}m~g{|EMW{rfzfVf^6EWR?|^%W7i$(aB7;i-LMuQT#j!wT8AdtH zNseody5^74bXp diff --git a/creusot/tests/should_succeed/slices/02_std/why3session.xml b/creusot/tests/should_succeed/slices/02_std/why3session.xml index 512e682529..3953067b13 100644 --- a/creusot/tests/should_succeed/slices/02_std/why3session.xml +++ b/creusot/tests/should_succeed/slices/02_std/why3session.xml @@ -9,7 +9,7 @@ - + @@ -20,7 +20,7 @@ - + diff --git a/creusot/tests/should_succeed/slices/02_std/why3shapes.gz b/creusot/tests/should_succeed/slices/02_std/why3shapes.gz index be7bfcff29f15c708a87250c5dfdcb1e4a99a972..3f6359d380cc504ab4de20a07573d9804e9ab0e4 100644 GIT binary patch literal 869 zcmV-r1DgCFiwFP!00000|CLouZ`(K!z3W%#w!1xX_{}0Y7)1p7(!J?wP$ZQYb*!x9 z?PmXdhqRSSwrsb60M7^c=FKBH{_|5gytubGl;2}NY`gvEQkI|oDh~g+?f$#0Np&(s z4Wr3xI-0Czqe*K%nox_;B(;Bukb|LOqt=ys8Z1)HE>fXu9 zJznOwp;oKRdf)jE6lLnPy@j);R9K01Ke<`0px10xX6o?+yHfNefQcOVjwx7 zQ><`9*Qd~g9~Lj(`sllT*dFlgi+o}j%!h~@^LF9BY@Yhwy%(3Vx#84Q4KRsQ+>4Ya zxhs^{V}ZZF;i{_mdQl<^#Llp@SnQrytV-4g33`_Vc8SZKjuPOjw3MGxYUHJ!G6YX2x}K|- zPW4Q^^oqvnW-6aqmJioo=%;6%sd9Zb>ZjAax>1(G8O5_Jg88XO=J4pR7M?+x5|mv6 zr{Jx=eA+g92=vNB$U|sKgjP#~a?&S1qceH(n7dm951I1nc>0jH=Rb_Zdtp|MJ82pe z*@B;QF5mEL1%1A6OT#ydD)7rfin~IJsw(O)W!v>-v)#M?|IH9x?_Y|-8_$pjlRN26%KBV$t)G5lfBLR#|C<<(64$!Qy~!CDVig(>`z`Vr-do;6>ww_f&-vxCLeb zSAzv&moP-o3ZV6lc>o9ssG>?s*Mx}E%8QI4?!p8QB19RyF*NW-kcQL7M<-)YCK!@o zW61h;ZZG{M#5T%xarNn}_T~9O$$OuCxIhD-59PK z!37CRcD%7dv2Ar0LQ`thGT1VY3QKa|uqmiP1L^;Dm)GoHtX``4_j0jI; vhWx$8Tcf}c4Tcin5^ohXibqZW&j;@dEh*AcmP$*-ucQ6|vHCp|^$7p~K*G6; literal 869 zcmV-r1DgCFiwFP!00000|CLouZ{s!)z3W%_)^<UZ-_}4G1;RWBru=*bQVb|@yuJr25Z^hv+-0i>XnpG!L z)qFH%4WlV)F`7`z(d4xnO;+owz=ubC4g2TA3sSMy*Y2O~Ti1qHQ5!sT+ui)#u#qSp-vOwYtJBuami6yFJeUgB?B&bVTmhS5%iBA}H$p!zWjF!Kg z@>5S%b99-}=Lk27naxB+bF1N5RXy{}83$bzQ`znM_Hs zy>zN)>ZMmSRxhXWmCN$c`V0N+%qy#0UySajUI`Rj#ekfsEP zOW+i|)t67(W)A_bJcK-irbM7x8kCbhB6P?gtK;eOygmP6B;E_NYTOBF zP-Kh$m~;7tUn}VIeOns7SyV;8ETpk0ek;a6c)VU#;~%{ z449C?A_|5aJ%?a}TnXl&bk-TCopRC%2aY=$(2Z(2v?Xgn86TKtfte^wD|pn6iYqQ1 z7mm|v?l^Nx7=rnR2?400R0uIJ`bZ^F1hi1d`|4Px7vXcH2E1MYx1UOH}XcABkPc3@iYG#50 zrZ|XT%@UruqghL=0CbB%dc-C)o>|WXMur%}5+vN|+Iw3DMbddJlkTyJkx3&(*+xPy vGvxnkoLV&s8p|6Ef(7o4)G - + - + @@ -53,103 +53,103 @@ - + - + - - + + - + - - + + - - + + - - + + - - + + - + - - + + - - + + - + - + - - + + - - + + - + - - + + - - + + - - + + - - + + - + - + - + - + - - + + - - + + @@ -158,13 +158,13 @@ - - + + - + diff --git a/creusot/tests/should_succeed/sparse_array/why3shapes.gz b/creusot/tests/should_succeed/sparse_array/why3shapes.gz index a7dea29c3370dccf9a92d0905d953c372a27304c..c80a5f4b9ad1d4bc55e4eecf80accbb3721c6f33 100644 GIT binary patch literal 3967 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 Z#30B)5QHEJK@?K7`6rz*7C+EG008&O*FpdQ literal 3887 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 diff --git a/creusot/tests/should_succeed/split_borrow.mlcfg b/creusot/tests/should_succeed/split_borrow.mlcfg index 09a9318d74..1ae2f34de1 100644 --- a/creusot/tests/should_succeed/split_borrow.mlcfg +++ b/creusot/tests/should_succeed/split_borrow.mlcfg @@ -64,12 +64,12 @@ module SplitBorrow_F end } BB2 { - [#"../split_borrow.rs" 14 8 14 25] y <- { y with current = (let (x0, x1) = * y in (x0, ([#"../split_borrow.rs" 14 17 14 25] SplitBorrow_MyInt_Type.C_MyInt ([#"../split_borrow.rs" 14 23 14 24] [#"../split_borrow.rs" 14 23 14 24] (4 : usize))))) }; + [#"../split_borrow.rs" 14 8 14 25] y <- { y with current = (let (x0, x1) = * y in (x0, ([#"../split_borrow.rs" 14 17 14 25] SplitBorrow_MyInt_Type.C_MyInt ([#"../split_borrow.rs" 14 23 14 24] [#"../split_borrow.rs" 14 23 14 24] (4 : usize))))) ; }; [#"../split_borrow.rs" 13 11 15 5] _5 <- ([#"../split_borrow.rs" 13 11 15 5] ()); goto BB4 } BB3 { - [#"../split_borrow.rs" 16 8 16 26] y <- { y with current = (let (x0, x1) = * y in (([#"../split_borrow.rs" 16 17 16 26] SplitBorrow_MyInt_Type.C_MyInt ([#"../split_borrow.rs" 16 23 16 25] [#"../split_borrow.rs" 16 23 16 25] (10 : usize))), x1)) }; + [#"../split_borrow.rs" 16 8 16 26] y <- { y with current = (let (x0, x1) = * y in (([#"../split_borrow.rs" 16 17 16 26] SplitBorrow_MyInt_Type.C_MyInt ([#"../split_borrow.rs" 16 23 16 25] [#"../split_borrow.rs" 16 23 16 25] (10 : usize))), x1)) ; }; [#"../split_borrow.rs" 15 11 17 5] _5 <- ([#"../split_borrow.rs" 15 11 17 5] ()); goto BB4 } @@ -119,10 +119,10 @@ module SplitBorrow_G [#"../split_borrow.rs" 24 16 24 36] a <- ([#"../split_borrow.rs" 24 16 24 36] (([#"../split_borrow.rs" 24 17 24 25] SplitBorrow_MyInt_Type.C_MyInt ([#"../split_borrow.rs" 24 23 24 24] [#"../split_borrow.rs" 24 23 24 24] (1 : usize))), ([#"../split_borrow.rs" 24 27 24 35] SplitBorrow_MyInt_Type.C_MyInt ([#"../split_borrow.rs" 24 33 24 34] [#"../split_borrow.rs" 24 33 24 34] (2 : usize))))); [#"../split_borrow.rs" 25 12 25 18] x <- Borrow.borrow_mut a; [#"../split_borrow.rs" 25 12 25 18] a <- ^ x; - [#"../split_borrow.rs" 27 13 27 21] _z <- Borrow.borrow_mut (let (_, a) = * x in a); - [#"../split_borrow.rs" 27 13 27 21] x <- { x with current = (let (x0, x1) = * x in (x0, ^ _z)) }; + [#"../split_borrow.rs" 27 13 27 21] _z <- Borrow.borrow_final (let (_, a) = * x in a) (Borrow.inherit_id (Borrow.get_id x) 2); + [#"../split_borrow.rs" 27 13 27 21] x <- { x with current = (let (x0, x1) = * x in (x0, ^ _z)) ; }; assume { resolve0 _z }; - [#"../split_borrow.rs" 29 4 29 21] x <- { x with current = (let (x0, x1) = * x in (([#"../split_borrow.rs" 29 13 29 21] SplitBorrow_MyInt_Type.C_MyInt ([#"../split_borrow.rs" 29 19 29 20] [#"../split_borrow.rs" 29 19 29 20] (3 : usize))), x1)) }; + [#"../split_borrow.rs" 29 4 29 21] x <- { x with current = (let (x0, x1) = * x in (([#"../split_borrow.rs" 29 13 29 21] SplitBorrow_MyInt_Type.C_MyInt ([#"../split_borrow.rs" 29 19 29 20] [#"../split_borrow.rs" 29 19 29 20] (3 : usize))), x1)) ; }; assume { resolve1 x }; assume { resolve2 a }; [#"../split_borrow.rs" 23 11 32 1] _0 <- ([#"../split_borrow.rs" 23 11 32 1] ()); diff --git a/creusot/tests/should_succeed/sum.mlcfg b/creusot/tests/should_succeed/sum.mlcfg index a3c78db1d2..a65be54b53 100644 --- a/creusot/tests/should_succeed/sum.mlcfg +++ b/creusot/tests/should_succeed/sum.mlcfg @@ -247,8 +247,8 @@ module Sum_SumFirstN BB6 { [#"../sum.rs" 8 4 8 67] _19 <- Borrow.borrow_mut iter; [#"../sum.rs" 8 4 8 67] iter <- ^ _19; - [#"../sum.rs" 8 4 8 67] _18 <- Borrow.borrow_mut ( * _19); - [#"../sum.rs" 8 4 8 67] _19 <- { _19 with current = ^ _18 }; + [#"../sum.rs" 8 4 8 67] _18 <- Borrow.borrow_final ( * _19) (Borrow.get_id _19); + [#"../sum.rs" 8 4 8 67] _19 <- { _19 with current = ( ^ _18) ; }; [#"../sum.rs" 8 4 8 67] _17 <- ([#"../sum.rs" 8 4 8 67] next0 _18); _18 <- any borrowed (Core_Ops_Range_RangeInclusive_Type.t_rangeinclusive uint32); goto BB7 diff --git a/creusot/tests/should_succeed/sum/why3session.xml b/creusot/tests/should_succeed/sum/why3session.xml index a4b5840672..0f794689b8 100644 --- a/creusot/tests/should_succeed/sum/why3session.xml +++ b/creusot/tests/should_succeed/sum/why3session.xml @@ -14,7 +14,7 @@ - + @@ -23,19 +23,19 @@ - + - + - + - + @@ -44,12 +44,12 @@ - + - + @@ -60,18 +60,18 @@ - + - + - + - + diff --git a/creusot/tests/should_succeed/sum/why3shapes.gz b/creusot/tests/should_succeed/sum/why3shapes.gz index 4de98dfe4e1bcf87b54898fe1b75b6c632652055..8161fc4e8d88bc4e9a527769777d7b705a9ef7f9 100644 GIT binary patch literal 1875 zcmV-Z2dwxXiwFP!00000|IJrhZ!5VCe)q5N+qMY`NYuS(9)bXY0xY%Tc5Y{JvVdVz6#0>&D3bom#eDm#dq~^)Q`&5oUHkXBoL~HPw)@R3 z+b7a9Z6_lBx%ELXYL%_oU%R8>x*0`|cNa<(At; zT0iXmH;Vpy^O)`mDlQQ9%57YGpBBqDtRA<^r?gn5mNX)e-(Dz-sj@)jhfNnBL)wx? zy35N(HKw6t*dGYqn1P{(wHns)ZlbRT)d?cP=_4DIy6OxPqm6yEkcJW?x9jjIJJ$wE z2r0+gKCS~2C5(a29yTd-ZCvi~5_+aPSz{cLfif>bS=fCzjxQ$Aquc1M z6zM_~?{;akKsR2ny6vulmerutlUMb3(XFCu)3-fy2u#nce$7^0_b^9Iw^_P&htzU6 z2_Ry&X>$PUmwT8IcZeXy&Bf)DyKtBg_q$)8i(j7R2O8iQg}w$u&*9J>sD|OfEvR|- zLFg#o$BnxGjLX8;ligU?_i4ANWM$$Hb-vqdx^F4|wEl0^)-Eqwwr#5NZt)5DTpfkNw zYCxTYc0s-;urFc8mxGFjM}(p!F^}I&Em-?%f(QF_C?AJ3_YyXv;vt?c>-Dr)p1dRu_(daq!9H~iN$ep+&#O^SCWMH zNpjGrxkCG*ec-s?>v|D3>2cfbu(WicuPAAi)^3X;3)1J+)tC``D`)lk68IiLa&~KC z@bdCSdcF;PHiO@PjCzPq8E>d?&()BJ)xPYU_Ujs3LBMP8v-q=i<$J>J{#FD}yHS0V z-xd0Dk~8QC-De;`?L42tpY|^(Q1#irB988?m+j)Q-7fFj+I=3eLNWMh-()81<*d1x z=Wa8{jYVE=w!1}b@~|5m}tshtJc&dZfh7UMbx}i=KH+!Up!O`?l zMx)CEU8J%9p;QC(b{wqs%KX%5*)aXgI&uoo_461tWttlV8j#n0(*{{Aa@ufmdv|nU z$T_+$^l7?c=JxtbD!h=ahcXRgx0TWjQ$3|hO>LO0rt!DofIl4H6cYWR8dkf|WGyFe z0(Wr>JsH%Qs~lEU*gjOD6*&c&t;ZEm_qdt1J*mp5reTQ1P}D*$r!^} zJr^4Wk%rZKEQ1Rk6YIe^>o(8_1qa9y_c~lMay=cc8#pyv7w*9v$Em58tJ6{eyB-GA zGD)G8mGy^*cJ5P8hj{;J0p!%vzZFHDfPOkk_fg9+LPjvW4H*0Z8)NmZ)*6;9gf zcAS9K_47ZrI5iZ39&$D_nyDNe7aj;zlxHI%)q;rZRd!s?C9_IfZIzW)SZs?UcCTo)qoKm?By_fk8- zPB8F_3l%g7R0ab<=%8uHDJJmD!5mPMSO5#O5Y)T}m8nEn4oQZjWTw$Ulw1iV0elLQ zR#g58;7GX7S!f=zESF|H&Bi&7P7AJMuE64R*xD(eQDtcolg5RVBqLfIlEBc&pv09i z%kZ08hVaIMwxBG?kD4L`LqoFC%zzhY(0R=wrcy8p#|S^?#4=-a<6KT0uVH6vvOYTv;wHFTQd7Fw4PmI-@`cc!%!~h`=|)43|zbEmaf>T(16!uk#O! ze&D18P35dqPCR)@0${-lj>cI1<6q~W_fcU(qs+&sL-sUg=Q4m{DMUr{TwzB8tLP6+ zIxS0wG0YomPhM%FOr#m3N0?_ot5f{P`z0xMZ*03<#F&go%Hwrn3ot(5r5dPysV{L2 zu!<9$4RE{(=vKsTPqXwYc@nsAe6FNb;!9jZPo&Vqr|b+442l`yWK1k`o*@DoqxLo4 N{U5wS1;6AP000L@oGkzV literal 1860 zcmV-K2fO$miwFP!00000|IJrhZ!0$re$TJ)TX#>efFx44Me`5@2o#{`KD3y}H8heY zHEPeKwv*HS_e*JJ?6G6#c8Z(=hD}lACyJsz(f{}|+x+Gq(q{IQ)|*Aw{(GioU;cTq z{lhQXC#=}*AVS4QQB-0Sc?Gu@{>LjHQ+k-Mx|o*CZ?=BDoiDq4R^h=!YU7~3``KUl z#b%yX58MBZroXNq(_KcT0ij;`wQuj!e9?yG<7V-c=F8NwN(T1FGiNzZ{$_BUAQGH8Sc7w4f+1mCW0x(GMb44mcC?kP zZv$tHp)>+8WZPR*AVLVfHn{5Hjqrs^cugdSdTSnieuRG$DI!;C!rdg0qG zNsH|yfrQzn^&YGr?qEjTA%m1R9~V#li>HFP-~M)NetB9Sco2su{3RHE4u|(ZB@JKv zoZB~Vgpc-p-njqoILvyppQRt}>u$a7zNYxY>i1%3e6wi%vbV|CFzYUEeCSpW%d}0A z6{DN^&t01)A@$gsMSD+HU0ZP&;BMx>bgNX6T#ow*dTE_D-SR0{0Y%YAqX*PU`sVCg zlJ^{DydC7YzbIsyi|_DW6jItz(vFb!bab9L?p`O3V*@o9oB>r~WEFM52s*QlA>x=) z!ay@SBC>pKr(N8C-wrk8Rq4vXXN=rms_66}j)?@?-n_r$!{ z_&>{d9@gn`(`|`9y3n&mTBeoXkjb3&b#*mX#BPDgqeO-(*Zu`_3TL%w=a21Xao?5~=8+f*#1FfNWHMe{R5!DxThC}>-YnLe z?YunXFFTEcmH+du-TsIAh4NCa$(^8CnxaSscko36 z#Rc|810f(3(;d<-b!4)W@Tc5M5loi)j0xxiM8W`=LSW!OP1+cMvM(4KkqXK==EjA# zNqjK&x|QgYLJefjduc9#T~C|qN}TGgvv$86QrFbmm2N46T@MXv?xbjy!>&HtmZrWE zvYddRQYdGUk#+tW^eP( zgR0exlO1=QIeWsJVUwT^JPAnDxJQa0HnBm*S*W3b;tekVczOY&vQdLTEl^^EUKnUp z&nsJY*QBA`^S!-D07MdVD`h?NTf~4OFW}09vQ3K0=I8LwSilO+6cu%-~bWmgj6(E*QORs7gYQJu<`fvw?ZJjVqXeZRW z_n@Q~Ax4VZN~)*eK`R~w@t>&;V>7T0j05dJIgk#>6`n2ozBPG`L0Kh}NnU{mA(dgV zk)e?yHMFKOPFbgzlh#R+l~dA5`k<5Gq;Qg-kLBGd_?v}eh)8s*wNapwq82$YDy+KZ z+IYi-EaB)+3n$6IBzS8R#~`60hEf`8pz`2N!yr?f;`?x2=@y%C{ts2wVY z6ctin2o8lq?vPz5FD;W8ydXBEi-^J2#2kW4hIQjZ2@bzgaHttdgG$#jF&!<&sC*KM z`JhB&c?k}_Q*d<@N>XeoBtey4Cm9ievk0|pf>JY0FBf;3eOjTZ#wg9LrRPv_Dl@b; zCQxWdVYFf;BKYK>5 - - + @@ -36,38 +35,38 @@ - + - + - + - + - + - + - + - + - + - + diff --git a/creusot/tests/should_succeed/sum_of_odds/why3shapes.gz b/creusot/tests/should_succeed/sum_of_odds/why3shapes.gz index 7544fa4bbe8bafdb99c190edcc6e31f451b59440..67c5b86ed3e99361b8a40b8175a0f87139de52d4 100644 GIT binary patch literal 1707 zcmV;c22}YUiwFP!00000|HW5JZzDGnzUx=$mW_=7EWWw00~iJj3J7x84S0;e=ED(U zs~vTFX7=B2k=-q~WNEA+!KzWIg&{SIh1<|B|}pr?l%f?e^bGxxD&*;cxs8 zjs$Sz&fnYy;>hY}oFIujEZqGvx4UKc`n+!Qx{Yz+Z~fZ}g*W~Oe?2D+X#OhDG6u58 zI?@E+{jtMgwds#Ibl}jR5DF0LNBp93Ki)c4#v8{RjJCokvl@g}MF>tBzTR|egkAK1 z_|5hcb0{-Rse@?>j-r__yEeXt)Dg%0^|j+pI<+cnGLFp2aV^F*AJ=R((-wo`3=Xlx z!3Nr==a>F}PLKL}vV=JE-eD(w4U@BB?`?SR?(y^p0vrF!>&sIjC%6S}bU2*4vGHPn z4t}Op=EnE!db92Qmmq~;vT6mgz+)6fpLXk)9d38O{*T{2CN%NO0tunr#!ZjUa8b{D zz@DqNU4Ovzg*@sE)7v_(+o$Na>GPgAdU+sLH!q&r_GO8hez)=49%q|=b{mMfO}jU+ zVY!EyaL3bj2lw!lwvYX9M=En^_*fjqQ(gHrB^TQTllxLxc8xb#`n`FJV%keU;o^0)6Cpq-)^&g zM5%V`fQ_j4>;JaT$>CgAKswBJscWA;;R`9oRHHzTs51|)$weMKCqKQ>MR`!Ow>Rxp zEc0K6?bl(KUc0u(ciV>H8K$T7>^qcMlfmfQ$%6ek&+3JWdWj%8%bIO?ef{nQd<>0g z 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 m-E*?mTC - + diff --git a/creusot/tests/should_succeed/swap_borrows/why3shapes.gz b/creusot/tests/should_succeed/swap_borrows/why3shapes.gz index 93382a831da9fa8a5b3c50fb2575aad764b9ca2d..a9a14a7d21db741158c99096b6287d02e2461811 100644 GIT binary patch literal 340 zcmV-a0jvHWiwFP!00000|5Z`TZi6royz>>lwdLfsv9T-V5LJqT)MK^BRtwlIY8p~V zli#mx0;L!B<(b(X?sGPN(8-PL;)b#7kB>~V{2@DkQ+K>@5b?x2PX8@7!j&wjMsB6RbZ#6)W396<$pg@S5ukQvC zXX{Q7Ovi&<>(Fax-;`_=vdNJE2Z&kH26}hrw>S)Pl*dLsKjeX7N-dg%$b-K{>Xc!o zQ>IbfW(wuX;Ps1<_z2{ft2J95)t0~eB6VkLw9FdPmZkuQoV;wDQ zf1f1nO1Z?(cHXo79yfeE(#4Pb>W8uG&(GZQ%@h0nqV9YZDE2G^di%MYyhM#=M_V)q zDQJ{c3=VC|3WWW>`qz!=;K%-S^#WBjNvho(@A>Op93p|?3lIIk#~WQ(5^Y411kr%l z-NB+N7pg@l^2fMEUJ)$S{V?=5-#&bPL=uJWOeX~Ww-g|#Ofu62pb^r}>x)6A-ntS; z<+DMpC(wH=&ojzwLu3LZM4JfWGnYmDI>8d%+;^yRrHDP7kwr82462onE3>M_ - - - + - + @@ -46,17 +44,17 @@ - + - + - + diff --git a/creusot/tests/should_succeed/syntax/06_logic_function_contracts/why3session.xml b/creusot/tests/should_succeed/syntax/06_logic_function_contracts/why3session.xml index ff9e678606..40beb9cd22 100644 --- a/creusot/tests/should_succeed/syntax/06_logic_function_contracts/why3session.xml +++ b/creusot/tests/should_succeed/syntax/06_logic_function_contracts/why3session.xml @@ -3,13 +3,12 @@ "http://why3.lri.fr/why3session.dtd"> - - + @@ -19,7 +18,7 @@ - + diff --git a/creusot/tests/should_succeed/syntax/09_maintains/why3session.xml b/creusot/tests/should_succeed/syntax/09_maintains/why3session.xml index 97ab29ddc0..215f318bd0 100644 --- a/creusot/tests/should_succeed/syntax/09_maintains/why3session.xml +++ b/creusot/tests/should_succeed/syntax/09_maintains/why3session.xml @@ -19,7 +19,7 @@ - + diff --git a/creusot/tests/should_succeed/syntax/09_maintains/why3shapes.gz b/creusot/tests/should_succeed/syntax/09_maintains/why3shapes.gz index 0fb5a4ac398989edb8c1f5dc4afefb28be308bda..cd905f40c3265c0462569ccfb04b867ff918ef6a 100644 GIT binary patch literal 296 zcmV+@0oVQ?iwFP!00000|8399YQ!)M1<<{}!pnBLk>pq0T^T4D=sL>|ifu80l9VLm z`B!@J+aHA1(@I@b(t%s+{@0Yf(qF(OOZ;F ux7A8#%a*J!S%=yyF_t9dHb5e5fyCO7O^jxJtxKR|U8x@zUXQOH0ssJ^-jhNA literal 296 zcmV+@0oVQ?iwFP!00000|80*uYs4@RgnRu8mC2=9tzN5i;UM@RwaXl9Jvc+KgDw2~ zV_!nJ*TOWz%*W2tPR=L(&a+(dH2351DxKUt3+{)7r=EujEw<3ALp|JiAG|-ly^D4) z%Q(rJ=Xz9^P5#_cEpFW@&*RsUp@mBh?|u{45WIz~y2hvt^N&=w$W?bxeTL$i<`=Hx zu^(y+5&m}F`46^P!DBt;X^kw~*XQoF^PuH~U`yyr234#Jj9?39r$TgIQG(>9YCsSf z(wa;RsUxQhTSLKfNX}vk0i#TJL5Wwl2AtNg`OdON6jS<{g1llYvxloDD uko7hhHfUT<(l<^NZLq}Dd5EYwz+#L~It0C5XCuhakoW;J%Ojf}0ssKMWsb4{ diff --git a/creusot/tests/should_succeed/syntax/12_ghost_code/why3session.xml b/creusot/tests/should_succeed/syntax/12_ghost_code/why3session.xml index b1871b20bc..e3eef2c3d1 100644 --- a/creusot/tests/should_succeed/syntax/12_ghost_code/why3session.xml +++ b/creusot/tests/should_succeed/syntax/12_ghost_code/why3session.xml @@ -8,7 +8,7 @@ - + diff --git a/creusot/tests/should_succeed/syntax/12_ghost_code/why3shapes.gz b/creusot/tests/should_succeed/syntax/12_ghost_code/why3shapes.gz index ac184bbd4d218f45d8b5d0cac32380858307a17b..c408fd74c55af1501a753144975a5dafb619b10f 100644 GIT binary patch delta 305 zcmV-10nYy00@?zQ7=J5{gXkebijoV*JrZplyNO8S(u5ZN9_Imw*Tu6Q@6PV5uQ$=q z;L#4z*`9{h_qUOXHa7&fAR#UT#31r=zAh-Rw-?|cKH0%{XG?)kJO?(t;|3VeIg=Wi z6S$9@KSle-4`bC1mGQ?nGCpJ5pJm8fLlKJCkO%EGWT7R&yEiR%w%?BphDp25U#f$z zZAU@k=&QCL@qn*1n-zbhloK8BLy|(A6IZ&-l@DP=#tkdK5MP3vl9A6HZ$gSg@6C6f zL24E!e8s@bedmgKt10Mp&l-}MNkHYRPnF?++fu)N!!*`B5#qGdlJlA++G;9yXazGn zVXV@$M(ZM0P$G9};zXQsG*a-GCABb8CrTwMmJVH%7P?3ZRm6oXM8U~BQAL={Spon6 DqnVJN delta 306 zcmV-20nPr}0^0(R7=I(NV?+-TQj}ac?vZHY+D$|nmnO9E_c#wgye^*gcz1SZeZ7f> z29I`#&h|94zQ2uRw7DU;g&2}DKmsB!=j(z3dwT&M;*%YGceWJx#B*TNJ8pmhoinMS zIf47g`BSuS{4iGSP#J%GBjYo+{W%VKYbZkT8uFmMhAgxscsRGk&i4DU!7ypp`Ac>1 zJKIr+ar9N&k9fdWn$3#8Qp$-A_#sIl$%!jn=E{dKBIAaYUx+V3PR5bW9dClhq4(xH z&p?~S312ZVbKkjQ-l~Rl-E#_RW)#SL^(iy_Z(H)$Z - - + + - + - + - + - + - + - + - + - + diff --git a/creusot/tests/should_succeed/syntax/derive_macros/why3shapes.gz b/creusot/tests/should_succeed/syntax/derive_macros/why3shapes.gz index 939c74e2150d9830196ad0c3ce10b872cf1e8ed0..0846f1611f0af89f2f022fbf54c4f68043678779 100644 GIT binary patch delta 1147 zcmV->1cdv734{rd7=IRb2Izyvus{I;CWis94T>U>2721P5AyfnCW*4!nZ8)XVzHLT zS4IE+W&iSzee^H;cmMoycY649&-Y*c*u6g4yN7pXP+vuAU>1qNvxp6uMKE+0kzxI= zSORqRCjJ^eKVjyO}Kfn3mkj38KzxZw~kkrCRqoY+vi*-7ez=?(5 zRZViZ35**^+J6+Vk;iU@T2_eVN6}IQ+4!NykMhj16Os|ZtLZ?4ZJSO6cy)^Et>*8I z;msL(?7Kq^*sy^POR5`ya!pWD+#u1g49Kvx%bM%1GjmA`N8gx}VY#*z7Qp!!z79<4 zk4ip3tgng%pWmn3#w^2T( zfIn;GuLjt1fX=sGgm{D*pe3@1(qc&RqKvlO5Rgt>k4)@1NB;WL$jaJSR+)!!2G+q8 z>l1VBqJJS0hz3*S}kJ%tz!YwSTJ!K&F|N+UCs|C9+p30{>S6% zzqk3H?&1brOc&U!aGEaV-5x$`xV+V8DSs^MzTfSXXJ9#ZN+`<_;gdqlPR@&wjMFs2 zUTChFrkZH1L8BdG0R=aLXBO}zf}h-^7$uxi6098e5bZz%(n`x{J#uFiny7Qikr99i z6c9povN)I_M8h(nUcoDcygARxM0 N{s)53Z8Y)>006A*K#c$Z delta 1145 zcmV-<1cv*B34#fb7=KoA56}mVVSxeyOb!EH8OWI;G3$sZr&L&zqn_$^&63g3N zUJ1~+oA7Hzm%i?B`}gx{d>dY^vOwD8B~}L`#nVkbR(I~%zki(W-+i*P?_w?;n_`Qm zeB*)IJ?0p|5t6CnayR(P=bb8(o_ooN{+kyjG zaex(v0F=9NqxX-uKTe~+CzftT>?s7|?)&qb?+(dq-TjMi)&glMj8;BYd@Qey`yx1@ z@VnxP2W|pm1%FAM0$O!!R;X2hSbY>NMo`r`?D$chDRx9MAb2$$sIaZm2>`E$l5(r* zdt*hlhaKDIPy$wLVBM1H2B1_E)8^|mNGfS;XWY<9qngB+{zmj)0B2b~&V^h+Aif(a`n{5^tAT@JTsb4j@e0Lk{ zV+{DSME+`lFB{l=>)8lfxCNFY%U~@FX&Pi{OAP^W$Mwk6^>gH}KdmaP4P|9L3>sL3 zDby$D+J9w5B#`B{%5?UGtsyPZR(G$uC2szvRU%j3=E`${I?f~~lp0G90O8+{v&ZW1d^m)xn8?w>{R@&f78+xIhY%}6dNfxqt9u8@c`)bz3JXw0L zFy()GPoK5k@ftPPw`qQpR&KiQZ;$t3N)|k}j(>`csTYzhGc%_EQ#LYYNko<9NlRAphbG-A1^hPo#!PyOq{P&pzm6b8MTw9V3S<2mBJ0klSv@^JmPjvm zFNH*n!ERGqay6H(q$?~n17iBihBS^ASs<${K$Ha=)M$Rcy6td&FtJ%ZGXGl2~B{J5e6~^Jsapaj?_!%sTihl0=}0< z7;c!M1`QapQ;cfSQ*=xyfKiNtQX>PRS+C?YuswuzV1O8H)Q)+LN_)~%=YewyBb%HU zi9$jNvLPIgV2~Kl29yD5Kp5Z#m;t(*XjnT9{UGH4iZjiWn6wGW diff --git a/creusot/tests/should_succeed/take_first_mut.mlcfg b/creusot/tests/should_succeed/take_first_mut.mlcfg index a3138c788b..863f8648ed 100644 --- a/creusot/tests/should_succeed/take_first_mut.mlcfg +++ b/creusot/tests/should_succeed/take_first_mut.mlcfg @@ -161,7 +161,7 @@ module TakeFirstMut_TakeFirstMut requires {[#"../take_first_mut.rs" 14 29 14 34] inv3 self_} ensures { [#"../take_first_mut.rs" 6 10 13 1] match result with | Core_Option_Option_Type.C_Some r -> * r = index_logic0 ( * * self_) 0 /\ ^ r = index_logic0 ( ^ * self_) 0 /\ Seq.length (shallow_model0 ( * * self_)) > 0 /\ Seq.length (shallow_model0 ( ^ * self_)) > 0 /\ shallow_model0 ( * ^ self_) = tail0 (shallow_model0 ( * * self_)) /\ shallow_model0 ( ^ ^ self_) = tail0 (shallow_model0 ( ^ * self_)) - | Core_Option_Option_Type.C_None -> ^ self_ = * self_ /\ Seq.length (shallow_model0 ( * * self_)) = 0 + | Core_Option_Option_Type.C_None -> Seq.length (shallow_model0 ( * ^ self_)) = 0 /\ Seq.length (shallow_model0 ( ^ * self_)) = 0 /\ Seq.length (shallow_model0 ( * * self_)) = 0 end } ensures { [#"../take_first_mut.rs" 14 57 14 74] inv6 result } @@ -180,16 +180,16 @@ module TakeFirstMut_TakeFirstMut goto BB0 } BB0 { - [#"../take_first_mut.rs" 15 20 15 25] _6 <- Borrow.borrow_mut ( * self_); - [#"../take_first_mut.rs" 15 20 15 25] self_ <- { self_ with current = ^ _6 }; + [#"../take_first_mut.rs" 15 20 15 25] _6 <- Borrow.borrow_final ( * self_) (Borrow.get_id self_); + [#"../take_first_mut.rs" 15 20 15 25] self_ <- { self_ with current = ( ^ _6) ; }; assume { inv0 ( ^ _6) }; [#"../take_first_mut.rs" 15 10 15 26] _5 <- ([#"../take_first_mut.rs" 15 10 15 26] take0 _6); _6 <- any borrowed (borrowed (slice t)); goto BB1 } BB1 { - [#"../take_first_mut.rs" 15 10 15 44] _4 <- Borrow.borrow_mut ( * _5); - [#"../take_first_mut.rs" 15 10 15 44] _5 <- { _5 with current = ^ _4 }; + [#"../take_first_mut.rs" 15 10 15 44] _4 <- Borrow.borrow_final ( * _5) (Borrow.get_id _5); + [#"../take_first_mut.rs" 15 10 15 44] _5 <- { _5 with current = ( ^ _4) ; }; assume { inv1 ( ^ _4) }; [#"../take_first_mut.rs" 15 10 15 44] _3 <- ([#"../take_first_mut.rs" 15 10 15 44] split_first_mut0 _4); _4 <- any borrowed (slice t); @@ -211,17 +211,17 @@ module TakeFirstMut_TakeFirstMut [#"../take_first_mut.rs" 17 21 17 24] _3 <- (let Core_Option_Option_Type.C_Some x0 = _3 in Core_Option_Option_Type.C_Some (let (x0, x1) = Core_Option_Option_Type.some_0 _3 in (x0, any borrowed (slice t)))); assert { [@expl:type invariant] inv2 _3 }; assume { resolve0 _3 }; - [#"../take_first_mut.rs" 18 21 18 24] _11 <- Borrow.borrow_mut ( * rem); - [#"../take_first_mut.rs" 18 21 18 24] rem <- { rem with current = ^ _11 }; + [#"../take_first_mut.rs" 18 21 18 24] _11 <- Borrow.borrow_final ( * rem) (Borrow.get_id rem); + [#"../take_first_mut.rs" 18 21 18 24] rem <- { rem with current = ( ^ _11) ; }; assume { inv1 ( ^ _11) }; - [#"../take_first_mut.rs" 18 12 18 24] self_ <- { self_ with current = ([#"../take_first_mut.rs" 18 12 18 24] _11) }; + [#"../take_first_mut.rs" 18 12 18 24] self_ <- { self_ with current = ([#"../take_first_mut.rs" 18 12 18 24] _11) ; }; [#"../take_first_mut.rs" 18 12 18 24] _11 <- any borrowed (slice t); assert { [@expl:type invariant] inv0 ( * self_) }; assume { resolve2 ( * self_) }; assert { [@expl:type invariant] inv3 self_ }; assume { resolve1 self_ }; - [#"../take_first_mut.rs" 19 17 19 22] _12 <- Borrow.borrow_mut ( * first); - [#"../take_first_mut.rs" 19 17 19 22] first <- { first with current = ^ _12 }; + [#"../take_first_mut.rs" 19 17 19 22] _12 <- Borrow.borrow_final ( * first) (Borrow.get_id first); + [#"../take_first_mut.rs" 19 17 19 22] first <- { first with current = ( ^ _12) ; }; assume { inv4 ( ^ _12) }; [#"../take_first_mut.rs" 19 12 19 23] _0 <- ([#"../take_first_mut.rs" 19 12 19 23] Core_Option_Option_Type.C_Some _12); _12 <- any borrowed t; diff --git a/creusot/tests/should_succeed/take_first_mut/why3session.xml b/creusot/tests/should_succeed/take_first_mut/why3session.xml index 38830f42c9..8894a3d0a3 100644 --- a/creusot/tests/should_succeed/take_first_mut/why3session.xml +++ b/creusot/tests/should_succeed/take_first_mut/why3session.xml @@ -7,7 +7,7 @@ - + diff --git a/creusot/tests/should_succeed/take_first_mut/why3shapes.gz b/creusot/tests/should_succeed/take_first_mut/why3shapes.gz index 56c63406c2f7353872768b53c7a875cd8efe6597..5d42c4c7012fd15f413286ba4c81f6d9ffa8523b 100644 GIT binary patch literal 543 zcmV+)0^t20iwFP!00000|AkV^ZktdL-SZXf+OoPYUR9}tEJtM1O{-ZNjm@=#f*}QB z=kq&U?j=@;Rb=7A%$b=pkFSA0JmHHT{EO~~x@*7tkso~X#=ls%ml)WCg%NNELl6!s zkPb>v4hjezl6u843q&Q+tc;yNpU0226en>Ef{QSJ1IpcxdCj^d=Q4P*Xc%|RU zraRS#o9K+dN2iU%P5HY!Yrs1ry{+&cjrTL`Y^7gat7)u{8|?MaH5V;_r}@0s31sB7 zwA@iRaFx%uF#&63Ab38XiQqP5W1c&yt(6W;JM{Y(mDU7@qW4()9^B?}IGC%v~Clsclrg3l_w( zc4lEl?^_KZW2=BGQ;e&v3E-qo#wH;7AbJUr%!EiImCPWcMYN2ZXlaj#EWylO_8>#M zhY3)I&`u8jyuLKkWa+22TlWb#kh7%yC2qvWD}9()vZjuCy`X`yVqsoa%!NnWo0{`r;~%@;AMsh2$GRWJ^87k_UdVKs?8A^JJdLVDC3Ljk^GK>R hlw4@^IV;j4DdHk3!a^0Y5Ct!o_Ybr-Tel$v008C#4tf9p literal 533 zcmV+w0_y!AiwFP!00000|8-MKZ=5g?zVj=%wdLd&uc}l+D?wI93lr9#CIP4$gt7vw`sadb?%P3VUXb1RdqY!8Q)os+1g(pA<0cy zE8qQ`E1?8)tt{WILf`{FK#C*QgjcQr(sfo0wk5$V`FXpaIpTqB69PxbC{+}V8HYEAgwVLL0zr$V+UGt^|@HC$fXaX5IEiHEx z4qWB)Ay2?s83>-w=PkIE?98_j+FI$RhkWJ{9Kw6Nl8lrprVoB**y+dTexeQBoQ(65TZZ2<>zR&)f3o6_k* z8>1y_>X?@+=Hy)XE|Q2rM7IL->%eC0LV^$r^Ri+tJPv{t?rPkAilEfSO9Yno1)5_Sc3c@fHMfZHg8?{sN(pnT8iV%`rvcH5^E!0L6&G$RB zbh-!5;T{?&PkM8K%DGHwxxfjUqxgPkTB`EWY$&}lg05cEJ^$EI=91>h(xY274%@oD zGQ)bZCr0=ij44BUJ%m7(9Z}y$ZZT4e#N9{%F~)NUx?|85t+G=50q^oOZKVJJ0K$?( AZU6uP literal 146 zcmb2|=3oGW|F%5``3@-vxV*19Dz{a=>>!t#oRlzA`C(b+EMZ-)Q{S^MEn7bGWc5s6 z_OEhrE1kTT_ElOr@ZX(QdoOX0R8`)zQ?^oKeQ_2k(s_7yhC*gOCfAFs?pQNWH#NjQbn{JZIyYpi=;n06Rti diff --git a/creusot/tests/should_succeed/traits/12_default_method/why3shapes.gz b/creusot/tests/should_succeed/traits/12_default_method/why3shapes.gz index d524c10c4d74385433bbfd7e347baf9fa155667d..a6f69926d2f9e63ea9576f2bb06b659d14c7e000 100644 GIT binary patch literal 182 zcmV;n07?HJiwFP!00000|6Pl*3WG2dMfZF~#@6YXnB-Y-Cr)&JJ(taw>;3-{x@j9+y#-(Q?|EPhtW-*9uTvc>(If(Z9AYd}lNyc4MG+Uk k(4bW*U`xs>W1T{3T8~mm@QtvRCxtw+FN#XA4AlSt09;>G&;S4c literal 182 zcmV;n07?HJiwFP!00000|6Pl{3WG2dM)y2L#@6W?e{NE6C* literal 190 zcmV;v073sBiwFP!00000|80)V4uUWcgztTd9+gvf`(rWjU`!f#fnH6qC6WL|ASAxM zN-y1OAvbP40s#QsPX&Guw|xTasgGP6l$!I0#M(w(fZ+>~kO=9~yD z-593WE@9Ql`(K#m?<(6y3I s3(%AoSU|xDL!K*zEO(XuB;LIbbClX2n3Ni+EW`@F02I*ZI069x0HEwv-~a#s diff --git a/creusot/tests/should_succeed/traits/16_impl_cloning/why3shapes.gz b/creusot/tests/should_succeed/traits/16_impl_cloning/why3shapes.gz index 8ab72e74ed207d8c2550ea99b58f014a186f4aa8..02a8dd49b0a77c016b7d54729ae5093f49302a70 100644 GIT binary patch literal 148 zcmV;F0BipriwFP!00000|5b~@3IZV%MfZNiTb3(rQZQ%{!7%=S+jurl8nCfc?DrF@ zMXSrXoU`FjZup=AjdEGidH@Z4%jy%CwFxIihDYp5jOlf`rCu>g+FZ@h33ij51bYLt3fkkP0001s CpGO@4 literal 150 zcmV;H0BQdpiwFP!00000|5b~z4#FT5MR&g9jmiXA+hXEiOq%iotmXw?V-s2w2>!lJ z)WPZIoSeJkkni}Q43$!z<9dP?_@0#~&TAD`3=Ge>B_YJuZHbLOff;BTo~&eNzsW(D|gVX@2TmuYMds0#NI0nYLug3Zx>!un56&! E0HD}MXaE2J diff --git a/creusot/tests/should_succeed/traits/18_trait_laws/why3session.xml b/creusot/tests/should_succeed/traits/18_trait_laws/why3session.xml index 10f8deeb30..bfd0c24fa6 100644 --- a/creusot/tests/should_succeed/traits/18_trait_laws/why3session.xml +++ b/creusot/tests/should_succeed/traits/18_trait_laws/why3session.xml @@ -13,7 +13,7 @@ - + diff --git a/creusot/tests/should_succeed/type_invariants/borrows.mlcfg b/creusot/tests/should_succeed/type_invariants/borrows.mlcfg index d77e000ba7..d59db346b9 100644 --- a/creusot/tests/should_succeed/type_invariants/borrows.mlcfg +++ b/creusot/tests/should_succeed/type_invariants/borrows.mlcfg @@ -96,12 +96,12 @@ module Borrows_Impl1_InnerMut goto BB0 } BB0 { - [#"../borrows.rs" 24 8 24 19] _5 <- Borrow.borrow_mut (Borrows_NonZero_Type.nonzero_0 ( * self)); - [#"../borrows.rs" 24 8 24 19] self <- { self with current = (let Borrows_NonZero_Type.C_NonZero x0 = * self in Borrows_NonZero_Type.C_NonZero ( ^ _5)) }; - [#"../borrows.rs" 24 8 24 19] _2 <- Borrow.borrow_mut ( * _5); - [#"../borrows.rs" 24 8 24 19] _5 <- { _5 with current = ^ _2 }; - [#"../borrows.rs" 24 8 24 19] _0 <- Borrow.borrow_mut ( * _2); - [#"../borrows.rs" 24 8 24 19] _2 <- { _2 with current = ^ _0 }; + [#"../borrows.rs" 24 8 24 19] _5 <- Borrow.borrow_final (Borrows_NonZero_Type.nonzero_0 ( * self)) (Borrow.inherit_id (Borrow.get_id self) 1); + [#"../borrows.rs" 24 8 24 19] self <- { self with current = (let Borrows_NonZero_Type.C_NonZero x0 = * self in Borrows_NonZero_Type.C_NonZero ( ^ _5)) ; }; + [#"../borrows.rs" 24 8 24 19] _2 <- Borrow.borrow_final ( * _5) (Borrow.get_id _5); + [#"../borrows.rs" 24 8 24 19] _5 <- { _5 with current = ( ^ _2) ; }; + [#"../borrows.rs" 24 8 24 19] _0 <- Borrow.borrow_final ( * _2) (Borrow.get_id _2); + [#"../borrows.rs" 24 8 24 19] _2 <- { _2 with current = ( ^ _0) ; }; assume { resolve0 _5 }; assume { resolve0 _2 }; assert { [@expl:type invariant] inv0 self }; @@ -139,7 +139,7 @@ module Borrows_Inc goto BB0 } BB0 { - [#"../borrows.rs" 102 4 102 11] x <- { x with current = ([#"../borrows.rs" 102 4 102 11] * x + ([#"../borrows.rs" 102 10 102 11] [#"../borrows.rs" 102 10 102 11] (1 : int32))) }; + [#"../borrows.rs" 102 4 102 11] x <- { x with current = ([#"../borrows.rs" 102 4 102 11] * x + ([#"../borrows.rs" 102 10 102 11] [#"../borrows.rs" 102 10 102 11] (1 : int32))) ; }; assume { resolve0 x }; [#"../borrows.rs" 101 24 103 1] _0 <- ([#"../borrows.rs" 101 24 103 1] ()); return _0 @@ -211,10 +211,10 @@ module Borrows_Simple goto BB0 } BB0 { - [#"../borrows.rs" 32 8 32 16] _6 <- Borrow.borrow_mut (Borrows_NonZero_Type.nonzero_0 ( * x)); - [#"../borrows.rs" 32 8 32 16] x <- { x with current = (let Borrows_NonZero_Type.C_NonZero x0 = * x in Borrows_NonZero_Type.C_NonZero ( ^ _6)) }; - [#"../borrows.rs" 32 8 32 16] _5 <- Borrow.borrow_mut ( * _6); - [#"../borrows.rs" 32 8 32 16] _6 <- { _6 with current = ^ _5 }; + [#"../borrows.rs" 32 8 32 16] _6 <- Borrow.borrow_final (Borrows_NonZero_Type.nonzero_0 ( * x)) (Borrow.inherit_id (Borrow.get_id x) 1); + [#"../borrows.rs" 32 8 32 16] x <- { x with current = (let Borrows_NonZero_Type.C_NonZero x0 = * x in Borrows_NonZero_Type.C_NonZero ( ^ _6)) ; }; + [#"../borrows.rs" 32 8 32 16] _5 <- Borrow.borrow_final ( * _6) (Borrow.get_id _6); + [#"../borrows.rs" 32 8 32 16] _6 <- { _6 with current = ( ^ _5) ; }; [#"../borrows.rs" 32 4 32 17] _4 <- ([#"../borrows.rs" 32 4 32 17] inc0 _5); _5 <- any borrowed int32; goto BB1 @@ -299,16 +299,16 @@ module Borrows_Hard goto BB0 } BB0 { - [#"../borrows.rs" 39 8 39 21] _7 <- Borrow.borrow_mut ( * x); - [#"../borrows.rs" 39 8 39 21] x <- { x with current = ^ _7 }; + [#"../borrows.rs" 39 8 39 21] _7 <- Borrow.borrow_final ( * x) (Borrow.get_id x); + [#"../borrows.rs" 39 8 39 21] x <- { x with current = ( ^ _7) ; }; assume { inv0 ( ^ _7) }; [#"../borrows.rs" 39 8 39 21] _6 <- ([#"../borrows.rs" 39 8 39 21] inner_mut0 _7); _7 <- any borrowed (Borrows_NonZero_Type.t_nonzero); goto BB1 } BB1 { - [#"../borrows.rs" 39 8 39 21] _5 <- Borrow.borrow_mut ( * _6); - [#"../borrows.rs" 39 8 39 21] _6 <- { _6 with current = ^ _5 }; + [#"../borrows.rs" 39 8 39 21] _5 <- Borrow.borrow_final ( * _6) (Borrow.get_id _6); + [#"../borrows.rs" 39 8 39 21] _6 <- { _6 with current = ( ^ _5) ; }; [#"../borrows.rs" 39 4 39 22] _4 <- ([#"../borrows.rs" 39 4 39 22] inc0 _5); _5 <- any borrowed int32; goto BB2 @@ -408,10 +408,10 @@ module Borrows_Tuple } BB0 { [#"../borrows.rs" 46 4 46 14] x <- (let (x0, x1) = x in ((let Borrows_NonZero_Type.C_NonZero x0 = let (a, _) = x in a in Borrows_NonZero_Type.C_NonZero ([#"../borrows.rs" 46 4 46 14] [#"../borrows.rs" 46 13 46 14] (0 : int32))), x1)); - [#"../borrows.rs" 47 8 47 19] _6 <- Borrow.borrow_mut (Borrows_NonZero_Type.nonzero_0 ( * (let (_, a) = x in a))); - [#"../borrows.rs" 47 8 47 19] x <- (let (x0, x1) = x in (x0, { (let (_, a) = x in a) with current = (let Borrows_NonZero_Type.C_NonZero x0 = * (let (_, a) = x in a) in Borrows_NonZero_Type.C_NonZero ( ^ _6)) })); - [#"../borrows.rs" 47 8 47 19] _5 <- Borrow.borrow_mut ( * _6); - [#"../borrows.rs" 47 8 47 19] _6 <- { _6 with current = ^ _5 }; + [#"../borrows.rs" 47 8 47 19] _6 <- Borrow.borrow_final (Borrows_NonZero_Type.nonzero_0 ( * (let (_, a) = x in a))) (Borrow.inherit_id (Borrow.get_id (let (_, a) = x in a)) 1); + [#"../borrows.rs" 47 8 47 19] x <- (let (x0, x1) = x in (x0, { (let (_, a) = x in a) with current = (let Borrows_NonZero_Type.C_NonZero x0 = * (let (_, a) = x in a) in Borrows_NonZero_Type.C_NonZero ( ^ _6)) ; })); + [#"../borrows.rs" 47 8 47 19] _5 <- Borrow.borrow_final ( * _6) (Borrow.get_id _6); + [#"../borrows.rs" 47 8 47 19] _6 <- { _6 with current = ( ^ _5) ; }; [#"../borrows.rs" 47 4 47 20] _4 <- ([#"../borrows.rs" 47 4 47 20] inc0 _5); _5 <- any borrowed int32; goto BB1 @@ -513,10 +513,10 @@ module Borrows_PartialMove BB0 { [#"../borrows.rs" 54 16 54 19] a <- ([#"../borrows.rs" 54 16 54 19] let (a, _) = x in a); [#"../borrows.rs" 54 16 54 19] x <- (let (x0, x1) = x in (any Borrows_NonZero_Type.t_nonzero, x1)); - [#"../borrows.rs" 55 8 55 19] _7 <- Borrow.borrow_mut (Borrows_NonZero_Type.nonzero_0 ( * (let (_, a) = x in a))); - [#"../borrows.rs" 55 8 55 19] x <- (let (x0, x1) = x in (x0, { (let (_, a) = x in a) with current = (let Borrows_NonZero_Type.C_NonZero x0 = * (let (_, a) = x in a) in Borrows_NonZero_Type.C_NonZero ( ^ _7)) })); - [#"../borrows.rs" 55 8 55 19] _6 <- Borrow.borrow_mut ( * _7); - [#"../borrows.rs" 55 8 55 19] _7 <- { _7 with current = ^ _6 }; + [#"../borrows.rs" 55 8 55 19] _7 <- Borrow.borrow_final (Borrows_NonZero_Type.nonzero_0 ( * (let (_, a) = x in a))) (Borrow.inherit_id (Borrow.get_id (let (_, a) = x in a)) 1); + [#"../borrows.rs" 55 8 55 19] x <- (let (x0, x1) = x in (x0, { (let (_, a) = x in a) with current = (let Borrows_NonZero_Type.C_NonZero x0 = * (let (_, a) = x in a) in Borrows_NonZero_Type.C_NonZero ( ^ _7)) ; })); + [#"../borrows.rs" 55 8 55 19] _6 <- Borrow.borrow_final ( * _7) (Borrow.get_id _7); + [#"../borrows.rs" 55 8 55 19] _7 <- { _7 with current = ( ^ _6) ; }; [#"../borrows.rs" 55 4 55 20] _5 <- ([#"../borrows.rs" 55 4 55 20] inc0 _6); _6 <- any borrowed int32; goto BB1 @@ -625,10 +625,10 @@ module Borrows_Destruct assert { [@expl:type invariant] inv0 x }; assume { resolve0 x }; [#"../borrows.rs" 63 4 63 11] a <- (let Borrows_NonZero_Type.C_NonZero x0 = a in Borrows_NonZero_Type.C_NonZero ([#"../borrows.rs" 63 4 63 11] [#"../borrows.rs" 63 10 63 11] (0 : int32))); - [#"../borrows.rs" 64 8 64 16] _8 <- Borrow.borrow_mut (Borrows_NonZero_Type.nonzero_0 ( * b)); - [#"../borrows.rs" 64 8 64 16] b <- { b with current = (let Borrows_NonZero_Type.C_NonZero x0 = * b in Borrows_NonZero_Type.C_NonZero ( ^ _8)) }; - [#"../borrows.rs" 64 8 64 16] _7 <- Borrow.borrow_mut ( * _8); - [#"../borrows.rs" 64 8 64 16] _8 <- { _8 with current = ^ _7 }; + [#"../borrows.rs" 64 8 64 16] _8 <- Borrow.borrow_final (Borrows_NonZero_Type.nonzero_0 ( * b)) (Borrow.inherit_id (Borrow.get_id b) 1); + [#"../borrows.rs" 64 8 64 16] b <- { b with current = (let Borrows_NonZero_Type.C_NonZero x0 = * b in Borrows_NonZero_Type.C_NonZero ( ^ _8)) ; }; + [#"../borrows.rs" 64 8 64 16] _7 <- Borrow.borrow_final ( * _8) (Borrow.get_id _8); + [#"../borrows.rs" 64 8 64 16] _8 <- { _8 with current = ( ^ _7) ; }; [#"../borrows.rs" 64 4 64 17] _6 <- ([#"../borrows.rs" 64 4 64 17] inc0 _7); _7 <- any borrowed int32; goto BB1 @@ -710,10 +710,10 @@ module Borrows_FrozenDead goto BB0 } BB0 { - [#"../borrows.rs" 70 13 70 21] _a <- Borrow.borrow_mut (Borrows_NonZero_Type.nonzero_0 ( * x)); - [#"../borrows.rs" 70 13 70 21] x <- { x with current = (let Borrows_NonZero_Type.C_NonZero x0 = * x in Borrows_NonZero_Type.C_NonZero ( ^ _a)) }; - [#"../borrows.rs" 74 8 74 9] _6 <- Borrow.borrow_mut ( * y); - [#"../borrows.rs" 74 8 74 9] y <- { y with current = ^ _6 }; + [#"../borrows.rs" 70 13 70 21] _a <- Borrow.borrow_final (Borrows_NonZero_Type.nonzero_0 ( * x)) (Borrow.inherit_id (Borrow.get_id x) 1); + [#"../borrows.rs" 70 13 70 21] x <- { x with current = (let Borrows_NonZero_Type.C_NonZero x0 = * x in Borrows_NonZero_Type.C_NonZero ( ^ _a)) ; }; + [#"../borrows.rs" 74 8 74 9] _6 <- Borrow.borrow_final ( * y) (Borrow.get_id y); + [#"../borrows.rs" 74 8 74 9] y <- { y with current = ( ^ _6) ; }; assume { inv0 ( ^ _6) }; assert { [@expl:type invariant] inv1 x }; assume { resolve0 x }; @@ -721,8 +721,8 @@ module Borrows_FrozenDead [#"../borrows.rs" 73 4 74 9] _6 <- any borrowed (Borrows_NonZero_Type.t_nonzero); assert { [@expl:type invariant] inv1 x }; assume { resolve0 x }; - [#"../borrows.rs" 75 8 75 10] _8 <- Borrow.borrow_mut ( * _a); - [#"../borrows.rs" 75 8 75 10] _a <- { _a with current = ^ _8 }; + [#"../borrows.rs" 75 8 75 10] _8 <- Borrow.borrow_final ( * _a) (Borrow.get_id _a); + [#"../borrows.rs" 75 8 75 10] _a <- { _a with current = ( ^ _8) ; }; [#"../borrows.rs" 75 4 75 11] _7 <- ([#"../borrows.rs" 75 4 75 11] inc0 _8); _8 <- any borrowed int32; goto BB1 @@ -780,7 +780,7 @@ module Borrows_Dec goto BB0 } BB0 { - [#"../borrows.rs" 108 4 108 11] x <- { x with current = ([#"../borrows.rs" 108 4 108 11] * x - ([#"../borrows.rs" 108 10 108 11] [#"../borrows.rs" 108 10 108 11] (1 : int32))) }; + [#"../borrows.rs" 108 4 108 11] x <- { x with current = ([#"../borrows.rs" 108 4 108 11] * x - ([#"../borrows.rs" 108 10 108 11] [#"../borrows.rs" 108 10 108 11] (1 : int32))) ; }; assume { resolve0 x }; [#"../borrows.rs" 107 24 109 1] _0 <- ([#"../borrows.rs" 107 24 109 1] ()); return _0 @@ -860,20 +860,20 @@ module Borrows_Impl3_Foo goto BB0 } BB0 { - [#"../borrows.rs" 94 12 94 23] _5 <- Borrow.borrow_mut (Borrows_SumTo10_Type.sumto10_a ( * self)); - [#"../borrows.rs" 94 12 94 23] self <- { self with current = (let Borrows_SumTo10_Type.C_SumTo10 x0 x1 = * self in Borrows_SumTo10_Type.C_SumTo10 ( ^ _5) x1) }; - [#"../borrows.rs" 94 12 94 23] _4 <- Borrow.borrow_mut ( * _5); - [#"../borrows.rs" 94 12 94 23] _5 <- { _5 with current = ^ _4 }; + [#"../borrows.rs" 94 12 94 23] _5 <- Borrow.borrow_final (Borrows_SumTo10_Type.sumto10_a ( * self)) (Borrow.inherit_id (Borrow.get_id self) 1); + [#"../borrows.rs" 94 12 94 23] self <- { self with current = (let Borrows_SumTo10_Type.C_SumTo10 x0 x1 = * self in Borrows_SumTo10_Type.C_SumTo10 ( ^ _5) x1) ; }; + [#"../borrows.rs" 94 12 94 23] _4 <- Borrow.borrow_final ( * _5) (Borrow.get_id _5); + [#"../borrows.rs" 94 12 94 23] _5 <- { _5 with current = ( ^ _4) ; }; [#"../borrows.rs" 94 8 94 24] _3 <- ([#"../borrows.rs" 94 8 94 24] inc0 _4); _4 <- any borrowed int32; goto BB1 } BB1 { assume { resolve0 _5 }; - [#"../borrows.rs" 95 12 95 23] _8 <- Borrow.borrow_mut (Borrows_SumTo10_Type.sumto10_b ( * self)); - [#"../borrows.rs" 95 12 95 23] self <- { self with current = (let Borrows_SumTo10_Type.C_SumTo10 x0 x1 = * self in Borrows_SumTo10_Type.C_SumTo10 x0 ( ^ _8)) }; - [#"../borrows.rs" 95 12 95 23] _7 <- Borrow.borrow_mut ( * _8); - [#"../borrows.rs" 95 12 95 23] _8 <- { _8 with current = ^ _7 }; + [#"../borrows.rs" 95 12 95 23] _8 <- Borrow.borrow_final (Borrows_SumTo10_Type.sumto10_b ( * self)) (Borrow.inherit_id (Borrow.get_id self) 2); + [#"../borrows.rs" 95 12 95 23] self <- { self with current = (let Borrows_SumTo10_Type.C_SumTo10 x0 x1 = * self in Borrows_SumTo10_Type.C_SumTo10 x0 ( ^ _8)) ; }; + [#"../borrows.rs" 95 12 95 23] _7 <- Borrow.borrow_final ( * _8) (Borrow.get_id _8); + [#"../borrows.rs" 95 12 95 23] _8 <- { _8 with current = ( ^ _7) ; }; [#"../borrows.rs" 95 8 95 24] _6 <- ([#"../borrows.rs" 95 8 95 24] dec0 _7); _7 <- any borrowed int32; goto BB2 diff --git a/creusot/tests/should_succeed/type_invariants/generated/why3shapes.gz b/creusot/tests/should_succeed/type_invariants/generated/why3shapes.gz index ebf48a2458bfdf29cb5dbadc68a01fe4dc6c95aa..82255199019fb05d79ee3694e114f58b57923e74 100644 GIT binary patch literal 217 zcmV;~04Dz*iwFP!00000|3!|?Zo)7SgztU|A4^VNCpK|!AyQ<{t@a4oP+N@zNyrb+ zk7Gl7noqMcqy5PE{7a*o`NK_fH}s!e^K8eKJ9Yg-p=emW5ul{{Tp=z&4u}x%1wy!Q z*4KIifrzTwe40AymmF101^rtAQKh1x?{&O789HT5Nh}){<8(rRDq$Az{;I~)5dw37i}w5>!~n?@2$4V T7B;uif)(ruKi$GDEdc-kU~*$0 literal 213 zcmV;`04o0>@+R}@S&8rHPqDaU&x7uUT#xV&Jj|QAH zpWg)%DJjhb);r_b9foJm?f3X?diP|yzHFN}H*~!hXJv7fe;n)2mNNigODvlcb|p4e z0y_++09fXX1%828PL&5@1SJRp7b#Yz+1WkPkg95b^19ucN`OS$=4E5C#xrTBbG+Pw z95wk2TMun|Pt%FoY|S~Z+FhxA2=GX{p?snzglk;fow2V{$8`UB~QuIKPR2P=2`3 zI899P^`cCA$J$b8Iih#_Wr!&?o3S?kvGlM+XZp4}nW1ytXbR*{=lzjc63QG{xkcO2 z&!rtl7NIU;mY`o0LPTt%gGg*df-;Ik5EpKuVil=S1xhNRe8m-WegUq`Q9Pjn008D3 BqCx-w literal 354 zcmV-o0iFIIiwFP!00000|8-J9Zi6royz>ffZRy3vhCmf6MUjwmZnejvjd2qszzsNQ zp5Fx$sVU6`);r_b9frri@Avp+djDj)zOwC$AN#?Rw|2NL-j2nU4^Za zzz)MH0+xGYfgd1NQx$+1K?#DuWrnqBcW#d~q^|9E(b&?|0wg+HRIS4X&!nBr@u~zl zYVsMj8QS!orW3U-&AF)UuF@eycqH9eKF|~54K8oa*w>Xd1uexOA~4hJ2G0+Zc9eT= zEJIja$Lx%Q1X8*M>BSZ#lLn;IMGnb**Bm&zwLNz?a7KHKihN1|jHU!Q{}lnD{BWUh znwa79MVa)Djib;C#NhXrA*R%9#@hbJ(!&y+>1};7L+85D6v&^>>pin1lzXuDKW#@p zm-f7J8 - + diff --git a/creusot/tests/should_succeed/unnest/why3shapes.gz b/creusot/tests/should_succeed/unnest/why3shapes.gz index f748b7cd627afe18fe44afadb4848f641c7b1e42..aa3bbeb2d27e7af31663ef6a6fb0d99730442425 100644 GIT binary patch literal 213 zcmV;`04o0 zrpXfK29$y7xAnn_3)agO#d`g^t_8o!E<|}AN1rAkKFB(Bd$fRgGNe7MaaP;Xwk?62 P)CUs3JxU^NDakTMC2s&GeUZO@}gzcT`mDC0i3ohi|Xe!Q}d;mud?K=tq000~*RBZqN diff --git a/creusot/tests/should_succeed/vecdeque/why3session.xml b/creusot/tests/should_succeed/vecdeque/why3session.xml index 8e8c782d51..70a678afd8 100644 --- a/creusot/tests/should_succeed/vecdeque/why3session.xml +++ b/creusot/tests/should_succeed/vecdeque/why3session.xml @@ -58,7 +58,7 @@ - + @@ -67,19 +67,19 @@ - + - + - + - + @@ -88,25 +88,25 @@ - + - + - + - + diff --git a/creusot/tests/should_succeed/vecdeque/why3shapes.gz b/creusot/tests/should_succeed/vecdeque/why3shapes.gz index 0dae1679baa78a65cb21adada17d6c77c317d724..1e15650dea741095b9b4e9d5cad9e366ec7cddc5 100644 GIT binary patch literal 2259 zcmV;^2rTy>iwFP!00000|J7MbZyY%ezWZ1Bw!0Y&Ac`U-Ep`t^07Jg`vWq&7q36Va zASz3 zJp2)_Z~x>;ov%fjV2EbYL&OP(s3$W-m}rP<;`5XEkAKFSdi(pshbYc&ZdU)f`nW3f zMol(8tgfzaAL7UOUv<`9KKtZiac{-W0W-1GKR(y2PP)hC*U6{5npd~w`ay!4HLuKd zJdZc`HU9hVb3I@Rwx(u{{^=~PQC@*Mrq-1}WpyFKXHj7Dm$lm3;t-C60gvN=MUP(( z9)>S|24Cx=id{|X=lJJmo0qfjE?(g-z(s=i+x)!4hc3OBcaL0QSN!Fdcz=ES`%QgV z-A?W)4c*AuQ_c1Bc>g)w&)#lx-D5h#-Ut`B@2~!~`dFs}^ey_`@e8^IKN@q z?`PV_``cCC$D^P80fzl?hJ9A?*Mt0d;s0fp{g!3F_BmKaH&~vfnPuLvtOvL2k7ky+ ze}qrV;}NUqp0GTWc3C!NP`hOrXK=<0me-QWaJYoKLj2`W=w_|FUu&l-gvaN)11b-E zTd1bn;0;t>L)FKj@)4+f5Gp^0s`uy)sBYlfLZxoQZJ@d}R6O9#?K#A=54UKD7aF;v ztrwnkX_GsV_EiWyW_^%_BYCeaFhw*QYN%1 z6Bxxoo3>;-F;@h~%7pMqnGB`fGGQG2ZmG62IL1M>Nc*T3%>&JdaRS&+@vL-&V#Z_L zNZ!7p8_hP(Ho+}E2hFSp&8!!i&4y+*$mLC6vi+1_u{uUG>nAi1rAIW6y0KfDT?e|E~l+soZ6?s79#T<*>+mz!bfa%T{`ZWryWz5dVs$Aws!$aM=BU3?7#6WOfJ&z2FE z?8RZKC*r(}uA;=?K$~zFPSC z)gs^QCt4pRS|7SsX2lmt)*F)b;%ZH@#4||lhst1oy@V@4!XQ~b=%?&C?!EJ-tcX4@ z=hdwL26@!YE=t{nOr$vSh;Bl=$HmF?{jzCSvTV-l2RUGtCS!WRiN22Yl98I0Vse8fCo*rOmgRQ zBb}qsn8}G*)wnS=Ed&fx0>-_{pmQzNl;?m+B`u*`TJNP0*sEgNC5h z7udJaS_8zkYRx_-Nxl-(#NZM&-x=3FXcx2%n*V=C$biY45}V}7KxLDXoCS1F)-7~u zc7$KaSB#k&2xCnS99FMTE(1fhrHm%Io&}_UqJaT*K==wyGsj$$s|}Nt^!OxsBj8+J zHZ^+Po%(<-pbf}h*}DdtQNpt(v&;o8gY@<}=2~lZHO}76w*(+=xF}spB7?bU6}g%Q zDS7Q}QqTd2f(ZtL(ZRsCLQ{zF)v67c+JW@YthQAY-21u@zRAP38 zu}UR_*XWa#wuZXbFF_!I6FmoV43$gh(G9kaTn#wZdMEtOG+}LF<1cR4dJzBWWnr%3(Bs!lSlOtZ7mv3seqF zflXliDKJ+#n$2h}wGwMBmLW4(RMi%#sioDk{pn!q%-TuCgN_D^m64N^1=coEHa7LD zw>nq|R`C14?&rdvlXUiZoRjOslPsi9WW3f2URKW`vdasj2a+)fd_ zNvhf8OVY(PtepFNV(r_A1)#`Mo{$sR2;iY4OO0BUX_aK;nqzS~IMJ1$e6a2f1mz?Q z&qYRIFB!23O|B|7XCcX4?E6V`COCX!aoOx;GE&)lryG|9abD8AH)xyeW%bm#;B0Ul z9KF5hWUbImM=&v(;s`R7(p-)uN{^P^?$r4n-J19~c!WtxBO(s3$W@Vp~OUty3B&C*G z9#r60Dq-K8YV$l3trx*6nTB;QXRVXTJ5hfnkG4sP$>^G!9L*|APV%|PN+y>x7gcx! zXujC8>_yqgAc?@O2#Hpgh)TDZ4arghJF$GZaln`rvdj;VT5&S#WyqSjDo4^UV8EtV z|HFc;8^$QgOn*W=Wos|wjXbmU5o6`dp{s#=H6J3iX007NMg6jYP literal 2258 zcmV;@2rc&?iwFP!00000|J7JcZydQ1z3W%#mc)w%Sga3{L2@t_5U7hT3HrDKKX(Pl zl2?*9`T414Pme~@%vcWWUF%|Vy1S}gJ+i7E_1AZ&_rIo(?f&%lc6Wbud-L~GIequH zlZW5Z)y?lRnX}E3Cs>y>*>#B%u1h=7x`c_>rJ3aHB>m%`>AKzg^6+cYVAt2T|GE5d zTidmnTza^@yt;WvAJTu#`w{ZRC+ACer+yB&NwxjxZ^YZ~8#_A`1_aqb!!ykS~_g6Q+ zT(^hYo5???VK{mJ+;a0g-G9pWbF`b%_P8#vH^U|DPnZ9?{m`ZZ^ey%y@RHuo8>5Tc zo2IFUk(XUo%7t_33w9{ z4sc=1blA^yNcT6lWgm}W3I`Yt#~BXAq#qCR7nJ|cvm72-4x5-O%jj2@=he)zY+1G| zx0{bigGg8yfmWkT0Wx}+Hx0VUx zS|*H3neetuU@Z>bwk0=+xnww2CXCO@WHs6?6Ty|=N2=WnPH?4KSNo_|%LC0wa01v* z@oaR2V!>nGNZ-Dq8_ho6ZIWqh+1(iZgWA^fBnDXpL6vvu^%4J$MQ7{ zOzes|d%s9ncIStwo>f6J$IKTXCDGm>#66Z)G z+){^gE*pX=jPw>XBUObaPlZZV2R2T(MmAU zUV`n@(IPKLi+;18XnT}sduXoAhMy(bZb`OFs13=Q&r0$*RD|R8lCCBRE6Mu7IAt$! z@70@nMGR#*ueA9e^wDs;7>y9BNO9dq^b@*0Ax@^BPW$cM=|j7JxLj^rC$(5 zXc?i~z#?R9HKF)+8bS;{x+sw&MT|B=G$$s2bPvv(48}2{_+Bd~Q+4b%hEp&x#Fus! zz!mhSgb<)eYZoE-4k=i*Lb~;Xg#{qjk~B{~yRgX2`iBrxXY=qqvL~ zn}gi3;2a3QQY^5&_Zkq{dfO~(YCx@}L`9fTMl6n~78ub+gs%{^=U^MNt)-I-dgv%2 zz*7MZ!on5_~HpmTEGYtMeALDOAKnIe}#{Ui6?3B=QG=0dEXJuj0DR zrZrD4OV;KB+8ngG%wQNIE2I#~M{<7zs!)U1>M*r9Dw&PZj#q8=NyJ;TP{j7n02Z8{ zmyo$zabPG}uQencwMW#@+W_Vws})D4$oNMiMBUGx^ir!e)*Uya^CbuYN-o9(9ti!P z3=)uo(<%VnTf;QE`|ec}_@1TSBLQ@qi^=`UW zzcT~2v(Z6xia$j0-xvN=e83*8<(6Gz)j~}tEr!sG!&-;Ra}pg#N73PToJiM#MD29W zSKE5UG^-Le853} zTHvbvlS$-QrLfM)O4+HjP*u6yCp<-uZ!E6>R7hOQMHOn(PF0)FPVZOZDHsl?-be4E zm+1NJWoJ#PMk?l78&;!=DuQHPM;54A5+ zCYv|g7tGs8$5pgJs|>j5rCG219^0%yd&;3?zq4O&C8KIZZ~tIaOnbd{scNk(NX?=z z)wQy25PWyYSxVQNvN7ElQ}hDOU=k+pd~eAE?Ciz&2fpTBERpvPS!ZhRKCs?Kt!HDC zcDj}JZ`xW}1$VFp3`*y$g91Fw*U&Kk<-_0(f#0;InoFuGsOhw7!KC>T5)=#Y`os!-A*oF?wqW&>ZDnN2~{Q`F&pVsa|peM?Y{7< z9g-*mq0@{`FM6qJ`}BI;g14zu+ClqjpVG4TmYV48E3{0a{mXL6I#ey0x@}+bIr)^t zTbDxW236q-qw4ftvtB%M@FDDA`<$zgRH)dZys66^02An0?zse|5FM - + diff --git a/creusot/tests/should_succeed/vector/01/why3shapes.gz b/creusot/tests/should_succeed/vector/01/why3shapes.gz index 09ed095915ff9b197caa64c8ac5eec92247b3550..ead06830c64d7d663469d4ff072feb6fd2d71647 100644 GIT binary patch literal 646 zcmV;10(t!(iwFP!00000|9wo2SR7go(F0hUcL2A-|( z_6}>)JoV2=S#@pC#le=Q79g;kuXJ(Li6 zC?NKbLqbg*TU);DO~-&Uytx6+flJ`Z)ngtcWb_u{E!vg(HxHb zZvvj^(mY}6euK-3kvCeF5+BHwQd-rN=C!EpQ?+N#2r}MNpSQGsn0kA+XB3ld`z^Mn zv-Qc4`Vnr5@3t}jGp|9#pvB0ng=ems#=)lRbQG(pLG9S*{%Wx0uf6q`yH zrtZ$qrZr^MZ{wCoQzXLTg!Rip(p2}swe~@rBVP|kNyitUbUM!eP@rmxoqcJ_ZaHz# zfiB=mtFh`R7hOBaB_b!6ia><}8j6Lqc)JFfjEG9g5lL*!8I*AGw1bwkG5k7!QA$wU z4bA*5()kxbUUIpyap?-3MY$9;2l)w8R})4Fcr%Aw5W629IMEDfnx|xJkPSnhTvM<; zzsIg>o@&$EhMdE>WP+VNn1X_%jGn{~`ZyE5%pW=Ng>L= zrg^;AgLN*aHQj?$E7$~&whidkia(~ctCdnb*(IR~1((Po9%B-fhV6K$L)-}rxXQWA gxyU)sIm?qg&Z9icb*^%mlQn0nzc; zAa>fX@121$ZbPzx!+o54Ih^71HW;4OQ4hgM_d{d4Z$TJrzih@|s_9M%kZguA&}^e_ z?^LV1r}0@~SKFF%aWJ)R889`PqUlC;P_HC)4R1>JHXH%-lo4(F1 z$RPHRLV`;jdsDwudLTfFy14;LfpVb2%_ANp81xb5Bh*L8{+fn)f@^BW%l@4wl|CHD z-v~U>WqHK7{Z6ebhS_LcO7(!L6x*7v)~`ito|=ldAn>@tJ#X>;Ve9Q(MX)B@k9*bY z!L%oh>PKo-(Twak{8AQ!;ts2F}t+ zD$XveQjqvn?(nKg)A#1A>raQDxaecksTL&3To$J$*?#s;^4@M%60t5c5};P|&_cJv z`C0cGqw;Ot8fmJKusEsqWuhTVe z0%kGgtm4{*auMNL#8Tv4C9YhB4eDkoxgc_H4>i(QGfe&ZI7tdirxb9F9n(Yb+7|1TB`{+UPP) zO8f$@&W-@2*uXA$G<|@duK1&Sv)Kqi%eahVo+PE@H7zxXIWH?g!dS4722|vf=al7? d=9J_~9_LXW<}w#K&oP>l&0nWn{=BvY001W_K0W{d diff --git a/creusot/tests/should_succeed/vector/02_gnome.mlcfg b/creusot/tests/should_succeed/vector/02_gnome.mlcfg index 9de5e83518..b0c0bdaa59 100644 --- a/creusot/tests/should_succeed/vector/02_gnome.mlcfg +++ b/creusot/tests/should_succeed/vector/02_gnome.mlcfg @@ -496,15 +496,15 @@ module C02Gnome_GnomeSort } BB13 { [#"../02_gnome.rs" 34 12 34 28] _31 <- Borrow.borrow_mut ( * v); - [#"../02_gnome.rs" 34 12 34 28] v <- { v with current = ^ _31 }; + [#"../02_gnome.rs" 34 12 34 28] v <- { v with current = ( ^ _31) ; }; assume { inv3 ( ^ _31) }; [#"../02_gnome.rs" 34 12 34 28] _30 <- ([#"../02_gnome.rs" 34 12 34 28] deref_mut0 _31); _31 <- any borrowed (Alloc_Vec_Vec_Type.t_vec t (Alloc_Alloc_Global_Type.t_global)); goto BB14 } BB14 { - [#"../02_gnome.rs" 34 12 34 28] _29 <- Borrow.borrow_mut ( * _30); - [#"../02_gnome.rs" 34 12 34 28] _30 <- { _30 with current = ^ _29 }; + [#"../02_gnome.rs" 34 12 34 28] _29 <- Borrow.borrow_final ( * _30) (Borrow.get_id _30); + [#"../02_gnome.rs" 34 12 34 28] _30 <- { _30 with current = ( ^ _29) ; }; assume { inv4 ( ^ _29) }; [#"../02_gnome.rs" 34 12 34 28] _28 <- ([#"../02_gnome.rs" 34 12 34 28] swap0 _29 ([#"../02_gnome.rs" 34 19 34 24] ([#"../02_gnome.rs" 34 19 34 20] i) - ([#"../02_gnome.rs" 34 23 34 24] [#"../02_gnome.rs" 34 23 34 24] (1 : usize))) ([#"../02_gnome.rs" 34 26 34 27] i)); _29 <- any borrowed (slice t); diff --git a/creusot/tests/should_succeed/vector/02_gnome/why3session.xml b/creusot/tests/should_succeed/vector/02_gnome/why3session.xml index 3a46cc02cb..f2b2b5eacd 100644 --- a/creusot/tests/should_succeed/vector/02_gnome/why3session.xml +++ b/creusot/tests/should_succeed/vector/02_gnome/why3session.xml @@ -10,98 +10,98 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/creusot/tests/should_succeed/vector/02_gnome/why3shapes.gz b/creusot/tests/should_succeed/vector/02_gnome/why3shapes.gz index 2153be3db9cd62f27e5e894a8b7926108ae76154..368606eecb225790cdb59655ddbd720c135c0b0c 100644 GIT binary patch literal 2354 zcmV-23C;E&iwFP!00000|IJxjZ{xZVe)q5N+i6o2;PB2Oc`z198K5{%g&u40nlO?kcVjqU|8 zUZER>EB=w5p9cj!2$!*U>lWJZQCD$=_=F#`>-2Ke3p z+e>sW!N?ZSVabUd96w172>ct8vp08=4Ui3}LnxR-_pm#j`sel~?H8-PB=2UwkL>6M zOdn)5l8(nmM$BH)V=NT^;K;^$cRYSsZ~PRCOtJNtywJ=;V>`5^O# zmV8|o8=HsSXNNpquiLN7$2O)lYp8U)cDdT@+@t$O7L~&1I@L!J2D2!uK}Jk^kfEVw zkV(TxP0zGv2E#;5>8Tq999`7h?@mS=Mvq1q+K=g5Ny;kp)A#PWD81!ufjI~WiQd&9 z^@;sHLI!Uq3pX(vC+lWHVHNRrDvxFMzAFjCZcwx3UQ2%3bzHu>P5N41OX9kb+3r72 zX^!u1yKG_G6)GIP)Ec9-IE>oyNKcL0eBS}Q;o-*R)yA!hLNC;KV_i}oHC57G;lS)^ zn?k#ZtKz2U^#GPI%?Ht~a@Xz!)g=F|Lwo#&ORGZ+r!=aO9wzF3L@3XO`c4EoF9+r6;bvaL5J98Km(q{dV-q6GtOx32H)YFF!<9k0V zc*jvG;*qCmUALrSa8;xmeDF>@cs)|#qj8Su{9Y-#-2(e{-Al*AV+Mlz7gFP?ecl}r z;$0H5vf_-FvsDQKFbGhKDypFiA9<^}9KTb(7{#{O$2=Mr`*E>2q^lE!Yx`Mzen0o^ zVpQ72zT_Ql<60QZ!N^`qr|s1ie9TjNPSid-LB1t)EkQxpGVF@g0?J9J=@I zcH4eU@wdl+W6sOuevfw>yOx=CbA8FHbkb)fj-GXrDMeLHP1Jj^FUoX}m70o}41J~y z;5oEh#bFd5a2fqBFGPpylqNa$7jJD#4_jUfNj9nen%lcOKQ5Ioh-?egb+nwpkGfn994y|DE2ir%74WX$XwCWmK z?MR)CPN`H?pC(nGlcj5K$no#rW9S?AnD^H;?1TceVOWPZDT?}giZ-0wBSrDi2r>=^ z2SyBOm=17z;Aq2jSG+2`$4Aj1Vs~zf?AL3SuEFbHe8f) z;^VgJsfNqjo|-83)Wqpp<1%u!*Ts1F?GPECq9qQW(X!#}oRw#a=$zdStn8MQ>YW6^ z`XHF9cv%-KCY;{(cq#rcbvuv}Z46piM>wq`j7ZsKva+(_uvnE<(8yAK{GGa=G(wJF z&4C8xt-Bah;V`O)(Nb8PL!stZ=tij9VNxC6B@o%!T>|6k^beNhuvk`mvJql$PmJsd zK5eg7dXyqQLAIKh{&G@AYKF>le3$R1uE#?o>$T2;HKHqEPkHg?cSWh~?cL(j;XIr* zpXRyU&L1}IV_KH2J)2SH2}^_tp#)<_`e=l9&Kb^wW75qHw}x3tEd@)71!F;5P!^;G zVS!s<7N`ZVK&-LaDl4t9+~Oh&mdu1xIVqow7cK-LH4BVIL3|L3$SCGiS}H8%mi}LU zI15QAhypLLh+RwRh4L}_?0!4#&Lb2?GXFhQgLk>_J zGWfARgUQ?omT8uX8StEBXI!93CY>^=gX0$8{~zA>OI zD8nh^5&{yDu%L-o$+Ny9mx3cj*=q>M^T0s5Hjd#%AR64e!RT14jBted2w(~4!Z^W+U^FWYlIOswq(hE(TsC4qQ`?-(lV>iT4@656XJo)6{DC zAb5plkP}TlV~zv1#1xSrISMeYe6jXBO|uV$+I#InRQPEdRp5A4j7~aW+9x1f8z`u? zu$o^0OF2Xmkvie+CI}9~<2?*W=7W?e5Zt)LxzvQGEGq>^;Kk YWN=^5fCQ^>=*7zVUl5HyEA}J+0C@C$XaE2J literal 2306 zcmV+d3H|mTiwFP!00000|IJrhZzH=6e)q5N+iABbAX4`tc`z196`(jz#XKHE8cA8B zjwfq7+3mkCH5c1sPm-eDWEV(gI21*GB0o{`pFYiZU;Ja*&7aeDw`w+jo2&V!KhO4G z{c7_JtYWvlY%3T2ow)QwSOb0edcI1dw#rlwEZlD5QfjBte z2MG@njC=tOQ_lR5{wy^h>2FBR!QELlKvkfROQ9V4`~B(AKetcmFj*fYbvyfg{CBo!DSTj8 zRh+fynU2h17>Fr7c3L3qqRsvOOj~h0(Qxt~)Ay2;RoxHY`Kw~|Qm_T(pe9Io+b+_a z`R`ZA;pJq}Cg$U0T~8RSB0Z<_SVr%z?vY3Ca*#LMoTQ|+)(HluCa`~9H z4^Ml)r(HHk(bP7f1iv(F6# zyrEMfQ}o%`Q!_E;=#R=ejk=s4zL|Mi6wze;lwPo;HQ3e~JE^A&4*El!6}%Ft6zwF^ zw5?yF96}Z8nqHz4k5Nxd#7HkFoo|(*+Z}M2*L`%nJ7paBKZqKS&2E1}h*wF+%Zv*i z&Q@g+K#KsqXhl7A-IHi-F2~;}7NfN-4r?Cid~^i4lX@3(W`EJmeW97^8d zw!VSE9gO@nIPI@(xu-nEOQQDKDM!y?D|D(`zuu+t@yRc#r*~Ak_7pxe+imkL#or$O zML92n!=7&I%R6OX>sC5zsEV`~En~`1x2`4%J@}VpxCe>0h1xBEGdRad;~mb{rZntM zd%m0b)ONladJzpzwIbDdx;pmA*UUQPMM~f6FQwZ~tQ+mb+!Gil-FV2vabNNN^H|=~ z7WbFS1&({;1XEr;9q{CI!1E)Cy813{pZ(C)$AKoW{FlcN&OR5;(thCQOrNOXVw9T2 zA!m#Ky$0e~gL4343c!(bi;knOQ53o+LfgJ=C!gru@f#Kc!5h^tqX-jQr%{tT=fYN9 zSVCua+|7%(wtfeSFzFtx?z&LhM!LzJQK^?XPnWr*LD!Rry>DMO@P*69>+>ppR$Qz& zrTRtkk^O;um0)*7K6+J>jTb|TQSB>kYPdPFuM(!KS}VNBy-Mh_A{EULec&KDKZ{O7 zQ_(x>k&8t^ZN`Nxp4&QBLf*6nx)SQ9EhGu$(d!AcxEbJ!DbkVpf^?POmz=vW1TwoB zIM+=nB|1aOd!)Qu38fPUphyp{ZwAWINzb zN~-avJr=oqb!T-e9JOZ9ma@?p32kDfsieLc2KDLjPRK5fcUo6xfAp+|$*T3IDk%^C zgoYA4EX}=iSuq?~yecfiqI$=H( zRAP1D+F(LLk+n8iF$*d|j692BAAdM5>eV*arB2dkMd^`r-HApM#Uu-!6ObRH<3g_MZ4MJJsU zKNF+Uv2+DtcuF!PE9lJd)H|q&(i_^Hpq>2rNVU)=p;XaY&1LYw4E0$q7+S$~w`U3C zuK~6kgh8OG=@_OA6X+UKwmF&nPDB{lqLqV+~81Pm<-`~VpDkSva$roU zP`IOvQ#6kR>6CDazbiokPbwyQ))4BNaStM!oU_hK*DRX;>ZFC!+-Y>0WagCpNQ`t8 zN<%liAZj|0toDG>a!#$4Wl#SlYnuM#&xJ{am4++2@==#1(sN}4vs}}U3>h%07N-6c zklLEsf23+NO_}sD=bCvHX-+W$-pmyS2756AJ2vZb;Q~iPSD0;bgSZl zF6afX;m+WD1IbpS@LJ^vf%>%aHT?z`(sK|@3c5ZSDzS9NzBdqIZ480w=!H>Gdt>N# zo8;VPrs#x^0}%1+6p?rqg|{LjS3C!8q)k3>#xmWMV`432 - + diff --git a/creusot/tests/should_succeed/vector/03_knuth_shuffle/why3shapes.gz b/creusot/tests/should_succeed/vector/03_knuth_shuffle/why3shapes.gz index 81a72cf37cb26bbf892c1a20e0cb838ae8a4e5e8..3bfbcc2f715c85ee89c793e17fe942e47377c18a 100644 GIT binary patch literal 651 zcmV;60(AW!iwFP!00000|9wiOY17q&VFI4JWzZjADQ`iMP=RL zx&KEX5KY<%PvR-_3-vL=O#c0qgndE3*PI!iX5L~TZyso%?cvzlo(8&UN;dP+{y~^A zPn%I$Y zw7fa--G00)$RQmHZ??^`F1pL7etx42;v%Vb+q7-->WZ7glUG;nYg?fj76Ir;$2{^o z8ITVq_R;klS`@V!c4#?7mLXTIP{rxVR25$?8I@7-<+3Psk*Y5esSlN&Rz>-5!M{6J z)-yFqoz&1)4UO}}cS!HbQ4KXM=_kYmDo*Hq5`03m9Q0NBTmC+9o?ef`$VXPObT%`^ z&Zi=ivzz{We)G(sgiKJ5wuj1cb#-|p%Gmoxf1vTNQSXLU_z(JZSb8=F007}mH@W}- literal 641 zcmV-{0)G7;iwFP!00000|9w)~!PUQJ?Y99)bdf3=BK+xIj(hCa7a~ zw$pb1ezX-iiIetXJyFyn`AF;AZPISst8bGx-?ZDh`kCnD_WP{+>$cS!Fl5;Qrw9?w zkw<7yM5s|ls8B^HQAa4yWHWdF;7VUTcN<56%d&o7?&`HKInG^IFSk|acJ6~MhL9I7 zd2gmQQgTd*^0leg`;~7Q0&_opAOM0ukb^gjfR05p@zDg)#PU-j9w|=A2WEaAQ8~YR z?fwynL}TrQ$KuKJi|P%+r2K~~4%;<-uPM`?=0Rd0Z62wi&2HbhjvBhG3pUZw{Xv*8 zP0z4{%F107k%zUET4Jh)UiGJ zXnAwsyF1-0SV7hYUOv_PYTaI*hW-s@5Eqr|p6aHl-~IY#_Y$frwv{VU&9lLQgid?p zZVB|CU{`ZgCOasn%;h8zmok?Vq11(|zHp?NDm%=B3IiYR4w3aFWu*=&^E9MJmt;&? z(kI#lDo*IAGanJPp8lDzTOHfUv+H&k_y85lCLK}iTyvS8?eyo}nR@miWQuaoJ4TlC ztD_-NnjjcGkLK4<^KhTGLyG9qV%&FXF@vT4EM^Ug2R(htHKw|3(nPgtrO4|lm%%)Sl|}G b0<)=|TVu6VR$5`nYT4{Rz~;c~HUi`|^J)gVSp6DonR?MjZ*0 zO59%JWtMCN-~TXan%ApZAnSx%o|O=A+&DSWG;xOt%;{U+89p$YayoO|UW1P)fMke3 z0Zrt%RG<>g$vXEd><^1s&(!D{UgTwD8Qfstjz@u~EK+XiuM z+tckb^pSM)j@~tg>Q#focxj}`7=(%n8!Z5Fi6UXa#$o8HR~BhA}7>3=d&}Vth6X;F=Y=$k s!!mw|ft4aEHH{)o5q0^f&C|-z4>OSk8P8Y-8O@0I7vfo6XY2$30DVZ`TL1t6 delta 448 zcmV;x0YCoD1Iq)D6@N92FVe0Mkcl&+$-uxRx#`MmF^QQFXtCp_|GwhW$cf$Nf_Bl{ z_g1^_>e}6H>1VNX4@J8xoBGC;?)7(P|BK4{AT)~|x?NLM)X)1Z8E92Czq8k7Q&gZi z?VGHu_w-8dO!WmHAZhm-HIGM1)G&phaSFK>Q^>T}Y0{e^Mt}HbzS>_T2C^yMv#NP6 zbEf6kf#xhVHFNT5!(2->5=+q&hs%VsIHk1?=st_uR)?|bUjA=ouv$%Rh4FUExFumy zMeB3C*pUt3#}|{vX}PEcwoF9Fvk(G7D=TL?kL;lWT79br!v{uFjb}>hOYi{&5cLsg z;E@`Z3S5zye1CSJ>aAd1qo-Tw!4Gt2jV8>w`tsVrTdW-93@C#0fw%h$iz!Tf(ax%Va{K>dt40c1ONaK-s5Qi diff --git a/creusot/tests/should_succeed/vector/05_binary_search_generic/why3session.xml b/creusot/tests/should_succeed/vector/05_binary_search_generic/why3session.xml index 6dcf55fa5f..11b449f716 100644 --- a/creusot/tests/should_succeed/vector/05_binary_search_generic/why3session.xml +++ b/creusot/tests/should_succeed/vector/05_binary_search_generic/why3session.xml @@ -38,7 +38,7 @@ - + @@ -95,22 +95,22 @@ - + - + - + - + - + - + diff --git a/creusot/tests/should_succeed/vector/05_binary_search_generic/why3shapes.gz b/creusot/tests/should_succeed/vector/05_binary_search_generic/why3shapes.gz index aaaf994304dd66f387589f16010fa75826e3faa4..892b2f6536d4e1e31ca695af2ca662b99f7a7f65 100644 GIT binary patch literal 2492 zcmV;t2}AZDiwFP!00000|IJw4ZyUK0f7f53x3+gEKn{mrMN&Wr?9xDS_fqVu!LLn( zDwZQDZtnj24!K%scV+2xm&886h-OL7%#ZWU{Pl-Sv; z|3KI=3x|et;`w*pZu_Iq6Z~#;l+zX+{nsY@UEWOOV8g|6vzLH9A;zKvZSA#AufugN*3k?}l6d*?i7>Uf?}JvGLPL z3N#@0*Q+A(aD6C3^aMVYM5s4<*Q+z$pmTfF56Em4{nHDZQCNRUFU9GnjrO z<@|VDUDPY?CaVqD!3rn&DSs*Ymyvhdcm7Q|bWYiVGAj~Tds}lyP2}%02h8~tD_-!sMWQ`w3Tzk6g zpO--9j%>&_TdmiRM~p-*3Fw>QrIy2wB7Sy^vPnp=p)Z!B$S7B?(RdwqBiQrocO!7+ z*aY3}*f!N3&)8{MZh1g@(d7HQJjHYI^4(o0=H{o4<3ptUH;{ZsyYbsUc-KbogNEbE zr4XFBhd*Zyl0ks}IYe2vBbo4RgqnKgr)C?-rN8wn@^k^R-}tH9=^T-kPs`Hq=i!(6 zuX(dByB+)T;XbTCKcuavGpFicMs$9kH}f^k3@zPdHqLpvV0(^rApFM@dryT-%GaLSxfHfO}Ly?^qn&-vV8e=jQRC*D!}lEnw>`{MPyYxd_4RrY|bLw^=s z-5%jP$Kdag_XrDByJ1Hj!5)s#-eA3cQBz}!eV4vS{Q{y zBUI!!`?%>DfBr8m_ap33T3y{wdJXc$c%E1sXBtvU`_G1NBSr&TgY4!Yr+h8C=SLw( z2CL$RCxqRfD8zBq^s8k~q&*^TDrFj>Z~9HW7$kVP&S_+H$A?v9ahTc`*{6$gUR zWmYBLmH>FRgN$RAB4N})`c8ng6Cl-pKHAs)z8K}BGlbGmE z_f@0@N&P=GA|}lP#o6X@IY#BlYe$}W?esDF#$*$ym_rLJVsAbB^{RqK z4jI}=vzyRbGo%X7gQU>*LM1sD!U=GKJHft*LY8tMBPJ_jYlSuuIBUHOnxoLDR8=UQ zz;CNIFafzuHX7fm^6Jw}W)`*QDz(bws@6JToX}3FZ+vG@S&$87mkpNXXc0`zF<2$D zM)D^bhuWcXNNng(I0T2>A^V0XEC-%cv?j%5Z3``>jc!|QJY&GKt|;sa00{{g7-T>O z(b7Y(Nt+Y|{mKm4&Lww}y$lv+Q6`hoNGY@OvK7pRoMqA!j9!b1MK}pBfQ73pa%+th zo&#gnTBU5X5@fJoQd`nqN+3I!;nXrrKF6!ulgm7y9)y)Y922d|Y(paHeu1TbfyJXfVVNK^mxi-A(P)KgE- zEfcKKWFxQ1n=KbYNuOD@6d|%N4-JJu;|-HG2I@Jol}dn>R34M3UtORn_FCw?k2FS* zABALDwvoybdLyjjCbn(s_q|^6@8vidnD&A^7Ij9CmPQULNIaPUm_b(S&>wtP6jYwI zkH{#TIfXGbD@YE>%L*tSaTvG=DQ9?s0r@DXTcZVZ9V5Ij5^>ZVG$kqgDq*gHqEsUvftW)MC zLD>)ieQsmapp$KB*h0Z*(2`!IV08hd!D;R^dwF!(lFJ|qf?T2eVEIj2?jplz+(gzmLrf-=bIJx7lO7L-X=Q^m9zO5Kbt zIwuD z+?2T|=~kGE*D$Ba`^2nYr-57FYRYBF!2r^{%7dnvFsmqSW;E~^;S4y#Ul(RZD-w?Z zQ$%YpDSC8RdUl2Y$rIWFlOCD|{|sOarA}6sX~n3?=gdW`>4h8w_Y5F~3bsB^jdDi* z86bzKsGQQ%kw(izgIu;0w2@3qvx|&5%`J0=7zwieDnCLDGJv99mkm9JOinZbhzxB8 zCA2Ae$d6Vy3(oSd)Rw512MuI*8s@c^hUP9BhUl?st*0hiwN*!0Sry{f>-<0UxEPQI GDF6WJF549V literal 2489 zcmV;q2}brGiwFP!00000|IJuiZyUK4e%G(iTiaa}AP*03MN&Wr?9xE7`%=uS!D}K^ zu^dTpv-|6NhNF>YMwV8)N$dp-`wV$59}mxs{_79(?FavuxAUjG*)G=)|Cp=!4}Y8O zKKbRtlWy4Uo>UF*N!h^d%)fc-SNY-n?t>=frx4vIK?EFXng)OSU z3Cmr(jE(43VuL*?8rhT3sGj7F?n%}dGXK`ckB|4O^?TOXhBN=}{^rwXzxw3g*6+Ix z{(-P#5e^OKB=hgQ-S(`|6Z~$(%4v&O|Fy|}mp2nV*l=;&>@{Fdh_Na`TYIY$J+k4% zZhAT06RIcVSd;4cCrW62;vG)zu)TYFZ4-9@{qW;4$cg^_Zn*WI&F8$A1>O@B8$XS- zKm%fbys9D(*M}-ZPrw8RHXsKYR=eT)P=o9VoPtmd=qw@|V{BGV*Tw&cA7y&KX-!W<>&PZ)@(TiT-`&fH|Ln-22UD zn1nOGU2k?dv4JkuGR-O`S#vEPF+|oz(6Tt!|gU=F4V--{w|?yz%2mYEQTO z=QWVKBO8j%R_pcS5hGDc0{UinsO9jZRX;mM*(4;`@Gh34$Y_sTqwzZFMzH6_??&KS zwh6l1v2UtBp7GPNJ>>!EMVIgM@)Xa-!*^$$xSO9|93LX(zk%dC`imk;-0{rMqnJ@K5HgBj8JecsI1G&2-B%WRzUbii^>bfEml6Ms*YO!R(S zrmKVwCRi1DE^yj8qurd5$oBrpuRiB<%>G_f*iXEp_9crC*7wEh`K#IUAFAvDTZjHE zy1G5WcTT|HBkvKmRPBZxc?5f4p}oO+{i3Kq-JPOWqers3hYe(g@d;MmRC>OizJl&%Nv}s}AU!O@pu)xt112 zA<+mG`OQ9VdcmLnOUwNTJJeQJ_mf_Od@-IU7RQ-}jMDzI;oFGOz}6tUIp}G>7Txos zB}fOW>V_P`?m1fGxN7>W8li9cO}!W-czc}F$mrOIRb+9P+7{!Y(+C;) z;t%#L6w{tXE7$d`7I;s|qx9|Kx+tVNaZMBw+bB+MCm7@a%~g3uBHfi>WE~+W)LUwh zA7?e)kn>4|#~K*z-|^@>*rM5Dr1ioaee?4mzFYY-7k@d@RcE>VI{|gvYETYAp}YWU zcFaWoWp?uJ8O?cLPA+ryxZdtYFN#aSpikuQ26X`S?QGzo7R~um_~ptni1xYww4*O` zdpD|V`xn{J{s`HbVX_?!C)nBu>0<>?CP{q$qDW{lwomaq`ob1)8`JyZc`-qU7}ON+ zb3H@uyghv`k8J3Pje~ew{PpeKyP-PCCS63baTh@xc9DakI+5(V$WdEeJ#>*{ z6$gURWmYBLwgK>L2N}mKMZ&0q^ql}}CqSzIe6+9oeLY-N{i>=`nuwcW;&z*I)IaDT zCo$1+_f@0@N&O!h5tHVD;%xJ{9Ha8&wIk2GcKR6oaZvh?&E_C{Wn4S)lKg?!2X^D}fI53bI zy-pRt9rmAS^Q_Wn==G6pACmq#0@}4fNi#UvCPL zfwmEXwTht^MG53liY%l`jET7rPJk2K3HD74+ANceLKGGBv_W|*;Fj-@?iQZ_6 zI1z*@A{oZ4rQi@s%_Vn|y$qIMLzKZY0I75#r)Xh(CITcxV@ky$oP-y^Vr9^DIo@Xt z!ax==v7CXUOqjT-MN>*A@nzs-8~-E07-AWtPWBy42oy+3Miu(Pr;yKR&!sZ6*kpvKuF#srMyilfMJ4V%d0!^Ww4~EmE=K2 zNfl7r>_JGHAC!k8j0&j@4W*pwe#`HEM_B+0%`J^lf`@i^VH0d{Sv{gfrj_e_favtVEGn zEHs93Cr^ z*xI3cw8B|%mVc$SY(bC(2|;VGfQCM)>1j$sh?JCvtXiuVVP!RlUvKmOd${)G1}Ojl Dr?B4K diff --git a/creusot/tests/should_succeed/vector/06_knights_tour.mlcfg b/creusot/tests/should_succeed/vector/06_knights_tour.mlcfg index ecb928b02e..3ecd9e6219 100644 --- a/creusot/tests/should_succeed/vector/06_knights_tour.mlcfg +++ b/creusot/tests/should_succeed/vector/06_knights_tour.mlcfg @@ -639,7 +639,7 @@ module C06KnightsTour_Impl1_New predicate completed0 (self : borrowed (CreusotContracts_Std1_Iter_MapInv_MapInv_Type.t_mapinv (Core_Ops_Range_Range_Type.t_range usize) usize C06KnightsTour_Impl1_New_Closure3.c06knightstour_impl1_new_closure3)) = - [#"../../../../../creusot-contracts/src/std/iter/map_inv.rs" 15 8 18 9] Ghost.inner (CreusotContracts_Std1_Iter_MapInv_MapInv_Type.mapinv_produced ( ^ self)) = Seq.empty /\ completed1 {current = CreusotContracts_Std1_Iter_MapInv_MapInv_Type.mapinv_iter ( * self); final = CreusotContracts_Std1_Iter_MapInv_MapInv_Type.mapinv_iter ( ^ self)} /\ CreusotContracts_Std1_Iter_MapInv_MapInv_Type.mapinv_func ( * self) = CreusotContracts_Std1_Iter_MapInv_MapInv_Type.mapinv_func ( ^ self) + [#"../../../../../creusot-contracts/src/std/iter/map_inv.rs" 15 8 18 9] Ghost.inner (CreusotContracts_Std1_Iter_MapInv_MapInv_Type.mapinv_produced ( ^ self)) = Seq.empty /\ completed1 (Borrow.borrow_logic (CreusotContracts_Std1_Iter_MapInv_MapInv_Type.mapinv_iter ( * self)) (CreusotContracts_Std1_Iter_MapInv_MapInv_Type.mapinv_iter ( ^ self)) (Borrow.inherit_id (Borrow.get_id self) 1)) /\ CreusotContracts_Std1_Iter_MapInv_MapInv_Type.mapinv_func ( * self) = CreusotContracts_Std1_Iter_MapInv_MapInv_Type.mapinv_func ( ^ self) val completed0 (self : borrowed (CreusotContracts_Std1_Iter_MapInv_MapInv_Type.t_mapinv (Core_Ops_Range_Range_Type.t_range usize) usize C06KnightsTour_Impl1_New_Closure3.c06knightstour_impl1_new_closure3)) : bool ensures { result = completed0 self } @@ -1359,8 +1359,8 @@ module C06KnightsTour_Impl1_CountDegree BB8 { [#"../06_knights_tour.rs" 73 8 73 46] _19 <- Borrow.borrow_mut iter; [#"../06_knights_tour.rs" 73 8 73 46] iter <- ^ _19; - [#"../06_knights_tour.rs" 73 8 73 46] _18 <- Borrow.borrow_mut ( * _19); - [#"../06_knights_tour.rs" 73 8 73 46] _19 <- { _19 with current = ^ _18 }; + [#"../06_knights_tour.rs" 73 8 73 46] _18 <- Borrow.borrow_final ( * _19) (Borrow.get_id _19); + [#"../06_knights_tour.rs" 73 8 73 46] _19 <- { _19 with current = ( ^ _18) ; }; [#"../06_knights_tour.rs" 73 8 73 46] _17 <- ([#"../06_knights_tour.rs" 73 8 73 46] next0 _18); _18 <- any borrowed (Alloc_Vec_IntoIter_IntoIter_Type.t_intoiter (isize, isize) (Alloc_Alloc_Global_Type.t_global)); goto BB9 @@ -1668,21 +1668,21 @@ module C06KnightsTour_Impl1_Set goto BB0 } BB0 { - [#"../06_knights_tour.rs" 88 8 88 18] _12 <- Borrow.borrow_mut (C06KnightsTour_Board_Type.board_field ( * self)); - [#"../06_knights_tour.rs" 88 8 88 18] self <- { self with current = (let C06KnightsTour_Board_Type.C_Board x0 x1 = * self in C06KnightsTour_Board_Type.C_Board x0 ( ^ _12)) }; + [#"../06_knights_tour.rs" 88 8 88 18] _12 <- Borrow.borrow_final (C06KnightsTour_Board_Type.board_field ( * self)) (Borrow.inherit_id (Borrow.get_id self) 2); + [#"../06_knights_tour.rs" 88 8 88 18] self <- { self with current = (let C06KnightsTour_Board_Type.C_Board x0 x1 = * self in C06KnightsTour_Board_Type.C_Board x0 ( ^ _12)) ; }; [#"../06_knights_tour.rs" 88 8 88 32] _11 <- ([#"../06_knights_tour.rs" 88 8 88 32] index_mut0 _12 ([#"../06_knights_tour.rs" 88 19 88 31] UIntSize.of_int (IntSize.to_int ([#"../06_knights_tour.rs" 88 19 88 22] C06KnightsTour_Point_Type.point_x p)))); _12 <- any borrowed (Alloc_Vec_Vec_Type.t_vec (Alloc_Vec_Vec_Type.t_vec usize (Alloc_Alloc_Global_Type.t_global)) (Alloc_Alloc_Global_Type.t_global)); goto BB1 } BB1 { - [#"../06_knights_tour.rs" 88 8 88 32] _10 <- Borrow.borrow_mut ( * _11); - [#"../06_knights_tour.rs" 88 8 88 32] _11 <- { _11 with current = ^ _10 }; + [#"../06_knights_tour.rs" 88 8 88 32] _10 <- Borrow.borrow_final ( * _11) (Borrow.get_id _11); + [#"../06_knights_tour.rs" 88 8 88 32] _11 <- { _11 with current = ( ^ _10) ; }; [#"../06_knights_tour.rs" 88 8 88 46] _9 <- ([#"../06_knights_tour.rs" 88 8 88 46] index_mut1 _10 ([#"../06_knights_tour.rs" 88 33 88 45] UIntSize.of_int (IntSize.to_int ([#"../06_knights_tour.rs" 88 33 88 36] C06KnightsTour_Point_Type.point_y p)))); _10 <- any borrowed (Alloc_Vec_Vec_Type.t_vec usize (Alloc_Alloc_Global_Type.t_global)); goto BB2 } BB2 { - [#"../06_knights_tour.rs" 88 8 88 50] _9 <- { _9 with current = ([#"../06_knights_tour.rs" 88 49 88 50] v) }; + [#"../06_knights_tour.rs" 88 8 88 50] _9 <- { _9 with current = ([#"../06_knights_tour.rs" 88 49 88 50] v) ; }; assume { resolve0 _9 }; [#"../06_knights_tour.rs" 88 8 88 50] _0 <- ([#"../06_knights_tour.rs" 88 8 88 50] ()); assume { resolve1 _11 }; @@ -1982,8 +1982,8 @@ module C06KnightsTour_Min BB5 { [#"../06_knights_tour.rs" 113 4 114 74] _17 <- Borrow.borrow_mut iter; [#"../06_knights_tour.rs" 113 4 114 74] iter <- ^ _17; - [#"../06_knights_tour.rs" 113 4 114 74] _16 <- Borrow.borrow_mut ( * _17); - [#"../06_knights_tour.rs" 113 4 114 74] _17 <- { _17 with current = ^ _16 }; + [#"../06_knights_tour.rs" 113 4 114 74] _16 <- Borrow.borrow_final ( * _17) (Borrow.get_id _17); + [#"../06_knights_tour.rs" 113 4 114 74] _17 <- { _17 with current = ( ^ _16) ; }; [#"../06_knights_tour.rs" 113 4 114 74] _15 <- ([#"../06_knights_tour.rs" 113 4 114 74] next0 _16); _16 <- any borrowed (Core_Slice_Iter_Iter_Type.t_iter (usize, C06KnightsTour_Point_Type.t_point)); goto BB6 @@ -2697,8 +2697,8 @@ module C06KnightsTour_KnightsTour BB10 { [#"../06_knights_tour.rs" 142 4 142 36] _37 <- Borrow.borrow_mut iter; [#"../06_knights_tour.rs" 142 4 142 36] iter <- ^ _37; - [#"../06_knights_tour.rs" 142 4 142 36] _36 <- Borrow.borrow_mut ( * _37); - [#"../06_knights_tour.rs" 142 4 142 36] _37 <- { _37 with current = ^ _36 }; + [#"../06_knights_tour.rs" 142 4 142 36] _36 <- Borrow.borrow_final ( * _37) (Borrow.get_id _37); + [#"../06_knights_tour.rs" 142 4 142 36] _37 <- { _37 with current = ( ^ _36) ; }; [#"../06_knights_tour.rs" 142 4 142 36] _35 <- ([#"../06_knights_tour.rs" 142 4 142 36] next0 _36); _36 <- any borrowed (Core_Ops_Range_Range_Type.t_range usize); goto BB11 @@ -2772,8 +2772,8 @@ module C06KnightsTour_KnightsTour BB26 { [#"../06_knights_tour.rs" 148 8 149 54] _56 <- Borrow.borrow_mut iter1; [#"../06_knights_tour.rs" 148 8 149 54] iter1 <- ^ _56; - [#"../06_knights_tour.rs" 148 8 149 54] _55 <- Borrow.borrow_mut ( * _56); - [#"../06_knights_tour.rs" 148 8 149 54] _56 <- { _56 with current = ^ _55 }; + [#"../06_knights_tour.rs" 148 8 149 54] _55 <- Borrow.borrow_final ( * _56) (Borrow.get_id _56); + [#"../06_knights_tour.rs" 148 8 149 54] _56 <- { _56 with current = ( ^ _55) ; }; [#"../06_knights_tour.rs" 148 8 149 54] _54 <- ([#"../06_knights_tour.rs" 148 8 149 54] next1 _55); _55 <- any borrowed (Alloc_Vec_IntoIter_IntoIter_Type.t_intoiter (isize, isize) (Alloc_Alloc_Global_Type.t_global)); goto BB27 diff --git a/creusot/tests/should_succeed/vector/06_knights_tour/why3session.xml b/creusot/tests/should_succeed/vector/06_knights_tour/why3session.xml index add56cfbad..fb12057966 100644 --- a/creusot/tests/should_succeed/vector/06_knights_tour/why3session.xml +++ b/creusot/tests/should_succeed/vector/06_knights_tour/why3session.xml @@ -14,7 +14,7 @@ - + @@ -44,17 +44,17 @@ - + - + - + @@ -76,13 +76,13 @@ - + - + - + @@ -95,7 +95,7 @@ - + @@ -110,7 +110,7 @@ - + @@ -133,7 +133,7 @@ - + @@ -148,7 +148,7 @@ - + @@ -161,25 +161,25 @@ - + - + - + - + - + @@ -188,7 +188,7 @@ - + @@ -212,13 +212,13 @@ - + - + @@ -229,7 +229,7 @@ - + @@ -244,10 +244,10 @@ - + - + @@ -274,16 +274,16 @@ - + - + - + @@ -295,7 +295,7 @@ - + @@ -310,65 +310,65 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -383,7 +383,7 @@ - + @@ -398,7 +398,7 @@ - + @@ -421,7 +421,7 @@ - + @@ -436,7 +436,7 @@ - + @@ -449,28 +449,28 @@ - + - + - + - + - + - + - + - + diff --git a/creusot/tests/should_succeed/vector/06_knights_tour/why3shapes.gz b/creusot/tests/should_succeed/vector/06_knights_tour/why3shapes.gz index 3b10a1da727d18c09c82f8e153d3fc0445cd9b9e..b3db69bdbba0bca9769c0b287faf8a9b017ff1e7 100644 GIT binary patch literal 11263 zcmV4o{im(dNc#T z0o`6JieUe@sZt}kYZg_vV!rQT}4d1PcSYNOgm+Sf;kL!P&>T~MejtHBEaKN)s z|5i)Tc>1Pi&-}$DzFoz`uQ%Ph)3tt@I$c6mi#BrhEKWjR)cR=}{>$*gkK+_1&hXzQ ziqiM>aW*+qHGZ-hpH-W>I8}YBaop_Vt<8wy1HoS(K3u&2Cr0=|P$@xsm2ZA||BrwL z_v+Q*x2xBOF27<}EPa!;^mO}V|T zOWW?viyjwqS?S;9k5{h_zg#DV<;Gbe;^FTw`?}5*M!;U2#>tGe>r(juC_g>hbN(p^ zJ|zU-=68ozA2P#wANSjBO^2DR)ajq+Gt6j;Pf<-^?XIb2kE+y}@3Q%Z$(>v8uo^p#&+JbMq`_`k!Omp32w_)oO? z3~#T)&3lQj|7`e*aYcx|P_w~dO=y}*VfMo9h3`T44;F<(i5*JJP@-SX!Po)79CU?i z7yU`rPo`u&AUQ49z2q}4AeId!Au4fJnZ2|_+W{>(pe6NCqJ|PVM@s4ez#MditC#(` z0nuR&q-)E%U%v0I|0`GaS(gF}*P=e~kY`{(p8p$ee#wc|`uOMOmsk1y;U?tT0Bax} zZo2EbFm7iL4anbree)^{K)A`jH6$LDqBja}aW ziSP<7SnGhTHp3e3ry<)<`LgXrJ8C`yf*g0xm!UBu0M3FdbBEw6c30*il(&c1SJ&_J z+p9MR9Eh0N@b>WAyUU3|p&FIq;K24z2f)tnbI0n};UJ-NuQ3NbJYdE9=g(_Trh=?v zph^9ohw!#*7!Bo-imqzWRX^K=&TP&7Rv2E@zk5~B(y0v!>KcKlX$JTx*el)SPvE3p z^gLhTtY42=*;+iYWF=8XBX-LXyXA=8Fk;t_SlQ>#+mQ?avi6M!@uKJJ3PRh+PZeM6 zg(k=hlZU?e<%+G>2A7+Q{&Kk`32?vN^!9cGu-O*V_&#hgJ!~~tg$$rF9^z+YJhdU?*`q2wLHTruk20RFGTsU3pu-V#eN?4C+SPQ@j)$%! z0c1Gu>~y-g>2UG&0PkgZ)(-u8>Wc99x4-6>&)V~g@akRe|D}TK{+a63Gdcmi_LsDW zUuTNN_zEZX^M1*3tV0a;>O*+-YldK9*Mbi>t@aX>oz#j^oag*`1&;>$dA~ME6dA!Y zl3SK?X}=@Ob$->=A?u^A)KOO-sjE6*h)S1rUgUaS$lxHY7@VxLLT)ztORUS2&Gn`Lva6Wfb zWsun?jYv#P@C@fu8=TJ^Re9MTY7;Y^sT*cuf_7qp?wmsAZ&%2M!^cm|l(U7n3@VXI z1||f~uLl)H4+_{IjIWin#&>66-414U#`M6MHA!s7fU7@~blE^tB+o zA(1Ab#}FxV?xJ@KekE-$Qdb}UU({RQ8Cu72g z`fcDm{5*W6ayNV1)$hOL_gD3?7UB;F&v^?OI(Pr}`af%H7s~ZbcttP6P_?Qpcy;k? zCd}5l&#wMqa9$C+dss-vBBBt+T@r3UQ()K{=DD}5pAD6QO`)HnZ zoxv-d0K{^?4FYq{E~qamI9$clyoi4tN>{>#*Zl(zR5l%=gUlG-obqeTs%$j; z{q}~xQ^Qe8yhZvuEk%mC%r%%+8$eqn#AXZWAJ!tEemTm0r$tF~)P=5w`TAhngW9{^ zlHF^>q($}vI}!r<=(RaBG?LYhI;O$~lpo1)s>+SJ*}ex+&J9wc9fiB0WRxw{LPj(L zfH~+2*DU+uj2>2*u3I1X!FoG4HZY`6j?d8;7ZXjSzi;!f4 zCr&g0&}#(Tnbx*Pz)tOHT`Xmgm!r@?qR7QLS;RM4NYU?QZpLY&P-mlkBXR#x1KHc#5^Sl`}8`@2(Jr09^4?nEop>%Yg zl5%j>5k4+FQS*n5s@tVoM^r;>b9VUl@c8yz zoUXmuDLy{b8%}iQ*HJ!sk5>>+mLjd_RVs%$Dbx%PhbIV)#~6MIUpz1GUY?bfFW18L~;d_%-&1-hD@<{a1Z_rc##*lEuNyVX9PLVGz?<)M^~e z*G>LiST2stCe6~t*Y>NqqwnI*_tq!dqePG0+UO;=4`?x~xR!?YQe3XPrByY&9J~<_ zllaRyTLB=5iKF!$-?UzNL$qEDm;}thjiYJ#;NQKL&*zMU;$F0<;fb==e15b?s~6bS z=3=j_`)kcGP<+fqNaXK}_L^;Qk*!uA=dF~lzBbMJ{*@<3@&H!vKb!`o-W|4-znxn1hgs|1=K(5kIYGVDY`*Zxn9O@3-IZJbCK(($*RB zdpUYarMsLPL-*2b*g~mv<|KFF=T@(7=>`m7?a~HIRjLVgFIBki@NcVT_Og+L%5-na z#ak+RN+nOns+^$Ig-l^X@_Anc{MI$6UcXr;@7~riUbjWt6|Sy)C-#n4x7>VJxEi$U zT1`-r;wwnUS}#5erQX!4Y;S!HlkL~<8AtoAZhSd+JlXtbVh74MKn_5{0A|s)APp~sAh+d5AtK4 zm>qO4K5_>=a38<8ih5 zip)L7B&qhEqk3CFmyr{Gv)`X9YG>+I;7@5NJxRE~9IRCfcllPsqW}`}+09A9-L`wY z#;q*5+z?~Mb;G<-2ixqL9Puy4_xrlpDgZ^6xt>^@!Wl4s*VUcX(~Ywv8s+eM=Gm_x z7Hq4Q0I{}->+3-cf0y5nj_@-aMJx@ZTaIv4>5ZCV@_wty`>iMMx0$@w_H>_S3?=XT z{PFlbron9?gLl0V*S(l|jsWg$E?4jJKiS@&V8Qj2#S||qS6WT>I$2BlNc1h>^QiRd z{ad{4S+Bp%V=reR&f;s`@^vC!W8n>!!L+^b4aO`{jFuImo`|7T2{^z+3^8>a- zczanL-P=qdd>Gx|&u1QB`%L@$Ms5UN-p5%qg| z=p}Yp?fkRvbDKd`P1O|Edf7-GXpu8I3 z=aBePtDpe3ex~Zpg4xW~?}Jt$%s6jV0-7YkIzLsi83H7QUTPIWZfO-Hv(1#7Cf|%* zR3+gy5s1?|z8qwrUajD#g`idgi@EkzXpM>FARJeOHf0N_I;Idw4Stw z?pz<-pg~XTNmnfl3M8#3ZQ6R$W^b?{G})lcxEOS`LCwCK`FheCuU?GJMW`ip2^uj~ z>erJI^Yx_7w4SscpHy8>07Fk(>q#rpbmbh9TCOK8$MvLnn})^rVLho)OPv{n#Aljl z#9i>Dere9R(r2F%SUDS~#BdngX&8|Hra>KiBif{QzuppU!oO{_iMX?9lM`0FHp=nk zpAc;#`e+mO2S%GzC(*~#_VxPubVvMRd8iMF0pdroezz&G$X;OCwgAio7Ww>Qn;Eyx zHkt9os=+1(s>k4j!aHH0o?qN@E`*PS%!y;++%(tM=k4$ds$I?&%AxrLXbQ+*5aZw%E{vH6W85)^=7FdV3^9BY+YSth89c~2MBY0v z=BvEbILOI(cyXNcbHKhABq;Fe8`uVryk~s2?*a`*U%n!qD_RYU-^az&f zU9s;|(Izh!TGgMxzFU~fdS!?zXU~axNwzg3ZVS>NPVp z2Rix?4c+x!SXGo+e4ATU$n`qe2GrznZ03OKkZo>Q@<(2_+i>JwrEAE|Gpl;ftfI@g zWB~Y{9!BS9b+b<2)xt9?@#@9coQGOcj{wc5N`q&1VMhlWl~I9axncPb;_-4uWv$UQZ zFEnHK#;t_pVci(FH`RnfmDsRuOr0LnJo={h=o`H^KF~J&o*sJAn99^<-xnTzqwwm* z(A;9#p~O~$zhzUUe%;u4?in zVvFQOYU@BcBlTJ*VVlv|!>&X4M};BhreVxuN+50~ez zQi=_qG?zzpS`T7!9N}5d(&w02`W!o@y>V088$Vt0ufeu^d;$R#tbz*jmOO+#q_kb zefm;rmBvh4EgQ*c@owY&@5k>K5fyPv;L&cu*6;Ih(mAYU?CxRpZnMqDRU3Zv^39O5 zjb0uGf0-UI>9K9@G~JMVI(V=qH*#(AroH}o5PRm4BNNO%bYuks1*@6bnz?zXp7@j| zD^KQ-g98GmSY@UeikAM(`PL@TvJzR>F3)iUZ zU88cchPQ&-q;aV?FTI{>cXX%qWJPw?;`u2?gp;^``i0YTD12GxB%~c#CS;X~U1J>9SVlxe3+Hs>yT%1^uOd0GQJbBCtC%c(xWx_*u>Gu2#G&}3m zvMz15sDw7-T{vmh851~FY!@hpr#WA*uNzO~eQe9{WlEgD$IJNp7j^J;#6t}kI>wtpO$PN2m@&3vv@po-LV^YM> zqCcSo9S7|@z0kAQUHv{BQLPYvj*cj;ha*axFjTGKvUoK=qIj*lI-+>r?_4wQp^itC zR{eG2`ZPxO5;6@bHAe6BFJ(WvBU{jwYZ=mL2TZ1f<%~P3HO#bZAwAX)=&0W1H5W4@E?mH=hTNgI(U;MZd(43t~C-wVU=tGS+;<)e`S!hn(X61d%ygKDA zn+>-eD7_T)^C=AYD0e!0EO$D4G^{UK26Af|4Ah=Y{1@8~`Q)K*pg%Xe#5vHPo2uh1 ztXq?HoNIknI1+b*;Yk5X-07sA5O(fp5VS##Kp*X$b%o{5`IgvyPV$bk#QL6Kofu9X z>=}{njz)7v>=Tsxvh8$#LhidGBo;!3r2fw5@!+>5@|bwN_*%TKjP7%J7=1dI$Cy(_;T*HuIUV zAh-E5oA*z8;He=pkP&A|cQV&IHERr)T=M0b< zK+J(x$ZFZ69qgBO05njD?jtR%mo=-oWHoM9&aziGa>^lNp5$W@o7p%gK;+32tGw63 zSIB(PqZ~4uPsy^?kPJoYwQ6QA1X2m2F1JbInCd zH-o<;0I`9>wv6Ay=;f3Nf?A_+&gh^_kHVzoEAwJor#+SGaiP=Jb)-&RKH1P|-F$mg zCE?{txjU^aXx5a4mkR}f9M0cZDAUKmw_@$pJ|!~hli{~_hTZ2x;NBuK>Qgbeb=l}M zLAZZ}$f$?y@)<(VBtM-^xN}~9+Dx9|ui9;>B}XZDdXo>pRUT^0lyhf%-mLzuwO+BM zllQ0PZ92L5<~q5&L!Dfn)yd_btdq+V!oVrJBaUb*Z?insN=pmMOfsM|-O8q)jZb_u zhP8}kbqy|)JB<*;0@{#@W`#rTB)q#hq~#l1%a8iHT=npC8^VvZc8iF7N->cO3FpTF zz(Mt?ZEAc}-CGBJd3qxr^fGVMVguJ$P3-@cH0UU8l)05LY-D`dYPRM>EnO5DD2Atb z;;64OeO%sVVYxhSp_xbGHj~cf%#w7lExgrMW7@$jEMW(~w0%+KSu}3_NtUrWWsgFM zX(IDfX%e01!LxQ2k2`8DhZ>tn@4lnb{;S_$X4I#nh+IBT|A3+vk~>Q@IaE3DuQC~b zRaoxAtbXLg;iG5flYLf`Gv`wrcw6xtCv~4i!*G2uCa9UgfNc3}?@pu|t(j@+l}~r# z9tmpni^Ay_m+MjQt?eJ2+B@0j#&B|(R|=h2f0BRgIh_E<{HvDtN++kR6RgH$I?+aiBkegAy;c@tK%JK+yLcA1_^Q(oMfUI(vM396?48T~9m>yy!s z2kOlvRVd%cQl*C<;3F7ngK2HH`?ze^f?&~p!b1{T8_0UK_qtUP;}b`51>p!n`vDtP z0~7Y%xA0c)F>exoEf@?c(gY^t!HELeF%^Cate?3Q{o>?Rt*XEa_>b8 zj|LiI9v+Prz1St+FN6jLR6bjOV4LA%1}Us?PUEq7Y%B;QH46MiS$ zPS~9=JE3<%?F2d$JHdB??YQ4@x8rul&5r9GS353uTCgpZ z4U;UDE_d07u2Y6N7mbn_J$0wpo%U#%2}NRSV;LkBoUu|-E(MvD%r4d*`5kwfxOD~6 zn~p_m6>}$5rwxn1Lu*q)?Nr=-zbsjqOma~qh3z6tG(2OJ!g$7XVYOc@YPC~$w0>~Z zGuL4Ot1x%V6t%Oonub;y7ZjhIkj_g=fuwOonxN?-v-SEsOt>&6?jIF zC1{@n19)C!-A~SZRTn~dZ@33*4jyaBXeom03U+ZaAvyKL1EAY^wsW2yoc;2?JlDc? zI_D@=jNpCT2(Any6eDtslKS%E&bqS_tj^W#k;w$(88)kR;JQT>Vhq%syvrV4%px0b zfMRiIIca>*DoHMN@E}(`RUn1o!*<^9Ji4_zZ+2eqyt*3{0=7lunSq`-n~lH0^p2h>&gG2b>kUnsz zoFA7W5ks9Hm!i+7j14*sKA0s4mmJdNe4w0m0~84y0r-$q1E`RRAWGqb_YjLXwv|&axIh5=>rR2p&_WZWH<4}j zv_Ww!XcIewtqBFLp91q>R<(y9lA%1L%nH=!3|%<;q9enoh3fk8=!Y^M>v0$;ZCo-L zayk?vm!U@&$ah=>C8zQHWtXUjsA3rpkYqc?LWJJ!yV7YWq*{n^3e;bD3QUJZ5IdQC zVlH4QSmrwjY?)ava}y1qr#&F?z*`S_vx9^K71TmMVp%|*$DwL@Qbs?(A*Is!Y@j08 zq*PSks!>2CE0%XoNh{hyg$n(E#w5MYfkh9pbWrB44p6zWjHWY2s!@vb4{1y;K|7Ek za~u>wfssZQgO$oMd_wAGV=_%b{mU{I&6H21b3nylIfk6PD2&vo&X>-aek$C*z*KZL zkz<|54ywI{#Gq8^xU~vvB$U+4!$v-&mF}T(c`F06Ik+sWQ#^GzJQFK8HcY?Ljd)07 z;z`q{l`<&^suF?_3mQbyDKcBUn2qVLzGRbUG89>YglH>V^xis`or~bpNy=U&HT+*- zDvWkHI>{n*H{pUWszlF&46$_C|u>lXX=2rY+^WC{(pj%nl zc^!1{iKnEXL|QORD+ip+AB~smiWCuRo`J|hWG@sBYh_B7(s|8Rc7Nk~!ehN4h z@1f5Hj#Ut$sVn0<0U@&=pZzoDUV0O)&q`&L3J#Y}l?+bBS=KIM!EWI8;O4(X!JSuv zMdr03z1rlGA^vn7`FYh74xk)RS582VUYZw>qcg28B!e6ov&~6rCIb1w83XHeRwcu5 zFbkYI0;dkDa}SsvW5*ECJ3bgY9TN`VoF>2=BjOkmAajvjl7@VAfo06CV7x?&8WBbE zDaY(IIubiLC)luWU`{u**o90z9Etd$-fm2T?iga4a+>F=vcC7UclKSP9%vFxZxmG z#bMz1Ldt1PaCdS|5T0KEb?QQ4T6GK?-*nzLsYXy}3km+iSSZNl&c|XO z$1;tjFwQy~m4z1Nzi%V;19D3>kvq{lJAY;e{}1JOWP zw!H_GypMap8_OVcm`+I_ASoJXuQ?VS!FWl3-(EM0#s<9P#`=L0El7zzH>PiQZWRhq z)tEFTaFSgnZ(7$5$ zbxhTS-{k})M0U`2y$U4nYv?%OAeqEz;Gx`wv7jOj9VlmzhXr75X^aue(LO_!cP$h&$J>Vz^ltw*` zdK&dK>S@%|>>_iKSddW5lQ&Q@oC(H5K5zy*NX6;`qit^q8{Hn&AAuOe7Sm-PeZdSu zKQy4A$oMEIu_<=dP9s1hVJS+}{s|~TQt+Zn9&%N}TBT?y60l35kVNfML($QP{fTJC z0)a*`Okl=Ri<#pjC2y~Ez!kzNkr?#G2ko((1(vgba{A|DowLSiR9x^}TdYJIu%)ww z%*vqk1>3N`kC;0fw9&i+(maXmizvEy&9(3nN^3W4DMtau?w%pf9YrkDdC9;MYdEhg zj%n;e3B`f6H4T1vKhd|LSR4bA0?nPUoy`>0z@_Ej-FU9623%cueosfBSuns`Nt+cg z*Ad!V=B@*87QuGBjX>V_QCRMRO+iV?By%d|9Jx%8+YJslA=gpb!mE2c8VMCdi^6=u zxvm|T-iX{Wt7X!x6uuD$e!mCA9gEOlyO=ucbH`Kh$yrjWqAb#Q8jv7k=tCM*QaI=| zwtRrFU~MN&N>)RCBu9KOvJJ{Syn%I6i2ymm7Ufc5IXRwffMTo)nUq)?n0=UoVYy+GV1{fWLr)kXQ1CLd zB$APxf>u!&7-lbX6Gj-SpesojDs*ZIT}DEek*lkQ|bPU|PhKtAcnU6!ijjAgGC^P1V*bxvm6?r!0z z#RtQq>&0}xm@XJoIo%(p3*?Vee3q9Q((GmGR4T4hE^;u1;$#9tkU6M2#b_rr{iQ4U zy8n)0Q!W6&ks4E@Ff|HOqlhG^r|9lJ>d__SljQm1Nb^9*VY6h>(bZfG(j^bMKUfdR zxD%%1smYIk^GK3Ej3g>>OBP$_I>$p{lJ58=qdiZ_M^nZyGzp+!{Eu{bq|3iDT`aRM z;}BsG$&KxV(y7GY1ZluHRrn$l@sT!uKho&WakCa|6>fR-UB`{_nr>TC zt_-FHl*UG*xt8`wr$0yQOeQ;UxriO*Y^Q~c(Q4;daT-NUu?JR?up*KXiGY#>J`(sy z;3I*LG?XU}^?;8AKGF~=#Y7gvAB_WFaU>Pzg~(9{t32jZdOUX7_*{ZXqWS*qBdP8I zsgyOrslqk*ol%^A^jGs3v`I;d*wXMllImWNDvPWszKX@9Y%ziB)ag!iR(H{HQB7`& z48)J*x)0>ikRr%RTA(^vu0_b2n@;Bty!L|oM{?aOatWwPIVoin7-6ubb1ZVrm1ia7 zQo0t7DjvDvJ)u`}#sn!$R&b;I9(W+r+Osr z10-%rff7h-AG30lCRt+hk_A`_DB&qI;?g8Pa@zaAX(4MSE$CPb8o~=#F(*-U;LdQ7 zgzPt?f27y_pckf>yW}VdBP%kH313UHaCuEv$J0o!N9OtPn5XlK$7~hd;+3Y5rA5V# z30GovjIo}$?vc0;khm%qt8y13_ufawd~r-L!;_a#ADwP0zI#;j?+>%hF+`!V>nvsD z^E_BtijPKPgL3r$NV0oJGAR0)vMtBrvkw_FBvcAnBpXfE%=Yr9dZgL?p_%eUB*QRT zOq9ollQIV$IzzdYxF2)|`AD<-Lo?G+Iz#V+i1^3k&PL6=DWo`bo|zfVSha*ciYyOL zWO1AcY(zu9oWW(sxsk~mr9uw%Cy{z0i$@|qU?O{_a{_mZn6y~5m&ynwQ=()Clv%AO z@}vLh9&uj_z&<&Q+7}LbWG^VTl2RU;s0aTOZIDNr-4~jrptMOwx)@cmon|R#FXm%iW6A-#J*e1er$Q(^S%BicC$fGd@5dD(u zBkAr7>2#p%J{~hI+V){-IyHU$>tl=Hctcghuuv6AKTkp_3}&Pl;0 pS(qx>7M>*(VuSjOuAO2>geMBX6o4rJgFtZc{{h({0@?BU005wuLQ?<$ literal 11170 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 A!~g&Q diff --git a/creusot/tests/should_succeed/vector/07_read_write.mlcfg b/creusot/tests/should_succeed/vector/07_read_write.mlcfg index 2328b99083..c285dd29e2 100644 --- a/creusot/tests/should_succeed/vector/07_read_write.mlcfg +++ b/creusot/tests/should_succeed/vector/07_read_write.mlcfg @@ -226,15 +226,15 @@ module C07ReadWrite_ReadWrite goto BB0 } BB0 { - [#"../07_read_write.rs" 7 4 7 5] _7 <- Borrow.borrow_mut ( * a); - [#"../07_read_write.rs" 7 4 7 5] a <- { a with current = ^ _7 }; + [#"../07_read_write.rs" 7 4 7 5] _7 <- Borrow.borrow_final ( * a) (Borrow.get_id a); + [#"../07_read_write.rs" 7 4 7 5] a <- { a with current = ( ^ _7) ; }; assume { inv0 ( ^ _7) }; [#"../07_read_write.rs" 7 4 7 8] _6 <- ([#"../07_read_write.rs" 7 4 7 8] index_mut0 _7 ([#"../07_read_write.rs" 7 6 7 7] i)); _7 <- any borrowed (Alloc_Vec_Vec_Type.t_vec t (Alloc_Alloc_Global_Type.t_global)); goto BB1 } BB1 { - [#"../07_read_write.rs" 7 4 7 12] _6 <- { _6 with current = ([#"../07_read_write.rs" 7 11 7 12] x) }; + [#"../07_read_write.rs" 7 4 7 12] _6 <- { _6 with current = ([#"../07_read_write.rs" 7 11 7 12] x) ; }; assert { [@expl:type invariant] inv1 ( * _6) }; assume { resolve0 ( * _6) }; assert { [@expl:type invariant] inv2 _6 }; diff --git a/creusot/tests/should_succeed/vector/07_read_write/why3session.xml b/creusot/tests/should_succeed/vector/07_read_write/why3session.xml index 3c87d7f57d..75c56bc78a 100644 --- a/creusot/tests/should_succeed/vector/07_read_write/why3session.xml +++ b/creusot/tests/should_succeed/vector/07_read_write/why3session.xml @@ -7,7 +7,7 @@ - + diff --git a/creusot/tests/should_succeed/vector/07_read_write/why3shapes.gz b/creusot/tests/should_succeed/vector/07_read_write/why3shapes.gz index 9a8d699ad58e6ef129ab524d3f05252070ad9b12..96953445295ebdb553159a9c62b4044009705310 100644 GIT binary patch delta 465 zcmV;?0WSW~1Kk6V7JudBXY=K1bFeBQkgA?49~Zp@vq2@W1(NjV*B>~Ws5BQe_8Y&M zH#VQ6a6aO@n!}5l=58FmhG`gm36|g34VO%kVuh&$4--i}j3x7s$=E|G6AwYAMSw3m z?A7qL98rt){dlcUW21U1GhD{H8x}m_A0n*eKa|RB6PfvzM1ST*&{nNzs~@~fAd-@YB|stE&}$Q> z88;1T7whg_S!?K{yjW|%1?oiV3-)K@i#(353AtelmpQmj`W|uv>iu{gntA)!cZ}|5 z))TrEsRqJ>kAFxE+Y!J*@d1r#$Z$VS(|A?Qr_(PzF}B@+y@V9IMt=)S(#Dd)t0V&d zbLIFdfo+zwOD4RhTJ`hwsHTlv3~#IH(=b=vS8MGF&o+?*Z z-{jS>ya?pCupOsx zQrOhjsasSKaBT7n4shT(<%}^3Iqh@^R54m|-ZGTQB$rs2Zc$i4)VJssLBN=;0W#S=7mIwH} z!%p>o<^yW6t{X1pai~>CWs37qw*8Dp{2<&)erYMpHj$~PB!6<72TjrNrucxQlA<}Pz^O!^+S29(us>g#F!*b8oM zXVw$C6sZQ>gMZIROt)(Q3;8EBrXj^@7{}qF>Tk!tdSYza9yynTt$c5;e#OQvF%p#PvxSp>#=2dAU%JE%`k?e!n(YS?W}?zuA`c; ui0!MrN-1NNLI6^!Jt3H}stSRKOl(Cem`Fq{B0&WR68r-g7w_T>1ONb8&ELcT diff --git a/creusot/tests/should_succeed/vector/08_haystack.mlcfg b/creusot/tests/should_succeed/vector/08_haystack.mlcfg index 2c584347f7..1717568cab 100644 --- a/creusot/tests/should_succeed/vector/08_haystack.mlcfg +++ b/creusot/tests/should_succeed/vector/08_haystack.mlcfg @@ -503,8 +503,8 @@ module C08Haystack_Search BB8 { [#"../08_haystack.rs" 22 4 22 112] _26 <- Borrow.borrow_mut iter; [#"../08_haystack.rs" 22 4 22 112] iter <- ^ _26; - [#"../08_haystack.rs" 22 4 22 112] _25 <- Borrow.borrow_mut ( * _26); - [#"../08_haystack.rs" 22 4 22 112] _26 <- { _26 with current = ^ _25 }; + [#"../08_haystack.rs" 22 4 22 112] _25 <- Borrow.borrow_final ( * _26) (Borrow.get_id _26); + [#"../08_haystack.rs" 22 4 22 112] _26 <- { _26 with current = ( ^ _25) ; }; [#"../08_haystack.rs" 22 4 22 112] _24 <- ([#"../08_haystack.rs" 22 4 22 112] next0 _25); _25 <- any borrowed (Core_Ops_Range_RangeInclusive_Type.t_rangeinclusive usize); goto BB9 @@ -564,8 +564,8 @@ module C08Haystack_Search BB20 { [#"../08_haystack.rs" 24 8 24 68] _47 <- Borrow.borrow_mut iter1; [#"../08_haystack.rs" 24 8 24 68] iter1 <- ^ _47; - [#"../08_haystack.rs" 24 8 24 68] _46 <- Borrow.borrow_mut ( * _47); - [#"../08_haystack.rs" 24 8 24 68] _47 <- { _47 with current = ^ _46 }; + [#"../08_haystack.rs" 24 8 24 68] _46 <- Borrow.borrow_final ( * _47) (Borrow.get_id _47); + [#"../08_haystack.rs" 24 8 24 68] _47 <- { _47 with current = ( ^ _46) ; }; [#"../08_haystack.rs" 24 8 24 68] _45 <- ([#"../08_haystack.rs" 24 8 24 68] next1 _46); _46 <- any borrowed (Core_Ops_Range_Range_Type.t_range usize); goto BB21 diff --git a/creusot/tests/should_succeed/vector/08_haystack/why3session.xml b/creusot/tests/should_succeed/vector/08_haystack/why3session.xml index 5868be5fd0..9f3b05c16d 100644 --- a/creusot/tests/should_succeed/vector/08_haystack/why3session.xml +++ b/creusot/tests/should_succeed/vector/08_haystack/why3session.xml @@ -11,10 +11,10 @@ - + - + @@ -38,82 +38,82 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + diff --git a/creusot/tests/should_succeed/vector/08_haystack/why3shapes.gz b/creusot/tests/should_succeed/vector/08_haystack/why3shapes.gz index d06b439d3d5fde0d241fb024a382b5569ad7dfa7..4ae38b4a903e1ab4924716d63a403881e5170293 100644 GIT binary patch literal 2878 zcmV-E3&HdsiwFP!00000|K(ZTZyPxdf6rf$x4mmnK%~A8%>hA?KzZ2%?hf;~hQ6lt zZsN(>PP_ZxAElYG$4TutO?S7~0&Pu66iHFkkL2`kuTEF*{as$2e#pz!yj%R^RGq&1 z`^oxOKVN(R*08G+|K{A^`e%K5JM2f1hMm+RS0_m0Hr zot3;uB-=_W_m8N^Sit}?dX}dB&n#GuyjufsP87S{?~U8_K%@Qtn6t~ z=aV2VJ4o!Kc&(E9fZKflk$p1g3x73kLlrNs^KwS_@_4RWt$P(^IPB}m^ZGmMZW6iq z<7RS*y?(Nqd2-Wrcc-+|FXw)-CThN(#3;#Jfl~-`h;cIB)F(%)B4rmxL1CL>gc1x$lrS!{7>Vs z%*)AYs^fQgJ*#A$q#y91TQ0kgIsI_^OWiGfJ74&lvgk+F0{La>enl)Z*2~;N(P+lreX;61hLP=EnkYOwdvrlhi}q)Gg5&sO z)I)rh@&=86xQ*s&(3&TL)?B?ruRX@?{&ivev>DY#`y$t0O!C$vC)le#0&T^q&yqhy zJ1nB=TRg}7i#ethuH&qM;Xv?cm%gdlLgB->@#ivTn_sH_ekA%)D;ls za@=Q1H56ZX4F_PCoPj;=O11}gk5aJ%QM^biGd~~Nu;~C8@$Cg&s@Q)%A)HywKKPsa zyqA|$_Rmg_)YxB~O^f*Xbnx?|R^lM<#Ncj!Lo_jUFBh3;H^$oD{j!kPgF&Y6IB0S@ znsQDP2R^LlDMPLD@`LaDxuemRkK#Tb=y`32rZ)D?2^?Kxc*e3Aq ziB5F@@?qzE7`9W?zSzO)ivg-TxaiTGh%b;GinyAX4&@~n64St|e1{i(j_Yue;_C9N zGWTjT?9+UoCP!7^J3g?ESA6k;I^g2jWd~kNqxE8n6}T;DM)Mz(KYVj6YTm^lsV5HA zSB2xer{pwFSXnocwpq5@v=Cj5-?DaAW{079+*%Zs`al&h)udzHKu0^K)IX|w-0f4} zY|3#)hkE_glRo^B>|c}Wo;~#)t3=S`6WE*McOLpw!TFP)Du`vHYP?^5b;R@BYuOQ> zQ2s)@uAk%E=iFfbL26zT#~fa8Yx{RU_H2WyK|N`UcX!b8ZrA*9S&zNFy}I5UcJd|Q zG5=%be2;4e<+QvJJ6I5x?~=jYP7iQYXG8lYJf)LCrW@ayR87U@;~)_73g|lB$n?M z0EMOI|3+C#^z?7fhK+{HKKT)&3Z-8>DSy zuTRpw>Ymco4p})o{We|9DoDntTRqK<)jmiJDPRu zM7Ef6i$11=JTjq!z&2=R&@hQ6pCUM94y*(7EWutVff&$;q;0a18Sp}DvR9JHB2>Y| zjGrM}aU0tpY)%Pvas>GS#pj8)5~60z_!fbAE_@0BEF-rlP!?k~ z-8j^rtpPIxOTKQiNGzlvqd-Zw3o?-E2vvi9p%SKz6qs7Y!I%`uWfVGrQ^zP%Y`G{( zII(lb(Q%^LXR9)8X0|1{)Nr&GS@PT?7$r4l5usPbzmztuln*&%FSSVm7>f)UwnIei5}Qu$ZHd=&b?CZ9-ufJw2{CmvrEwRR@pY?e_`SZkiZPaq$LClTvRC1{3}0%5{5E`G&;oAW)qC&nkCej zf`|#R9zuNm=iro&6b56gVuZ#vLo`|jdc#Z@6@7UJ2A!dQ=^S(>5}}<|PRpZBU=$ECU~%8lm0#Uf-*virQZ}LfCx6U)Jn&gsJ%52xE@>Q z@5CJnLW~r4EKEzdYR%vo`+a&RS?(>B8XTxnq;8c8i{vHGNphcBOucu2eZL+u+9%^%uM=ZF zV`++&6y5+mFDcp~eyRxgzC6Q|@v;X+<3T z*&p(JXoZj*v{0t}&xoNGBzg|YDgmfR(@1U+{Fj)RayCX9ZGxrNUs}Tj=zv*iDV2oK cn@G|DizM1qise!j{Uzr954B@w_Xalr0G-#cLjV8( literal 2838 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 os1c9=+gTGuNRk*qT - + - + diff --git a/creusot/tests/should_succeed/vector/09_capacity/why3shapes.gz b/creusot/tests/should_succeed/vector/09_capacity/why3shapes.gz index a6b15b23dcd8d318cd6013d0ccc29b03d4c9c529..1ca694e5c61c0bd424bbc1bd5f3fa92ddff2aac5 100644 GIT binary patch literal 455 zcmV;&0XY62iwFP!00000|D}?_j+-zLhVMKDx3-+d#x_vx9#AC&FW_U*#Fzw?;4MMf z?c3LOOsbG6$V-Y9cqUARZ)0s-BLP#X3B7Awp zQBV8jfVOKK&3k(^ogP6_TueJm3m)+UO5b}|(zvvJuaY2BEBR`}PJgtc*$)cvr(}|3 zx4FdU8hmkI9`T7}rS+!37E~pEV$x}U*4``)&iZ7=v$i6l2_uVg4H~O@Cr9{Ji14+8 zU&i%Sw%JPH&djrU*WH)nuS;`3OgKuC;?UW%@?~5S<|3bCxYtYTzq+v!mq|kD13UE2 z4qffge|D(nq+2_5wF4dv7duoE;%OF3+yRf-#TH!za&ZM0UJy3iB49H|%{;V_c|hj& z$sPm67P#J(xB}g!S>0Qn2t4L^{!dFGdEjxkYgM>?Rz>nh+?zR82b}i0RrrQ#SpG!M zHcY|IE@eS13+}S!NwZM!-$U30U$=&pPp29+&h1&NC<4)oKBv$rPE&?L>^R{aEpn;~ x%2OTln$>AdYf?jmO3*%MGzU#IWxXIku*Vz~hrFP>IIG3A_%B|5uCHMP001=0+}!{G literal 427 zcmV;c0aX4UiwFP!00000|Fx3AZlf>|hVMKDx9#R+8*JlMdx$C_cmW?54TDKg32q5W zx^KV6F$qrHBINp%}djH@%cMcc0*+gmHneKZ`Oa+}bh5Jq$ZjA-n^2)1T