From c7d69a1e933174291d5409dd127dbec3740940b1 Mon Sep 17 00:00:00 2001 From: Li-yao Xia Date: Wed, 1 Oct 2025 16:34:34 +0200 Subject: [PATCH] Update to nightly-2025-10-01 --- creusot/src/analysis.rs | 2 +- creusot/src/backend.rs | 12 +- creusot/src/backend/clone_map.rs | 4 +- creusot/src/backend/clone_map/elaborator.rs | 2 +- creusot/src/backend/dependency.rs | 8 +- .../optimization/constant_propagation.rs | 2 - creusot/src/backend/program.rs | 8 +- creusot/src/backend/ty.rs | 2 +- creusot/src/backend/ty_inv.rs | 2 +- creusot/src/callbacks.rs | 2 +- creusot/src/naming.rs | 7 +- creusot/src/translation/fmir.rs | 5 - creusot/src/translation/function/statement.rs | 4 - creusot/src/translation/specification.rs | 2 +- creusot/src/translation/traits.rs | 6 +- creusot/src/util.rs | 12 +- creusot/src/validate/purity.rs | 2 +- creusot/src/very_stable_hash.rs | 33 +- rust-toolchain | 2 +- .../creusot-contracts/creusot-contracts.coma | 60 +- tests/should_fail/bug/400.stderr | 12 +- tests/should_fail/bug/436_2.stderr | 2 +- tests/should_fail/generic_deref_ghost.coma | 2 +- tests/should_fail/generic_deref_snap.coma | 4 +- .../trait_def_and_impl_disagree.stderr | 12 +- .../should_succeed/bitvectors/bitwalker.coma | 10 +- tests/should_succeed/bug/164.coma | 44 +- tests/should_succeed/bug/395.coma | 8 +- tests/should_succeed/bug/two_phase.coma | 2 +- tests/should_succeed/checked_ops.coma | 1993 ++++++++--------- tests/should_succeed/closures/inference.coma | 66 +- tests/should_succeed/duration.coma | 331 ++- tests/should_succeed/fn_ghost.coma | 26 +- tests/should_succeed/generic_deref.coma | 4 +- tests/should_succeed/ghost/ghost_vec.coma | 451 ++-- .../should_succeed/ghost/ghost_vec/proof.json | 14 +- tests/should_succeed/hashmap.coma | 4 +- tests/should_succeed/heapsort_generic.coma | 4 +- tests/should_succeed/index_range.coma | 1522 +++++++------ tests/should_succeed/instant.coma | 172 +- .../iterators/03_std_iterators.coma | 2 +- .../iterators/08_collect_extend.coma | 4 +- tests/should_succeed/iterators/11_repeat.coma | 12 +- tests/should_succeed/iterators/13_cloned.coma | 12 +- .../should_succeed/lang/branch_borrow_2.coma | 8 +- tests/should_succeed/lang/unary_op.coma | 10 +- tests/should_succeed/match_int.coma | 18 +- tests/should_succeed/option.coma | 1444 ++++++------ tests/should_succeed/permcell.coma | 44 +- tests/should_succeed/projection_toggle.coma | 8 +- tests/should_succeed/red_black_tree.coma | 8 +- tests/should_succeed/resolve_uninit.coma | 14 +- .../resource_algebras/excl.coma | 10 +- tests/should_succeed/result/own.coma | 6 +- tests/should_succeed/result/result.coma | 1150 +++++----- tests/should_succeed/rusthorn/inc_max.coma | 8 +- tests/should_succeed/rusthorn/inc_max_3.coma | 33 +- .../should_succeed/rusthorn/inc_max_many.coma | 31 +- .../rusthorn/inc_max_repeat.coma | 31 +- .../rusthorn/inc_some_2_list.coma | 8 +- .../rusthorn/inc_some_2_tree.coma | 8 +- .../rusthorn/inc_some_list.coma | 8 +- .../rusthorn/inc_some_tree.coma | 8 +- .../selection_sort_generic.coma | 2 +- tests/should_succeed/sparse_array.coma | 16 +- tests/should_succeed/sparse_array/proof.json | 32 +- .../should_succeed/syntax/12_ghost_code.coma | 8 +- .../syntax/derive_macros/default.coma | 8 +- .../syntax/derive_macros/mixed.coma | 16 +- tests/should_succeed/union_find.coma | 86 +- tests/should_succeed/union_find_cpp.coma | 74 +- tests/should_succeed/vecdeque.coma | 116 +- tests/should_succeed/vector/02_gnome.coma | 2 +- .../vector/05_binary_search_generic.coma | 4 +- .../should_succeed/vector/07_read_write.coma | 10 +- 75 files changed, 4001 insertions(+), 4118 deletions(-) diff --git a/creusot/src/analysis.rs b/creusot/src/analysis.rs index 56799bd484..e7aff1dd51 100644 --- a/creusot/src/analysis.rs +++ b/creusot/src/analysis.rs @@ -514,7 +514,7 @@ impl<'a, 'tcx> Analysis<'a, 'tcx> { | Ref(_, _, _) | FnDef(_, _) | FnPtr(..) - | Dynamic(_, _, _) + | Dynamic(_, _) | CoroutineClosure(_, _) | Coroutine(_, _) | CoroutineWitness(_, _) diff --git a/creusot/src/backend.rs b/creusot/src/backend.rs index 0a8170668d..9c98afc7aa 100644 --- a/creusot/src/backend.rs +++ b/creusot/src/backend.rs @@ -2,7 +2,7 @@ use crate::{ contracts_items::{is_spec, is_trusted}, ctx::{HasTyCtxt, ItemType, TranslatedItem, TranslationCtx}, naming::ModulePath, - util::path_of_span, + util::{impl_subject, path_of_span}, }; use creusot_args::options::SpanMode; use indexmap::IndexMap; @@ -165,7 +165,7 @@ impl<'tcx> Why3Generator<'tcx> { let parent_id = key.parent?; // The last segment is CrateRoot. Skip it. if key.disambiguated_data.data == rustc_hir::definitions::DefPathData::Impl { - return Some(display_impl_subject(&tcx.impl_subject(id).skip_binder())); + return Some(display_impl_subject(tcx, id)); } id.index = parent_id; } @@ -182,10 +182,10 @@ impl<'tcx> HasTyCtxt<'tcx> for Why3Generator<'tcx> { } } -fn display_impl_subject(i: &rustc_middle::ty::ImplSubject<'_>) -> String { - match i { - rustc_middle::ty::ImplSubject::Trait(trait_ref) => trait_ref.to_string(), - rustc_middle::ty::ImplSubject::Inherent(ty) => ty.to_string(), +fn display_impl_subject(tcx: TyCtxt, id: DefId) -> String { + match impl_subject(tcx, id) { + Ok(trait_ref) => trait_ref.to_string(), + Err(ty) => ty.to_string(), } } diff --git a/creusot/src/backend/clone_map.rs b/creusot/src/backend/clone_map.rs index d79b295a50..092e74af30 100644 --- a/creusot/src/backend/clone_map.rs +++ b/creusot/src/backend/clone_map.rs @@ -170,12 +170,12 @@ pub(crate) trait Namer<'tcx> { .without_search_path() } - // TODO: get rid of this. `erase_regions` should be the responsibility of the callers. + // TODO: get rid of this. `erase_and_anonymize_regions` should be the responsibility of the callers. // NOTE: should `Namer::ty()` be asserting with `has_erasable_regions` instead? fn raw_dependency(&self, dep: Dependency<'tcx>) -> &Kind; fn dependency(&self, dep: Dependency<'tcx>) -> &Kind { - self.raw_dependency(dep.erase_regions(self.tcx())) + self.raw_dependency(dep.erase_and_anonymize_regions(self.tcx())) } fn resolve_dependency(&self, dep: Dependency<'tcx>) -> Dependency<'tcx> { diff --git a/creusot/src/backend/clone_map/elaborator.rs b/creusot/src/backend/clone_map/elaborator.rs index c2dce09795..963bcff1f9 100644 --- a/creusot/src/backend/clone_map/elaborator.rs +++ b/creusot/src/backend/clone_map/elaborator.rs @@ -452,7 +452,7 @@ fn expand_type<'tcx>( translate_tydecl(ctx, &names, (def_id, subst), typing_env) } TyKind::Tuple(_) => translate_tuple_ty(ctx, &names, ty), - TyKind::Dynamic(traits, _, _) => { + TyKind::Dynamic(traits, _) => { if is_logically_dyn_compatible(ctx.tcx(), traits.iter()) { vec![Decl::TyDecl(TyDecl::Opaque { ty_name: names.ty(ty).to_ident(), diff --git a/creusot/src/backend/dependency.rs b/creusot/src/backend/dependency.rs index ab20650fa7..7384126892 100644 --- a/creusot/src/backend/dependency.rs +++ b/creusot/src/backend/dependency.rs @@ -47,8 +47,8 @@ impl<'tcx> Dependency<'tcx> { } // FIXME: this function should not be necessary, dependencies should not be created non-normalized - pub(crate) fn erase_regions(self, tcx: TyCtxt<'tcx>) -> Self { - tcx.erase_regions(self) + pub(crate) fn erase_and_anonymize_regions(self, tcx: TyCtxt<'tcx>) -> Self { + tcx.erase_and_anonymize_regions(self) } pub(crate) fn base_ident(self, ctx: &TranslationCtx<'tcx>) -> Option { @@ -74,7 +74,7 @@ impl<'tcx> Dependency<'tcx> { .replace(|c: char| !(c.is_ascii_alphanumeric() || c == '\''), "_"), ))), TyKind::Tuple(_) => Some(Symbol::intern("tuple")), - TyKind::Dynamic(_, _, _) => { + TyKind::Dynamic(_, _) => { Some(Symbol::intern(&type_string(ctx.tcx, String::new(), ty))) } _ => None, @@ -193,7 +193,7 @@ fn type_string_walk(tcx: TyCtxt, prefix: &mut String, ty: Ty) { None => push_(prefix, "x"), Some(name) => push_(prefix, &to_alphanumeric(name.as_str())), }, - Dynamic(traits, _, _) => { + Dynamic(traits, _) => { prefix.push_str("dyn"); for tr in traits.iter() { let ty::ExistentialPredicate::Trait(tr) = tr.skip_binder() else { continue }; diff --git a/creusot/src/backend/optimization/constant_propagation.rs b/creusot/src/backend/optimization/constant_propagation.rs index e26ece7778..f682fa55c2 100644 --- a/creusot/src/backend/optimization/constant_propagation.rs +++ b/creusot/src/backend/optimization/constant_propagation.rs @@ -139,7 +139,6 @@ impl<'tcx> LocalUsage<'_, 'tcx> { RValue::Constructor(_, _, es) => es.iter().for_each(|e| self.visit_operand(e)), RValue::Cast(e, _, _) => self.visit_operand(e), RValue::Tuple(es) => es.iter().for_each(|e| self.visit_operand(e)), - RValue::Len(e) => self.visit_operand(e), RValue::Array(es) => es.iter().for_each(|e| self.visit_operand(e)), RValue::Repeat(l, r) => { self.visit_operand(l); @@ -327,7 +326,6 @@ impl<'tcx> SimplePropagator<'tcx> { RValue::Constructor(_, _, es) => es.iter_mut().for_each(|e| self.visit_operand(e)), RValue::Cast(e, _, _) => self.visit_operand(e), RValue::Tuple(es) => es.iter_mut().for_each(|e| self.visit_operand(e)), - RValue::Len(e) => self.visit_operand(e), RValue::Array(es) => es.iter_mut().for_each(|e| self.visit_operand(e)), RValue::Repeat(l, r) => { self.visit_operand(l); diff --git a/creusot/src/backend/program.rs b/creusot/src/backend/program.rs index e2708e1389..ec45ccc83f 100644 --- a/creusot/src/backend/program.rs +++ b/creusot/src/backend/program.rs @@ -51,7 +51,7 @@ use rustc_middle::{ ty::{self, AdtDef, GenericArgs, GenericArgsRef, Ty, TyCtxt, TyKind}, }; use rustc_span::{DUMMY_SP, Span}; -use rustc_type_ir::{DynKind, IntTy}; +use rustc_type_ir::IntTy; use std::{collections::HashMap, fmt::Debug, iter::once}; use why3::{ Ident, Name, @@ -739,7 +739,7 @@ impl<'tcx> RValue<'tcx> { RValue::Cast(e, source, target) if let Some(source) = source.builtin_deref(false) && let Some(target) = target.builtin_deref(false) - && let TyKind::Dynamic(_, _, _) = target.kind() => + && let TyKind::Dynamic(_, _) = target.kind() => { let cast = lower.names.dyn_cast(source, target); Exp::var(cast).app(vec![e.into_why(lower, istmts)]) @@ -818,8 +818,6 @@ impl<'tcx> RValue<'tcx> { _ => unsupported_cast(lower.ctx, span, source, target), } } - RValue::Len(op) => Exp::qvar(lower.names.in_pre(PreMod::Slice, "length")) - .app([op.into_why(lower, istmts)]), RValue::Array(fields) => { let id = Ident::fresh_local("__arr_temp"); let ty = lower.ty(ty); @@ -1435,5 +1433,5 @@ pub fn ptr_cast_kind<'tcx>( /// If `true`, this is definitely an unsized type, so pointers to it must be fat. /// If `false`, nothing is known for sure. pub fn is_unsized(ty: &Ty) -> bool { - matches!(ty.kind(), TyKind::Str | TyKind::Slice(_) | TyKind::Dynamic(_, _, DynKind::Dyn)) + matches!(ty.kind(), TyKind::Str | TyKind::Slice(_) | TyKind::Dynamic(_, _)) } diff --git a/creusot/src/backend/ty.rs b/creusot/src/backend/ty.rs index 3771f38204..33e0c2c5d2 100644 --- a/creusot/src/backend/ty.rs +++ b/creusot/src/backend/ty.rs @@ -74,7 +74,7 @@ pub(crate) fn translate_ty<'tcx, N: Namer<'tcx>>( | Adt(..) | Tuple(_) | Param(_) - | Dynamic(_, _, _) + | Dynamic(_, _) | Alias(AliasTyKind::Opaque | AliasTyKind::Projection, _) => { MlT::TConstructor(names.ty(ty)) } diff --git a/creusot/src/backend/ty_inv.rs b/creusot/src/backend/ty_inv.rs index c46b8086d3..8f3d801575 100644 --- a/creusot/src/backend/ty_inv.rs +++ b/creusot/src/backend/ty_inv.rs @@ -76,7 +76,7 @@ pub(crate) fn is_tyinv_trivial<'tcx>( | TyKind::FnDef(_, _) | TyKind::FnPtr(..) | TyKind::RawPtr(_, _) - | TyKind::Dynamic(_, _, _) => (), + | TyKind::Dynamic(_, _) => (), _ => ctx.dcx().span_fatal(span, format!("Unsupported type: {ty}")), } } diff --git a/creusot/src/callbacks.rs b/creusot/src/callbacks.rs index 6e9b88503e..4751eb788b 100644 --- a/creusot/src/callbacks.rs +++ b/creusot/src/callbacks.rs @@ -118,7 +118,7 @@ impl Callbacks for ToWhy { fn mir_borrowck<'tcx, 'a>( tcx: TyCtxt<'tcx>, def_id: LocalDefId, -) -> Result<&'a mir::ConcreteOpaqueTypes<'tcx>, ErrorGuaranteed> { +) -> Result<&'a mir::DefinitionSiteHiddenTypes<'tcx>, ErrorGuaranteed> { let opts = ConsumerOptions::RegionInferenceContext; let bodies_with_facts = rustc_borrowck::consumers::get_bodies_with_borrowck_facts(tcx, def_id, opts); diff --git a/creusot/src/naming.rs b/creusot/src/naming.rs index 9783fcd571..75af90dcac 100644 --- a/creusot/src/naming.rs +++ b/creusot/src/naming.rs @@ -7,7 +7,7 @@ use rustc_middle::ty::TyCtxt; use rustc_span::Symbol; use std::{iter::once, path::PathBuf}; -use crate::very_stable_hash::get_very_stable_hash; +use crate::{util::impl_subject, very_stable_hash::get_very_stable_hash}; // TODO: clean up this module. There are a bunch of redundancies. // @@ -191,9 +191,8 @@ fn ident_path_segments_(tcx: TyCtxt, def_id: DefId) -> Vec { Some(parent_id) => parent_id, }; match key.disambiguated_data.data { - DefPathData::Impl => { - segs.push(Segment::Impl(get_very_stable_hash(&tcx.impl_subject(id), &tcx).as_u64())) - } + DefPathData::Impl => segs + .push(Segment::Impl(get_very_stable_hash(&impl_subject(tcx, id), &tcx).as_u64())), _ => segs.push(Segment::Other(key.disambiguated_data)), } id.index = parent_id; diff --git a/creusot/src/translation/fmir.rs b/creusot/src/translation/fmir.rs index b12e783876..426783c82c 100644 --- a/creusot/src/translation/fmir.rs +++ b/creusot/src/translation/fmir.rs @@ -139,7 +139,6 @@ pub enum RValue<'tcx> { Constructor(DefId, GenericArgsRef<'tcx>, Box<[Operand<'tcx>]>), Cast(Operand<'tcx>, Ty<'tcx>, Ty<'tcx>), Tuple(Box<[Operand<'tcx>]>), - Len(Operand<'tcx>), Array(Box<[Operand<'tcx>]>), Repeat(Operand<'tcx>, Operand<'tcx>), Ptr(Place<'tcx>), @@ -189,7 +188,6 @@ impl RValue<'_> { RValue::Constructor(_, _, _) => true, RValue::Cast(_, _, _) => false, RValue::Tuple(_) => true, - RValue::Len(_) => true, RValue::Array(_) => true, RValue::Repeat(_, _) => true, RValue::Snapshot(_) => true, @@ -721,9 +719,6 @@ pub(crate) fn super_visit_rvalue<'tcx, V: FmirVisitor<'tcx>>(visitor: &mut V, rv visitor.visit_operand(op); } } - RValue::Len(op) => { - visitor.visit_operand(op); - } RValue::Array(ops) => { for op in ops { visitor.visit_operand(op); diff --git a/creusot/src/translation/function/statement.rs b/creusot/src/translation/function/statement.rs index f1d50ac623..baa086d06a 100644 --- a/creusot/src/translation/function/statement.rs +++ b/creusot/src/translation/function/statement.rs @@ -155,10 +155,6 @@ impl<'tcx> BodyTranslator<'_, 'tcx> { ), } } - &Rvalue::Len(pl) => { - let e = Operand::Copy(self.translate_place(pl, span)); - RValue::Len(e) - } Rvalue::Cast(CastKind::IntToInt | CastKind::PtrToPtr, op, cast_ty) => { let op_ty = op.ty(self.body, self.tcx()); RValue::Cast(self.translate_operand(op, span), op_ty, *cast_ty) diff --git a/creusot/src/translation/specification.rs b/creusot/src/translation/specification.rs index 166f043e01..650ba61fd3 100644 --- a/creusot/src/translation/specification.rs +++ b/creusot/src/translation/specification.rs @@ -217,7 +217,7 @@ pub(crate) fn inherited_extern_spec<'tcx>( let assoc = ctx.opt_associated_item(def_id)?; let trait_ref = ctx.impl_trait_ref(assoc.container_id(ctx.tcx))?; - let id = assoc.trait_item_def_id?; + let id = assoc.trait_item_def_id()?; if ctx.extern_spec(id).is_none() { return None; diff --git a/creusot/src/translation/traits.rs b/creusot/src/translation/traits.rs index 7c77de7b06..9b5f6f9599 100644 --- a/creusot/src/translation/traits.rs +++ b/creusot/src/translation/traits.rs @@ -169,7 +169,7 @@ pub(crate) fn evaluate_additional_predicates<'tcx>( ) -> Result<(), Vec>> { let mut fulfill_cx = >::new(infcx); for predicate in p { - let predicate = infcx.tcx.erase_regions(predicate); + let predicate = infcx.tcx.erase_and_anonymize_regions(predicate); let cause = ObligationCause::dummy_with_span(sp); let obligation = Obligation { cause, param_env, recursion_depth: 0, predicate }; fulfill_cx.register_predicate_obligation(infcx, obligation); @@ -326,7 +326,7 @@ impl<'tcx> TraitResolved<'tcx> { ); let substs = substs.rebase_onto(tcx, trait_ref.def_id, args); - let leaf_substs = tcx.erase_regions(substs); + let leaf_substs = tcx.erase_and_anonymize_regions(substs); TraitResolved::Instance { def: (leaf_def.item.def_id, leaf_substs), @@ -348,7 +348,7 @@ impl<'tcx> TraitResolved<'tcx> { TraitResolved::UnknownFound } ImplSource::Builtin(_, _) => { - if matches!(substs.type_at(0).kind(), rustc_middle::ty::Dynamic(_, _, _)) { + if matches!(substs.type_at(0).kind(), rustc_middle::ty::Dynamic(_, _)) { // These types are not supported, but we want to display a proper error message because // they are rather common in real Rust code, and this is not the right place to emit // such an error message. diff --git a/creusot/src/util.rs b/creusot/src/util.rs index 68db5a15fc..e499d763da 100644 --- a/creusot/src/util.rs +++ b/creusot/src/util.rs @@ -18,7 +18,7 @@ use rustc_span::{Span, Symbol}; use creusot_args::options::SpanMode; pub(crate) fn erased_identity_for_item(tcx: TyCtxt, did: DefId) -> GenericArgsRef { - tcx.erase_regions(GenericArgs::identity_for_item(tcx, did)) + tcx.erase_and_anonymize_regions(GenericArgs::identity_for_item(tcx, did)) } pub(crate) fn parent_module(tcx: TyCtxt, mut id: DefId) -> DefId { @@ -142,6 +142,16 @@ fn hashed_symbol(data: DefPathData) -> Option { } } +pub fn impl_subject<'tcx>( + tcx: TyCtxt<'tcx>, + id: DefId, +) -> Result, ty::Ty<'tcx>> { + match tcx.impl_trait_ref(id) { + Some(trait_ref) => Ok(trait_ref.skip_binder()), + None => Err(tcx.type_of(id).skip_binder()), + } +} + pub fn eq_nameless_generic_args<'tcx>( args1: ty::GenericArgsRef<'tcx>, args2: ty::GenericArgsRef<'tcx>, diff --git a/creusot/src/validate/purity.rs b/creusot/src/validate/purity.rs index 17adf8b5eb..4a662c2f29 100644 --- a/creusot/src/validate/purity.rs +++ b/creusot/src/validate/purity.rs @@ -208,7 +208,7 @@ impl<'a, 'tcx> Visitor<'a, 'tcx> for PurityVisitor<'a, 'tcx> { ExprKind::Call { fun, ref args, .. } => { if let &FnDef(func_did, subst) = self.thir[fun].ty.kind() { // try to specialize the called function if it is a trait method. - let subst = self.ctx.erase_regions(subst); + let subst = self.ctx.erase_and_anonymize_regions(subst); let (func_did, _) = TraitResolved::resolve_item(self.ctx.tcx, self.typing_env, func_did, subst) .to_opt(func_did, subst) diff --git a/creusot/src/very_stable_hash.rs b/creusot/src/very_stable_hash.rs index ea154b7332..863ec11d80 100644 --- a/creusot/src/very_stable_hash.rs +++ b/creusot/src/very_stable_hash.rs @@ -64,6 +64,20 @@ impl> VeryStableHash for Option { } } +impl, E: VeryStableHash> VeryStableHash for Result { + fn very_stable_hash(&self, tcx: &CTX, hcx: &mut StableHasher) { + std::mem::discriminant(self).hash(hcx); + match self { + Ok(x) => { + x.very_stable_hash(tcx, hcx); + } + Err(e) => { + e.very_stable_hash(tcx, hcx); + } + } + } +} + impl> VeryStableHash for Vec { fn very_stable_hash(&self, tcx: &CTX, hcx: &mut StableHasher) { self.as_slice().very_stable_hash(tcx, hcx); @@ -176,10 +190,9 @@ impl<'tcx> VeryStableHash> for ty::TyKind<'tcx> { binder.very_stable_hash(tcx, hcx); sig.very_stable_hash(tcx, hcx); } - Dynamic(trait_ty, region, kind) => { + Dynamic(trait_ty, region) => { trait_ty.very_stable_hash(tcx, hcx); region.very_stable_hash(tcx, hcx); - kind.very_stable_hash(tcx, hcx); } Closure(def_id, substs) => { def_id.very_stable_hash(tcx, hcx); @@ -224,16 +237,6 @@ impl<'tcx> VeryStableHash> for ty::TraitRef<'tcx> { } } -impl<'tcx> VeryStableHash> for ty::ImplSubject<'tcx> { - fn very_stable_hash(&self, tcx: &TyCtxt<'tcx>, hcx: &mut StableHasher) { - std::mem::discriminant(self).hash(hcx); - match self { - ty::ImplSubject::Inherent(ty) => ty.very_stable_hash(tcx, hcx), - ty::ImplSubject::Trait(trait_ref) => trait_ref.very_stable_hash(tcx, hcx), - } - } -} - impl<'tcx> VeryStableHash> for ty::ExistentialTraitRef<'tcx> { fn very_stable_hash(&self, tcx: &TyCtxt<'tcx>, hcx: &mut StableHasher) { self.def_id.very_stable_hash(tcx, hcx); @@ -331,12 +334,6 @@ impl<'tcx, CTX, T: VeryStableHash> VeryStableHash for ty::EarlyBinder< } } -impl VeryStableHash for ty::DynKind { - fn very_stable_hash(&self, _tcx: &CTX, hcx: &mut StableHasher) { - std::mem::discriminant(self).hash(hcx); - } -} - impl VeryStableHash for ty::AliasTyKind { fn very_stable_hash(&self, _tcx: &CTX, hcx: &mut StableHasher) { std::mem::discriminant(self).hash(hcx); diff --git a/rust-toolchain b/rust-toolchain index 298cad5105..d39230f3f6 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1,3 +1,3 @@ [toolchain] -channel = "nightly-2025-09-04" +channel = "nightly-2025-10-01" components = [ "rustfmt", "rustc-dev", "llvm-tools" ] diff --git a/tests/creusot-contracts/creusot-contracts.coma b/tests/creusot-contracts/creusot-contracts.coma index 16d57585da..1d43450b4c 100644 --- a/tests/creusot-contracts/creusot-contracts.coma +++ b/tests/creusot-contracts/creusot-contracts.coma @@ -87,7 +87,7 @@ module M_creusot_contracts__cell__permcell__qyi12443308788980502857__take [#"../ let%span sghost = "../../creusot-contracts/src/ghost.rs" 109 20 109 27 let%span sghost'0 = "../../creusot-contracts/src/ghost.rs" 100 8 100 22 let%span sghost'1 = "../../creusot-contracts/src/ghost.rs" 118 8 118 18 - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 140 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 139 4 let%span smodel = "../../creusot-contracts/src/model.rs" 59 8 59 22 let%span sops = "../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../creusot-contracts/src/std/ops.rs" 164 14 164 100 @@ -278,7 +278,7 @@ module M_creusot_contracts__cell__permcell__qyi12443308788980502857__take [#"../ end module M_creusot_contracts__ghost__fn_ghost__qyi2064759324376620136__clone [#"../../creusot-contracts/src/ghost/fn_ghost.rs" 32 4 32 27] (* as std::clone::Clone> *) let%span sinvariant = "../../creusot-contracts/src/invariant.rs" 90 8 90 18 - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 237 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 236 4 let%span smodel = "../../creusot-contracts/src/model.rs" 43 8 43 22 let%span sops = "../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../creusot-contracts/src/std/ops.rs" 164 14 164 100 @@ -593,7 +593,7 @@ module M_creusot_contracts__ghost__local_invariant__qyi2997475845828180053__open let%span sghost'4 = "../../creusot-contracts/src/ghost.rs" 179 14 179 26 let%span sghost'5 = "../../creusot-contracts/src/ghost.rs" 191 14 191 26 let%span sghost'6 = "../../creusot-contracts/src/ghost.rs" 118 8 118 18 - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 151 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 150 4 let%span slib'0 = "../../creusot-contracts/src/lib.rs" 1 0 219 4 let%span sops = "../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../creusot-contracts/src/std/ops.rs" 164 14 164 100 @@ -4347,7 +4347,7 @@ module M_creusot_contracts__invariant__qyi11000281680484769800__clone [#"../../c let%span sinvariant'7 = "../../creusot-contracts/src/invariant.rs" 181 4 181 30 let%span sinvariant'8 = "../../creusot-contracts/src/invariant.rs" 182 14 182 26 let%span sinvariant'9 = "../../creusot-contracts/src/invariant.rs" 90 8 90 18 - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 237 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 236 4 let%span smodel = "../../creusot-contracts/src/model.rs" 43 8 43 22 let%span sops = "../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../creusot-contracts/src/std/ops.rs" 164 14 164 100 @@ -38271,7 +38271,7 @@ module M_creusot_contracts__std__cmp__extern_spec_std_cmp_PartialOrd_Rhs_lt_body type t_Namespace = Other namespace_other let%span sinvariant = "../../creusot-contracts/src/invariant.rs" 90 8 90 18 - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 1372 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 1383 4 let%span smodel = "../../creusot-contracts/src/model.rs" 35 8 35 28 let%span sord = "../../creusot-contracts/src/logic/ord.rs" 28 14 28 64 let%span sord'0 = "../../creusot-contracts/src/logic/ord.rs" 38 14 38 61 @@ -38443,7 +38443,7 @@ module M_creusot_contracts__std__cmp__extern_spec_std_cmp_PartialOrd_Rhs_le_body type t_Namespace = Other namespace_other let%span sinvariant = "../../creusot-contracts/src/invariant.rs" 90 8 90 18 - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 1372 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 1383 4 let%span smodel = "../../creusot-contracts/src/model.rs" 35 8 35 28 let%span sord = "../../creusot-contracts/src/logic/ord.rs" 28 14 28 64 let%span sord'0 = "../../creusot-contracts/src/logic/ord.rs" 38 14 38 61 @@ -38615,7 +38615,7 @@ module M_creusot_contracts__std__cmp__extern_spec_std_cmp_PartialOrd_Rhs_gt_body type t_Namespace = Other namespace_other let%span sinvariant = "../../creusot-contracts/src/invariant.rs" 90 8 90 18 - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 1372 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 1383 4 let%span smodel = "../../creusot-contracts/src/model.rs" 35 8 35 28 let%span sord = "../../creusot-contracts/src/logic/ord.rs" 28 14 28 64 let%span sord'0 = "../../creusot-contracts/src/logic/ord.rs" 38 14 38 61 @@ -38787,7 +38787,7 @@ module M_creusot_contracts__std__cmp__extern_spec_std_cmp_PartialOrd_Rhs_ge_body type t_Namespace = Other namespace_other let%span sinvariant = "../../creusot-contracts/src/invariant.rs" 90 8 90 18 - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 1372 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 1383 4 let%span smodel = "../../creusot-contracts/src/model.rs" 35 8 35 28 let%span sord = "../../creusot-contracts/src/logic/ord.rs" 28 14 28 64 let%span sord'0 = "../../creusot-contracts/src/logic/ord.rs" 38 14 38 61 @@ -38959,7 +38959,7 @@ module M_creusot_contracts__std__cmp__extern_spec_std_cmp_Ord_max_body [#"../../ type t_Namespace = Other namespace_other let%span sinvariant = "../../creusot-contracts/src/invariant.rs" 90 8 90 18 - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 1405 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 1416 4 let%span smodel = "../../creusot-contracts/src/model.rs" 35 8 35 28 let%span sord = "../../creusot-contracts/src/logic/ord.rs" 28 14 28 64 let%span sord'0 = "../../creusot-contracts/src/logic/ord.rs" 38 14 38 61 @@ -39112,7 +39112,7 @@ module M_creusot_contracts__std__cmp__extern_spec_std_cmp_Ord_min_body [#"../../ type t_Namespace = Other namespace_other let%span sinvariant = "../../creusot-contracts/src/invariant.rs" 90 8 90 18 - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 1387 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 1398 4 let%span smodel = "../../creusot-contracts/src/model.rs" 35 8 35 28 let%span sord = "../../creusot-contracts/src/logic/ord.rs" 28 14 28 64 let%span sord'0 = "../../creusot-contracts/src/logic/ord.rs" 38 14 38 61 @@ -39265,8 +39265,8 @@ module M_creusot_contracts__std__cmp__extern_spec_std_cmp_Ord_clamp_body [#"../. type t_Namespace = Other namespace_other let%span sinvariant = "../../creusot-contracts/src/invariant.rs" 90 8 90 18 - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 1423 4 - let%span slib'0 = "../../creusot-contracts/src/lib.rs" 1 0 1387 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 1434 4 + let%span slib'0 = "../../creusot-contracts/src/lib.rs" 1 0 1398 4 let%span smodel = "../../creusot-contracts/src/model.rs" 35 8 35 28 let%span sord = "../../creusot-contracts/src/logic/ord.rs" 28 14 28 64 let%span sord'0 = "../../creusot-contracts/src/logic/ord.rs" 38 14 38 61 @@ -39463,7 +39463,7 @@ module M_creusot_contracts__std__cmp__extern_spec_std_cmp_max_body [#"../../creu type t_Namespace = Other namespace_other - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 1013 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 1021 4 let%span sord = "../../creusot-contracts/src/logic/ord.rs" 28 14 28 64 let%span sord'0 = "../../creusot-contracts/src/logic/ord.rs" 38 14 38 61 let%span sord'1 = "../../creusot-contracts/src/logic/ord.rs" 48 14 48 61 @@ -39590,7 +39590,7 @@ module M_creusot_contracts__std__cmp__extern_spec_std_cmp_min_body [#"../../creu type t_Namespace = Other namespace_other - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 1052 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 1060 4 let%span sord = "../../creusot-contracts/src/logic/ord.rs" 28 14 28 64 let%span sord'0 = "../../creusot-contracts/src/logic/ord.rs" 38 14 38 61 let%span sord'1 = "../../creusot-contracts/src/logic/ord.rs" 48 14 48 61 @@ -46454,7 +46454,7 @@ module M_creusot_contracts__std__iter__cloned__qyi12959622540969022492__produces type t_Namespace = Other namespace_other - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 237 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 236 4 let%span sops = "../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../creusot-contracts/src/std/ops.rs" 169 14 169 61 @@ -46592,7 +46592,7 @@ module M_creusot_contracts__std__iter__cloned__qyi12959622540969022492__produces type t_Namespace = Other namespace_other - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 237 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 236 4 let%span sops = "../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../creusot-contracts/src/std/ops.rs" 169 14 169 61 @@ -48501,7 +48501,7 @@ module M_creusot_contracts__std__iter__map_inv__qyi8002351551305542163__next [#" type t_Namespace = Other namespace_other let%span sinvariant = "../../creusot-contracts/src/invariant.rs" 99 20 99 44 - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 75 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 76 4 let%span sops = "../../creusot-contracts/src/std/ops.rs" 183 16 183 17 let%span sops'0 = "../../creusot-contracts/src/std/ops.rs" 185 39 185 42 let%span sops'1 = "../../creusot-contracts/src/std/ops.rs" 183 27 183 52 @@ -49830,7 +49830,7 @@ module M_creusot_contracts__std__iter__repeat__qyi13156433517158091792__produces type t_Namespace = Other namespace_other - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 237 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 236 4 let%span sops = "../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../creusot-contracts/src/std/ops.rs" 169 14 169 61 @@ -49937,7 +49937,7 @@ module M_creusot_contracts__std__iter__repeat__qyi13156433517158091792__produces type t_Namespace = Other namespace_other - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 237 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 236 4 let%span sops = "../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../creusot-contracts/src/std/ops.rs" 169 14 169 61 @@ -51048,7 +51048,7 @@ module M_creusot_contracts__std__mem__extern_spec_std_mem_take_body [#"../../cre type t_Namespace = Other namespace_other let%span sinvariant = "../../creusot-contracts/src/invariant.rs" 99 20 99 44 - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 140 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 139 4 let%span sops = "../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../creusot-contracts/src/std/ops.rs" 169 14 169 61 @@ -52079,7 +52079,7 @@ module M_creusot_contracts__std__ops__extern_spec_core_result_T_E_F_FromResidual type t_Namespace = Other namespace_other - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 596 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 592 4 let%span sops = "../../creusot-contracts/src/std/ops.rs" 329 33 329 41 let%span sops'0 = "../../creusot-contracts/src/std/ops.rs" 324 75 324 87 let%span sops'1 = "../../creusot-contracts/src/std/ops.rs" 325 26 328 17 @@ -52386,7 +52386,7 @@ module M_creusot_contracts__std__option__extern_spec_T_Clone_Option_T_clone_body type t_Namespace = Other namespace_other let%span sinvariant = "../../creusot-contracts/src/invariant.rs" 90 8 90 18 - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 237 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 236 4 let%span sops = "../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../creusot-contracts/src/std/ops.rs" 169 14 169 61 @@ -53598,7 +53598,7 @@ module M_creusot_contracts__std__option__extern_spec_std_option_T_Option_T_unwra type t_Namespace = Other namespace_other - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 140 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 139 4 let%span sops = "../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../creusot-contracts/src/std/ops.rs" 169 14 169 61 @@ -56229,7 +56229,7 @@ module M_creusot_contracts__std__option__extern_spec_std_option_T_Optionqy95z_re type t_Namespace = Other namespace_other let%span sinvariant = "../../creusot-contracts/src/invariant.rs" 90 8 90 18 - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 237 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 236 4 let%span sops = "../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../creusot-contracts/src/std/ops.rs" 169 14 169 61 @@ -56479,7 +56479,7 @@ module M_creusot_contracts__std__option__extern_spec_std_option_T_Optionqy95z_re let%span sinvariant = "../../creusot-contracts/src/invariant.rs" 99 20 99 44 let%span sinvariant'0 = "../../creusot-contracts/src/invariant.rs" 90 8 90 18 - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 237 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 236 4 let%span sops = "../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../creusot-contracts/src/std/ops.rs" 169 14 169 61 @@ -60105,7 +60105,7 @@ module M_creusot_contracts__ghost__fn_ghost__qyi2064759324376620136__clone__refi type t_Namespace = Other namespace_other let%span sinvariant = "../../creusot-contracts/src/invariant.rs" 90 8 90 18 - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 237 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 236 4 let%span smodel = "../../creusot-contracts/src/model.rs" 43 8 43 22 let%span sops = "../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../creusot-contracts/src/std/ops.rs" 164 14 164 100 @@ -64376,7 +64376,7 @@ module M_creusot_contracts__std__iter__cloned__qyi12959622540969022492__produces type t_Namespace = Other namespace_other - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 237 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 236 4 let%span sops = "../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../creusot-contracts/src/std/ops.rs" 169 14 169 61 @@ -64514,7 +64514,7 @@ module M_creusot_contracts__std__iter__cloned__qyi12959622540969022492__produces type t_Namespace = Other namespace_other - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 237 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 236 4 let%span sops = "../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../creusot-contracts/src/std/ops.rs" 169 14 169 61 @@ -66359,7 +66359,7 @@ module M_creusot_contracts__std__iter__repeat__qyi13156433517158091792__produces type t_Namespace = Other namespace_other - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 237 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 236 4 let%span sops = "../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../creusot-contracts/src/std/ops.rs" 169 14 169 61 @@ -66462,7 +66462,7 @@ module M_creusot_contracts__std__iter__repeat__qyi13156433517158091792__produces type t_Namespace = Other namespace_other - let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 237 4 + let%span slib = "../../creusot-contracts/src/lib.rs" 1 0 236 4 let%span sops = "../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../creusot-contracts/src/std/ops.rs" 169 14 169 61 diff --git a/tests/should_fail/bug/400.stderr b/tests/should_fail/bug/400.stderr index c360ea0689..e822a6ba8c 100644 --- a/tests/should_fail/bug/400.stderr +++ b/tests/should_fail/bug/400.stderr @@ -1,14 +1,14 @@ -error: Expected `la` to be a `#[logic(law)]` as specified by the trait declaration - --> 400.rs:14:5 - | -14 | fn la() {} - | ^^^^^^^ - error: Method `lo` should not be a `#[logic(law)]`, as specified by the trait declaration --> 400.rs:17:5 | 17 | fn lo() {} | ^^^^^^^ +error: Expected `la` to be a `#[logic(law)]` as specified by the trait declaration + --> 400.rs:14:5 + | +14 | fn la() {} + | ^^^^^^^ + error: aborting due to 2 previous errors diff --git a/tests/should_fail/bug/436_2.stderr b/tests/should_fail/bug/436_2.stderr index 87f5f52eaf..7475115d4f 100644 --- a/tests/should_fail/bug/436_2.stderr +++ b/tests/should_fail/bug/436_2.stderr @@ -1,4 +1,4 @@ -error: encountered a cycle during translation: [Item(DefId(0:7 ~ 436_2[e676]::Bad::None), ['{erased}]), Type(creusot_contracts::Snapshot<&'{erased} mut Bad<'{erased}>>), Type(Bad<'{erased}>), Item(DefId(0:9 ~ 436_2[e676]::Bad::Some), ['{erased}])] +error: encountered a cycle during translation: [Item(DefId(0:7 ~ 436_2[2f9f]::Bad::None), ['{erased}]), Type(creusot_contracts::Snapshot<&'{erased} mut Bad<'{erased}>>), Type(Bad<'{erased}>), Item(DefId(0:9 ~ 436_2[2f9f]::Bad::Some), ['{erased}])] --> 436_2.rs:5:5 | 5 | None, diff --git a/tests/should_fail/generic_deref_ghost.coma b/tests/should_fail/generic_deref_ghost.coma index f3617becde..b7ccaee846 100644 --- a/tests/should_fail/generic_deref_ghost.coma +++ b/tests/should_fail/generic_deref_ghost.coma @@ -3,7 +3,7 @@ module M_generic_deref_ghost__deref_wrap [#"generic_deref_ghost.rs" 8 0 8 48] let%span sgeneric_deref_ghost'0 = "generic_deref_ghost.rs" 6 11 6 38 let%span sgeneric_deref_ghost'1 = "generic_deref_ghost.rs" 8 38 8 48 let%span sgeneric_deref_ghost'2 = "generic_deref_ghost.rs" 7 10 7 46 - let%span sgeneric_deref_ghost'3 = "generic_deref_ghost.rs" 1 0 151 4 + let%span sgeneric_deref_ghost'3 = "generic_deref_ghost.rs" 1 0 150 4 let%span sops = "../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../creusot-contracts/src/std/ops.rs" 169 14 169 61 diff --git a/tests/should_fail/generic_deref_snap.coma b/tests/should_fail/generic_deref_snap.coma index 8e971bcb01..9fe2c3a2b8 100644 --- a/tests/should_fail/generic_deref_snap.coma +++ b/tests/should_fail/generic_deref_snap.coma @@ -3,7 +3,7 @@ module M_generic_deref_snap__deref_wrap [#"generic_deref_snap.rs" 8 0 8 48] let%span sgeneric_deref_snap'0 = "generic_deref_snap.rs" 6 11 6 38 let%span sgeneric_deref_snap'1 = "generic_deref_snap.rs" 8 38 8 48 let%span sgeneric_deref_snap'2 = "generic_deref_snap.rs" 7 10 7 46 - let%span sgeneric_deref_snap'3 = "generic_deref_snap.rs" 1 0 151 4 + let%span sgeneric_deref_snap'3 = "generic_deref_snap.rs" 1 0 150 4 let%span sops = "../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../creusot-contracts/src/std/ops.rs" 169 14 169 61 @@ -130,7 +130,7 @@ end module M_generic_deref_snap__bad [#"generic_deref_snap.rs" 12 0 12 35] let%span sgeneric_deref_snap = "generic_deref_snap.rs" 6 11 6 38 let%span sgeneric_deref_snap'0 = "generic_deref_snap.rs" 7 10 7 46 - let%span sgeneric_deref_snap'1 = "generic_deref_snap.rs" 1 0 151 4 + let%span sgeneric_deref_snap'1 = "generic_deref_snap.rs" 1 0 150 4 let%span sops = "../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../creusot-contracts/src/std/ops.rs" 169 14 169 61 diff --git a/tests/should_fail/terminates/trait_def_and_impl_disagree.stderr b/tests/should_fail/terminates/trait_def_and_impl_disagree.stderr index 3fa5e1c42b..f2e9b4496e 100644 --- a/tests/should_fail/terminates/trait_def_and_impl_disagree.stderr +++ b/tests/should_fail/terminates/trait_def_and_impl_disagree.stderr @@ -4,17 +4,17 @@ error: Expected `h` to be `#[check(ghost)]` as specified by the trait declaratio 22 | fn h() {} | ^^^^^^ -error: Expected `g` to be `#[check(ghost)]` as specified by the trait declaration - --> trait_def_and_impl_disagree.rs:20:5 - | -20 | fn g() {} - | ^^^^^^ - error: Expected `f` to be `#[check(terminates)]` as specified by the trait declaration --> trait_def_and_impl_disagree.rs:17:5 | 17 | fn f() {} | ^^^^^^ +error: Expected `g` to be `#[check(ghost)]` as specified by the trait declaration + --> trait_def_and_impl_disagree.rs:20:5 + | +20 | fn g() {} + | ^^^^^^ + error: aborting due to 3 previous errors diff --git a/tests/should_succeed/bitvectors/bitwalker.coma b/tests/should_succeed/bitvectors/bitwalker.coma index b162c59005..abb7d636ae 100644 --- a/tests/should_succeed/bitvectors/bitwalker.coma +++ b/tests/should_succeed/bitvectors/bitwalker.coma @@ -96,7 +96,7 @@ module M_bitwalker__peek_bit_array8 [#"bitwalker.rs" 15 0 15 52] let%span sbitwalker'2 = "bitwalker.rs" 17 35 17 43 let%span sbitwalker'3 = "bitwalker.rs" 19 20 19 25 let%span sbitwalker'4 = "bitwalker.rs" 20 12 20 17 - let%span sbitwalker'5 = "bitwalker.rs" 19 20 19 25 + let%span sbitwalker'5 = "bitwalker.rs" 19 12 19 26 let%span sbitwalker'6 = "bitwalker.rs" 14 11 14 34 let%span sbitwalker'7 = "bitwalker.rs" 8 11 8 24 let%span sord = "../../../creusot-contracts/src/logic/ord.rs" 124 39 124 89 @@ -228,10 +228,10 @@ module M_bitwalker__peek_bit_array8 [#"bitwalker.rs" 15 0 15 52] | bb7 = s0 [ s0 = UInt64.rem {left'0} {[%#sbitwalker'1] (8: UInt64.t)} (fun (_ret: UInt64.t) -> [ &_12 <- _ret ] s1) | s1 = peek_bit_u8 {v} {_12} (fun (_ret: bool) -> [ &_0 <- _ret ] s2) - | s2 = bb12 ] - | bb5 = any [ br0 -> {([%#sbitwalker'3] false) = false} (! bb9) | br1 -> {[%#sbitwalker'3] false} (! bb11) ] - | bb11 = s0 [ s0 = [ &_0 <- [%#sbitwalker'4] false ] s1 | s1 = bb12 ] - | bb12 = return''0 {_0} + | s2 = bb11 ] + | bb5 = any [ br0 -> {([%#sbitwalker'3] false) = false} (! bb9) | br1 -> {[%#sbitwalker'3] false} (! bb10) ] + | bb10 = s0 [ s0 = [ &_0 <- [%#sbitwalker'4] false ] s1 | s1 = bb11 ] + | bb11 = return''0 {_0} | bb9 = {[%#sbitwalker'5] false} any ] [ & _0: bool = Any.any_l () | & addr'0: Slice64.slice UInt8.t = addr diff --git a/tests/should_succeed/bug/164.coma b/tests/should_succeed/bug/164.coma index 5d027fee7d..81bd8e5f52 100644 --- a/tests/should_succeed/bug/164.coma +++ b/tests/should_succeed/bug/164.coma @@ -15,7 +15,7 @@ module M_164__main [#"164.rs" 5 0 5 13] let%span s164'12 = "164.rs" 41 20 41 31 let%span s164'13 = "164.rs" 45 12 45 13 let%span s164'14 = "164.rs" 46 21 46 22 - let%span s164'15 = "164.rs" 46 16 46 22 + let%span s164'15 = "164.rs" 46 8 46 23 let%span s164'16 = "164.rs" 50 17 50 28 let%span s164'17 = "164.rs" 52 19 52 20 let%span s164'18 = "164.rs" 53 16 53 17 @@ -192,27 +192,27 @@ module M_164__main [#"164.rs" 5 0 5 13] [ s0 = bb20 ] [ bb20 = s0 [ s0 = [ &_35 <- UInt64.lt x ([%#s164'11] (4: UInt64.t)) ] s1 - | s1 = any [ br0 -> {_35 = false} (! bb27) | br1 -> {_35} (! bb22) ] ] + | s1 = any [ br0 -> {_35 = false} (! bb26) | br1 -> {_35} (! bb22) ] ] | bb22 = s0 [ s0 = {[@expl:loop invariant] [%#s164'12] UInt64.le x (3: UInt64.t)} s1 | s1 = [ &x <- [%#s164'13] (4: UInt64.t) ] s2 | s2 = [ &_40 <- x = ([%#s164'14] (4: UInt64.t)) ] s3 - | s3 = any [ br0 -> {_40 = false} (! bb23) | br1 -> {_40} (! bb19'0) ] ] ] ] - | bb23 = {[%#s164'15] false} any - | bb27 = s0 [ s0 = {[@expl:loop invariant] [%#s164'16] x = (4: UInt64.t)} s1 | s1 = bb29 ] - | bb29 = bb29'0 - [ bb29'0 = (! s0 + | s3 = any [ br0 -> {_40 = false} (! bb24) | br1 -> {_40} (! bb19'0) ] ] ] ] + | bb24 = {[%#s164'15] false} any + | bb26 = s0 [ s0 = {[@expl:loop invariant] [%#s164'16] x = (4: UInt64.t)} s1 | s1 = bb28 ] + | bb28 = bb28'0 + [ bb28'0 = (! s0 [ s0 = [ &_49 <- x <> ([%#s164'17] (5: UInt64.t)) ] s1 - | s1 = any [ br0 -> {_49 = false} (! bb31) | br1 -> {_49} (! bb30) ] ]) - [ bb30 = s0 [ s0 = [ &x <- [%#s164'18] (5: UInt64.t) ] s1 | s1 = bb29'0 ] ] ] - | bb31 = any [ br0 -> {false} (! bb34) | br1 -> {true} (! bb34) ] - | bb34 = s0 + | s1 = any [ br0 -> {_49 = false} (! bb30) | br1 -> {_49} (! bb29) ] ]) + [ bb29 = s0 [ s0 = [ &x <- [%#s164'18] (5: UInt64.t) ] s1 | s1 = bb28'0 ] ] ] + | bb30 = any [ br0 -> {false} (! bb33) | br1 -> {true} (! bb33) ] + | bb33 = s0 [ s0 = [ &_57 <- { t_Range__start = ([%#s164'20] (0: Int32.t)); t_Range__end = ([%#s164'21] (10: Int32.t)) } ] s1 | s1 = into_iter {_57} (fun (_ret: t_Range) -> [ &iter <- _ret ] s2) - | s2 = bb35 ] - | bb35 = s0 [ s0 = [ &iter_old <- [%#s164'22] iter ] s1 | s1 = bb36 ] - | bb36 = s0 [ s0 = [ &produced <- [%#s164'22] Seq.empty: Seq.seq Int32.t ] s1 | s1 = bb38 ] - | bb38 = s0 + | s2 = bb34 ] + | bb34 = s0 [ s0 = [ &iter_old <- [%#s164'22] iter ] s1 | s1 = bb35 ] + | bb35 = s0 [ s0 = [ &produced <- [%#s164'22] Seq.empty: Seq.seq Int32.t ] s1 | s1 = bb37 ] + | bb37 = s0 [ s0 = {[@expl:for invariant] [%#s164'22] inv produced} s1 | s1 = {[@expl:for invariant] [%#s164'22] inv'0 iter} s2 | s2 = {[@expl:for invariant] [%#s164'22] produces iter_old produced iter} s3 @@ -222,16 +222,16 @@ module M_164__main [#"164.rs" 5 0 5 13] | s5 = MutBorrow.borrow_final {_69.current} {MutBorrow.get_id _69} (fun (_ret: MutBorrow.t t_Range) -> [ &_68 <- _ret ] [ &_69 <- { _69 with current = _ret.final } ] s6) | s6 = next {_68} (fun (_ret: t_Option) -> [ &_67 <- _ret ] s7) - | s7 = bb39 ] - | bb39 = s0 + | s7 = bb38 ] + | bb38 = s0 [ s0 = -{resolve'0 _69}- s1 - | s1 = any [ br0 -> {_67 = C_None} (! bb45) | br1 (x0: Int32.t) -> {_67 = C_Some x0} (! bb43) ] ] - | bb43 = s0 + | s1 = any [ br0 -> {_67 = C_None} (! bb44) | br1 (x0: Int32.t) -> {_67 = C_Some x0} (! bb42) ] ] + | bb42 = s0 [ s0 = v_Some {_67} (fun (r0: Int32.t) -> [ &__creusot_proc_iter_elem <- r0 ] s1) | s1 = [ &_72 <- [%#s164'24] Seq.(++) produced (Seq.singleton __creusot_proc_iter_elem) ] s2 - | s2 = bb44 ] - | bb44 = s0 [ s0 = [ &produced <- _72 ] s1 | s1 = bb45 ] - | bb45 = return''0 {_0} ] + | s2 = bb43 ] + | bb43 = s0 [ s0 = [ &produced <- _72 ] s1 | s1 = bb44 ] + | bb44 = return''0 {_0} ] [ & _0: () = Any.any_l () | & x: UInt64.t = Any.any_l () | & _6: bool = Any.any_l () diff --git a/tests/should_succeed/bug/395.coma b/tests/should_succeed/bug/395.coma index 2f38e8e7b4..7cfc128e9d 100644 --- a/tests/should_succeed/bug/395.coma +++ b/tests/should_succeed/bug/395.coma @@ -3,7 +3,7 @@ module M_395__signed_division [#"395.rs" 3 0 3 24] let%span s395'0 = "395.rs" 5 12 5 13 let%span s395'1 = "395.rs" 7 12 7 17 let%span s395'2 = "395.rs" 7 21 7 23 - let%span s395'3 = "395.rs" 7 12 7 23 + let%span s395'3 = "395.rs" 7 4 7 24 use creusot.int.Int32 use creusot.prelude.Bool @@ -31,9 +31,9 @@ module M_395__signed_division [#"395.rs" 3 0 3 24] | bb2 = s0 [ s0 = Int32.div {_6} {_7} (fun (_ret: Int32.t) -> [ &_5 <- _ret ] s1) | s1 = [ &_4 <- _5 = ([%#s395'2] (10: Int32.t)) ] s2 - | s2 = any [ br0 -> {_4 = false} (! bb3) | br1 -> {_4} (! bb5) ] ] - | bb5 = return''0 {_0} - | bb3 = {[%#s395'3] false} any ] + | s2 = any [ br0 -> {_4 = false} (! bb4) | br1 -> {_4} (! bb3) ] ] + | bb3 = return''0 {_0} + | bb4 = {[%#s395'3] false} any ] [ & _0: () = Any.any_l () | & x: Int32.t = Any.any_l () | & y: Int32.t = Any.any_l () diff --git a/tests/should_succeed/bug/two_phase.coma b/tests/should_succeed/bug/two_phase.coma index efa779f74c..9ae52af10b 100644 --- a/tests/should_succeed/bug/two_phase.coma +++ b/tests/should_succeed/bug/two_phase.coma @@ -83,7 +83,7 @@ module M_two_phase__test [#"two_phase.rs" 6 0 6 31] end module M_two_phase__qyi14099956410468907124__insert [#"two_phase.rs" 21 4 21 28] (* VacantEntry<'_, K> *) let%span stwo_phase = "two_phase.rs" 21 23 21 27 - let%span stwo_phase'0 = "two_phase.rs" 1 0 237 4 + let%span stwo_phase'0 = "two_phase.rs" 1 0 236 4 let%span svec = "../../../creusot-contracts/src/std/vec.rs" 134 16 134 17 let%span svec'0 = "../../../creusot-contracts/src/std/vec.rs" 139 51 139 58 let%span svec'1 = "../../../creusot-contracts/src/std/vec.rs" 135 26 135 59 diff --git a/tests/should_succeed/checked_ops.coma b/tests/should_succeed/checked_ops.coma index 73b2f7d849..f4d781aef0 100644 --- a/tests/should_succeed/checked_ops.coma +++ b/tests/should_succeed/checked_ops.coma @@ -20,20 +20,18 @@ module M_checked_ops__test_u8_add_example [#"checked_ops.rs" 5 0 5 28] let%span schecked_ops'17 = "checked_ops.rs" 15 34 15 36 let%span schecked_ops'18 = "checked_ops.rs" 16 21 16 23 let%span schecked_ops'19 = "checked_ops.rs" 16 36 16 41 - let%span schecked_ops'20 = "checked_ops.rs" 16 12 16 41 - let%span schecked_ops'21 = "checked_ops.rs" 17 14 17 19 - let%span schecked_ops'22 = "checked_ops.rs" 17 36 17 38 - let%span schecked_ops'23 = "checked_ops.rs" 18 21 18 22 - let%span schecked_ops'24 = "checked_ops.rs" 18 35 18 39 - let%span schecked_ops'25 = "checked_ops.rs" 18 12 18 39 - let%span schecked_ops'26 = "checked_ops.rs" 18 12 18 39 - let%span schecked_ops'27 = "checked_ops.rs" 16 12 16 41 - let%span schecked_ops'28 = "checked_ops.rs" 13 12 13 43 - let%span schecked_ops'29 = "checked_ops.rs" 12 12 12 40 - let%span schecked_ops'30 = "checked_ops.rs" 10 12 10 39 - let%span schecked_ops'31 = "checked_ops.rs" 9 12 9 38 - let%span schecked_ops'32 = "checked_ops.rs" 7 12 7 43 - let%span schecked_ops'33 = "checked_ops.rs" 6 12 6 46 + let%span schecked_ops'20 = "checked_ops.rs" 17 14 17 19 + let%span schecked_ops'21 = "checked_ops.rs" 17 36 17 38 + let%span schecked_ops'22 = "checked_ops.rs" 18 21 18 22 + let%span schecked_ops'23 = "checked_ops.rs" 18 35 18 39 + let%span schecked_ops'24 = "checked_ops.rs" 18 4 18 40 + let%span schecked_ops'25 = "checked_ops.rs" 16 4 16 42 + let%span schecked_ops'26 = "checked_ops.rs" 13 4 13 44 + let%span schecked_ops'27 = "checked_ops.rs" 12 4 12 41 + let%span schecked_ops'28 = "checked_ops.rs" 10 4 10 40 + let%span schecked_ops'29 = "checked_ops.rs" 9 4 9 39 + let%span schecked_ops'30 = "checked_ops.rs" 7 4 7 44 + let%span schecked_ops'31 = "checked_ops.rs" 6 4 6 47 let%span snum = "../../creusot-contracts/src/std/num.rs" 223 20 224 89 let%span snum'0 = "../../creusot-contracts/src/std/num.rs" 227 26 227 87 let%span snum'1 = "../../creusot-contracts/src/std/num.rs" 233 26 233 48 @@ -108,70 +106,68 @@ module M_checked_ops__test_u8_add_example [#"checked_ops.rs" 5 0 5 28] | bb1 = s0 [ s0 = unwrap {_4} (fun (_ret: UInt8.t) -> [ &_3 <- _ret ] s1) | s1 = bb2 ] | bb2 = s0 [ s0 = [ &_2 <- _3 = ([%#schecked_ops'1] (15: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_2 = false} (! bb3) | br1 -> {_2} (! bb5) ] ] - | bb5 = s0 + | s1 = any [ br0 -> {_2 = false} (! bb4) | br1 -> {_2} (! bb3) ] ] + | bb3 = s0 [ s0 = checked_add {[%#schecked_ops'2] (250: UInt8.t)} {[%#schecked_ops'3] (10: UInt8.t)} (fun (_ret: t_Option) -> [ &_9 <- _ret ] s1) - | s1 = bb6 ] - | bb6 = s0 [ s0 = is_none {_9} (fun (_ret: bool) -> [ &_7 <- _ret ] s1) | s1 = bb7 ] - | bb7 = any [ br0 -> {_7 = false} (! bb8) | br1 -> {_7} (! bb10) ] - | bb10 = s0 + | s1 = bb5 ] + | bb5 = s0 [ s0 = is_none {_9} (fun (_ret: bool) -> [ &_7 <- _ret ] s1) | s1 = bb6 ] + | bb6 = any [ br0 -> {_7 = false} (! bb8) | br1 -> {_7} (! bb7) ] + | bb7 = s0 [ s0 = wrapping_add {[%#schecked_ops'4] (5: UInt8.t)} {[%#schecked_ops'5] (10: UInt8.t)} (fun (_ret: UInt8.t) -> [ &_13 <- _ret ] s1) - | s1 = bb11 ] - | bb11 = s0 + | s1 = bb9 ] + | bb9 = s0 [ s0 = [ &_12 <- _13 = ([%#schecked_ops'6] (15: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_12 = false} (! bb12) | br1 -> {_12} (! bb14) ] ] - | bb14 = s0 + | s1 = any [ br0 -> {_12 = false} (! bb11) | br1 -> {_12} (! bb10) ] ] + | bb10 = s0 [ s0 = wrapping_add {[%#schecked_ops'7] (250: UInt8.t)} {[%#schecked_ops'8] (10: UInt8.t)} (fun (_ret: UInt8.t) -> [ &_17 <- _ret ] s1) - | s1 = bb15 ] - | bb15 = s0 + | s1 = bb12 ] + | bb12 = s0 [ s0 = [ &_16 <- _17 = ([%#schecked_ops'9] (4: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_16 = false} (! bb16) | br1 -> {_16} (! bb18) ] ] - | bb18 = s0 + | s1 = any [ br0 -> {_16 = false} (! bb14) | br1 -> {_16} (! bb13) ] ] + | bb13 = s0 [ s0 = saturating_add {[%#schecked_ops'10] (5: UInt8.t)} {[%#schecked_ops'11] (10: UInt8.t)} (fun (_ret: UInt8.t) -> [ &_21 <- _ret ] s1) - | s1 = bb19 ] - | bb19 = s0 + | s1 = bb15 ] + | bb15 = s0 [ s0 = [ &_20 <- _21 = ([%#schecked_ops'12] (15: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_20 = false} (! bb20) | br1 -> {_20} (! bb22) ] ] - | bb22 = s0 + | s1 = any [ br0 -> {_20 = false} (! bb17) | br1 -> {_20} (! bb16) ] ] + | bb16 = s0 [ s0 = saturating_add {[%#schecked_ops'13] (250: UInt8.t)} {[%#schecked_ops'14] (10: UInt8.t)} (fun (_ret: UInt8.t) -> [ &_25 <- _ret ] s1) - | s1 = bb23 ] - | bb23 = s0 + | s1 = bb18 ] + | bb18 = s0 [ s0 = [ &_24 <- _25 = ([%#schecked_ops'15] (255: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_24 = false} (! bb24) | br1 -> {_24} (! bb26) ] ] - | bb26 = s0 + | s1 = any [ br0 -> {_24 = false} (! bb20) | br1 -> {_24} (! bb19) ] ] + | bb19 = s0 [ s0 = overflowing_add {[%#schecked_ops'16] (5: UInt8.t)} {[%#schecked_ops'17] (10: UInt8.t)} (fun (_ret: tuple) -> [ &res <- _ret ] s1) + | s1 = bb21 ] + | bb21 = s0 + [ s0 = [ &_29 <- res._p0 = ([%#schecked_ops'18] (15: UInt8.t)) ] s1 + | s1 = any [ br0 -> {_29 = false} (! bb26) | br1 -> {_29} (! bb22) ] ] + | bb22 = s0 + [ s0 = [ &_31 <- res._p1 = ([%#schecked_ops'19] false) ] s1 + | s1 = any [ br0 -> {_31 = false} (! bb26) | br1 -> {_31} (! bb23) ] ] + | bb23 = s0 + [ s0 = overflowing_add {[%#schecked_ops'20] (250: UInt8.t)} {[%#schecked_ops'21] (10: UInt8.t)} + (fun (_ret: tuple) -> [ &res'0 <- _ret ] s1) | s1 = bb27 ] | bb27 = s0 - [ s0 = [ &_30 <- res._p0 = ([%#schecked_ops'18] (15: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_30 = false} (! bb29) | br1 -> {_30} (! bb28) ] ] - | bb28 = s0 [ s0 = [ &_29 <- res._p1 = ([%#schecked_ops'19] false) ] s1 | s1 = bb30 ] - | bb29 = s0 [ s0 = [ &_29 <- [%#schecked_ops'20] false ] s1 | s1 = bb30 ] - | bb30 = any [ br0 -> {_29 = false} (! bb31) | br1 -> {_29} (! bb33) ] - | bb33 = s0 - [ s0 = overflowing_add {[%#schecked_ops'21] (250: UInt8.t)} {[%#schecked_ops'22] (10: UInt8.t)} - (fun (_ret: tuple) -> [ &res'0 <- _ret ] s1) - | s1 = bb34 ] - | bb34 = s0 - [ s0 = [ &_37 <- res'0._p0 = ([%#schecked_ops'23] (4: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_37 = false} (! bb36) | br1 -> {_37} (! bb35) ] ] - | bb35 = s0 [ s0 = [ &_36 <- res'0._p1 ] s1 | s1 = bb37 ] - | bb36 = s0 [ s0 = [ &_36 <- [%#schecked_ops'25] false ] s1 | s1 = bb37 ] - | bb37 = any [ br0 -> {_36 = false} (! bb38) | br1 -> {_36} (! bb40) ] - | bb40 = return''0 {_0} - | bb38 = {[%#schecked_ops'26] false} any - | bb31 = {[%#schecked_ops'27] false} any - | bb24 = {[%#schecked_ops'28] false} any - | bb20 = {[%#schecked_ops'29] false} any - | bb16 = {[%#schecked_ops'30] false} any - | bb12 = {[%#schecked_ops'31] false} any - | bb8 = {[%#schecked_ops'32] false} any - | bb3 = {[%#schecked_ops'33] false} any ] + [ s0 = [ &_36 <- res'0._p0 = ([%#schecked_ops'22] (4: UInt8.t)) ] s1 + | s1 = any [ br0 -> {_36 = false} (! bb32) | br1 -> {_36} (! bb28) ] ] + | bb28 = s0 [ s0 = [ &_38 <- res'0._p1 ] s1 | s1 = any [ br0 -> {_38 = false} (! bb32) | br1 -> {_38} (! bb29) ] ] + | bb29 = return''0 {_0} + | bb32 = {[%#schecked_ops'24] false} any + | bb26 = {[%#schecked_ops'25] false} any + | bb20 = {[%#schecked_ops'26] false} any + | bb17 = {[%#schecked_ops'27] false} any + | bb14 = {[%#schecked_ops'28] false} any + | bb11 = {[%#schecked_ops'29] false} any + | bb8 = {[%#schecked_ops'30] false} any + | bb4 = {[%#schecked_ops'31] false} any ] [ & _0: () = Any.any_l () | & _2: bool = Any.any_l () | & _3: UInt8.t = Any.any_l () @@ -188,10 +184,10 @@ module M_checked_ops__test_u8_add_example [#"checked_ops.rs" 5 0 5 28] | & _25: UInt8.t = Any.any_l () | & res: tuple = Any.any_l () | & _29: bool = Any.any_l () - | & _30: bool = Any.any_l () + | & _31: bool = Any.any_l () | & res'0: tuple = Any.any_l () | & _36: bool = Any.any_l () - | & _37: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] + | & _38: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end module M_checked_ops__test_u8_add_overflow [#"checked_ops.rs" 23 0 23 34] let%span schecked_ops = "checked_ops.rs" 24 12 24 17 @@ -202,12 +198,11 @@ module M_checked_ops__test_u8_add_overflow [#"checked_ops.rs" 23 0 23 34] let%span schecked_ops'4 = "checked_ops.rs" 27 14 27 19 let%span schecked_ops'5 = "checked_ops.rs" 28 25 28 26 let%span schecked_ops'6 = "checked_ops.rs" 28 39 28 43 - let%span schecked_ops'7 = "checked_ops.rs" 28 12 28 43 - let%span schecked_ops'8 = "checked_ops.rs" 28 12 28 43 - let%span schecked_ops'9 = "checked_ops.rs" 26 12 26 42 - let%span schecked_ops'10 = "checked_ops.rs" 25 12 25 42 - let%span schecked_ops'11 = "checked_ops.rs" 24 12 24 42 - let%span schecked_ops'12 = "checked_ops.rs" 22 11 22 18 + let%span schecked_ops'7 = "checked_ops.rs" 28 4 28 44 + let%span schecked_ops'8 = "checked_ops.rs" 26 4 26 43 + let%span schecked_ops'9 = "checked_ops.rs" 25 4 25 43 + let%span schecked_ops'10 = "checked_ops.rs" 24 4 24 43 + let%span schecked_ops'11 = "checked_ops.rs" 22 11 22 18 let%span snum = "../../creusot-contracts/src/std/num.rs" 223 20 224 89 let%span snum'0 = "../../creusot-contracts/src/std/num.rs" 227 26 227 87 let%span snum'1 = "../../creusot-contracts/src/std/num.rs" 233 26 233 48 @@ -270,41 +265,39 @@ module M_checked_ops__test_u8_add_overflow [#"checked_ops.rs" 23 0 23 34] meta "select_lsinst" "all" let rec test_u8_add_overflow [#"checked_ops.rs" 23 0 23 34] (a: UInt8.t) (return' (x: ())) = - {[@expl:test_u8_add_overflow requires] [%#schecked_ops'12] UInt8.t'int a <> 0} + {[@expl:test_u8_add_overflow requires] [%#schecked_ops'11] UInt8.t'int a <> 0} (! bb0 [ bb0 = s0 [ s0 = checked_add {[%#schecked_ops] (255: UInt8.t)} {a'0} (fun (_ret: t_Option) -> [ &_6 <- _ret ] s1) | s1 = bb1 ] | bb1 = s0 [ s0 = is_none {_6} (fun (_ret: bool) -> [ &_4 <- _ret ] s1) | s1 = bb2 ] - | bb2 = any [ br0 -> {_4 = false} (! bb3) | br1 -> {_4} (! bb5) ] - | bb5 = s0 + | bb2 = any [ br0 -> {_4 = false} (! bb4) | br1 -> {_4} (! bb3) ] + | bb3 = s0 [ s0 = wrapping_add {[%#schecked_ops'0] (255: UInt8.t)} {a'0} (fun (_ret: UInt8.t) -> [ &_11 <- _ret ] s1) - | s1 = bb6 ] - | bb6 = s0 + | s1 = bb5 ] + | bb5 = s0 [ s0 = UInt8.sub {a'0} {[%#schecked_ops'1] (1: UInt8.t)} (fun (_ret: UInt8.t) -> [ &_13 <- _ret ] s1) | s1 = [ &_10 <- _11 = _13 ] s2 - | s2 = any [ br0 -> {_10 = false} (! bb7) | br1 -> {_10} (! bb9) ] ] - | bb9 = s0 + | s2 = any [ br0 -> {_10 = false} (! bb7) | br1 -> {_10} (! bb6) ] ] + | bb6 = s0 [ s0 = saturating_add {[%#schecked_ops'2] (255: UInt8.t)} {a'0} (fun (_ret: UInt8.t) -> [ &_18 <- _ret ] s1) - | s1 = bb10 ] - | bb10 = s0 + | s1 = bb8 ] + | bb8 = s0 [ s0 = [ &_17 <- _18 = ([%#schecked_ops'3] (255: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_17 = false} (! bb11) | br1 -> {_17} (! bb13) ] ] - | bb13 = s0 + | s1 = any [ br0 -> {_17 = false} (! bb10) | br1 -> {_17} (! bb9) ] ] + | bb9 = s0 [ s0 = overflowing_add {[%#schecked_ops'4] (255: UInt8.t)} {a'0} (fun (_ret: tuple) -> [ &res <- _ret ] s1) - | s1 = bb14 ] - | bb14 = s0 - [ s0 = UInt8.sub {a'0} {[%#schecked_ops'5] (1: UInt8.t)} (fun (_ret: UInt8.t) -> [ &_27 <- _ret ] s1) - | s1 = [ &_25 <- res._p0 = _27 ] s2 - | s2 = any [ br0 -> {_25 = false} (! bb16) | br1 -> {_25} (! bb15) ] ] - | bb15 = s0 [ s0 = [ &_24 <- res._p1 ] s1 | s1 = bb17 ] - | bb16 = s0 [ s0 = [ &_24 <- [%#schecked_ops'7] false ] s1 | s1 = bb17 ] - | bb17 = any [ br0 -> {_24 = false} (! bb18) | br1 -> {_24} (! bb20) ] - | bb20 = return''0 {_0} - | bb18 = {[%#schecked_ops'8] false} any - | bb11 = {[%#schecked_ops'9] false} any - | bb7 = {[%#schecked_ops'10] false} any - | bb3 = {[%#schecked_ops'11] false} any ] + | s1 = bb11 ] + | bb11 = s0 + [ s0 = UInt8.sub {a'0} {[%#schecked_ops'5] (1: UInt8.t)} (fun (_ret: UInt8.t) -> [ &_26 <- _ret ] s1) + | s1 = [ &_24 <- res._p0 = _26 ] s2 + | s2 = any [ br0 -> {_24 = false} (! bb16) | br1 -> {_24} (! bb12) ] ] + | bb12 = s0 [ s0 = [ &_28 <- res._p1 ] s1 | s1 = any [ br0 -> {_28 = false} (! bb16) | br1 -> {_28} (! bb13) ] ] + | bb13 = return''0 {_0} + | bb16 = {[%#schecked_ops'7] false} any + | bb10 = {[%#schecked_ops'8] false} any + | bb7 = {[%#schecked_ops'9] false} any + | bb4 = {[%#schecked_ops'10] false} any ] [ & _0: () = Any.any_l () | & a'0: UInt8.t = a | & _4: bool = Any.any_l () @@ -316,8 +309,8 @@ module M_checked_ops__test_u8_add_overflow [#"checked_ops.rs" 23 0 23 34] | & _18: UInt8.t = Any.any_l () | & res: tuple = Any.any_l () | & _24: bool = Any.any_l () - | & _25: bool = Any.any_l () - | & _27: UInt8.t = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] + | & _26: UInt8.t = Any.any_l () + | & _28: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end module M_checked_ops__test_u8_wrapping_add [#"checked_ops.rs" 34 0 34 47] let%span schecked_ops = "checked_ops.rs" 33 10 33 56 @@ -343,8 +336,8 @@ module M_checked_ops__test_u8_wrapping_add [#"checked_ops.rs" 34 0 34 47] (! return' {result}) ] end module M_checked_ops__test_u8_overflowing_add [#"checked_ops.rs" 39 0 39 44] - let%span schecked_ops = "checked_ops.rs" 41 12 41 64 - let%span schecked_ops'0 = "checked_ops.rs" 40 12 40 55 + let%span schecked_ops = "checked_ops.rs" 41 4 41 65 + let%span schecked_ops'0 = "checked_ops.rs" 40 4 40 56 let%span snum = "../../creusot-contracts/src/std/num.rs" 256 20 257 53 let%span snum'0 = "../../creusot-contracts/src/std/num.rs" 263 20 263 102 let%span snum'1 = "../../creusot-contracts/src/std/num.rs" 267 20 267 98 @@ -396,14 +389,14 @@ module M_checked_ops__test_u8_overflowing_add [#"checked_ops.rs" 39 0 39 44] let rec test_u8_overflowing_add [#"checked_ops.rs" 39 0 39 44] (a: UInt8.t) (b: UInt8.t) (return' (x: ())) = (! bb0 [ bb0 = s0 [ s0 = overflowing_add {a'0} {b'0} (fun (_ret: tuple) -> [ &_6 <- _ret ] s1) | s1 = bb1 ] | bb1 = s0 [ s0 = wrapping_add {a'0} {b'0} (fun (_ret: UInt8.t) -> [ &_9 <- _ret ] s1) | s1 = bb2 ] - | bb2 = s0 [ s0 = [ &_4 <- _6._p0 = _9 ] s1 | s1 = any [ br0 -> {_4 = false} (! bb3) | br1 -> {_4} (! bb5) ] ] - | bb5 = s0 [ s0 = overflowing_add {a'0} {b'0} (fun (_ret: tuple) -> [ &_16 <- _ret ] s1) | s1 = bb6 ] - | bb6 = s0 [ s0 = checked_add {a'0} {b'0} (fun (_ret: t_Option) -> [ &_21 <- _ret ] s1) | s1 = bb7 ] - | bb7 = s0 [ s0 = is_none {_21} (fun (_ret: bool) -> [ &_19 <- _ret ] s1) | s1 = bb8 ] - | bb8 = s0 [ s0 = [ &_14 <- _16._p1 = _19 ] s1 | s1 = any [ br0 -> {_14 = false} (! bb9) | br1 -> {_14} (! bb11) ] ] - | bb11 = return''0 {_0} + | bb2 = s0 [ s0 = [ &_4 <- _6._p0 = _9 ] s1 | s1 = any [ br0 -> {_4 = false} (! bb4) | br1 -> {_4} (! bb3) ] ] + | bb3 = s0 [ s0 = overflowing_add {a'0} {b'0} (fun (_ret: tuple) -> [ &_16 <- _ret ] s1) | s1 = bb5 ] + | bb5 = s0 [ s0 = checked_add {a'0} {b'0} (fun (_ret: t_Option) -> [ &_21 <- _ret ] s1) | s1 = bb6 ] + | bb6 = s0 [ s0 = is_none {_21} (fun (_ret: bool) -> [ &_19 <- _ret ] s1) | s1 = bb7 ] + | bb7 = s0 [ s0 = [ &_14 <- _16._p1 = _19 ] s1 | s1 = any [ br0 -> {_14 = false} (! bb9) | br1 -> {_14} (! bb8) ] ] + | bb8 = return''0 {_0} | bb9 = {[%#schecked_ops] false} any - | bb3 = {[%#schecked_ops'0] false} any ] + | bb4 = {[%#schecked_ops'0] false} any ] [ & _0: () = Any.any_l () | & a'0: UInt8.t = a | & b'0: UInt8.t = b @@ -437,20 +430,18 @@ module M_checked_ops__test_u8_sub_example [#"checked_ops.rs" 45 0 45 28] let%span schecked_ops'17 = "checked_ops.rs" 55 34 55 36 let%span schecked_ops'18 = "checked_ops.rs" 56 21 56 24 let%span schecked_ops'19 = "checked_ops.rs" 56 37 56 41 - let%span schecked_ops'20 = "checked_ops.rs" 56 12 56 41 - let%span schecked_ops'21 = "checked_ops.rs" 57 14 57 19 - let%span schecked_ops'22 = "checked_ops.rs" 57 36 57 38 - let%span schecked_ops'23 = "checked_ops.rs" 58 21 58 24 - let%span schecked_ops'24 = "checked_ops.rs" 58 37 58 42 - let%span schecked_ops'25 = "checked_ops.rs" 58 12 58 42 - let%span schecked_ops'26 = "checked_ops.rs" 58 12 58 42 - let%span schecked_ops'27 = "checked_ops.rs" 56 12 56 41 - let%span schecked_ops'28 = "checked_ops.rs" 53 12 53 43 - let%span schecked_ops'29 = "checked_ops.rs" 52 12 52 39 - let%span schecked_ops'30 = "checked_ops.rs" 50 12 50 41 - let%span schecked_ops'31 = "checked_ops.rs" 49 12 49 39 - let%span schecked_ops'32 = "checked_ops.rs" 47 12 47 49 - let%span schecked_ops'33 = "checked_ops.rs" 46 12 46 41 + let%span schecked_ops'20 = "checked_ops.rs" 57 14 57 19 + let%span schecked_ops'21 = "checked_ops.rs" 57 36 57 38 + let%span schecked_ops'22 = "checked_ops.rs" 58 21 58 24 + let%span schecked_ops'23 = "checked_ops.rs" 58 37 58 42 + let%span schecked_ops'24 = "checked_ops.rs" 58 4 58 43 + let%span schecked_ops'25 = "checked_ops.rs" 56 4 56 42 + let%span schecked_ops'26 = "checked_ops.rs" 53 4 53 44 + let%span schecked_ops'27 = "checked_ops.rs" 52 4 52 40 + let%span schecked_ops'28 = "checked_ops.rs" 50 4 50 42 + let%span schecked_ops'29 = "checked_ops.rs" 49 4 49 40 + let%span schecked_ops'30 = "checked_ops.rs" 47 4 47 50 + let%span schecked_ops'31 = "checked_ops.rs" 46 4 46 42 let%span snum = "../../creusot-contracts/src/std/num.rs" 223 20 224 89 let%span snum'0 = "../../creusot-contracts/src/std/num.rs" 227 26 227 87 let%span snum'1 = "../../creusot-contracts/src/std/num.rs" 233 26 233 48 @@ -523,72 +514,70 @@ module M_checked_ops__test_u8_sub_example [#"checked_ops.rs" 45 0 45 28] (fun (_ret: t_Option) -> [ &_4 <- _ret ] s1) | s1 = bb1 ] | bb1 = s0 [ s0 = is_none {_4} (fun (_ret: bool) -> [ &_2 <- _ret ] s1) | s1 = bb2 ] - | bb2 = any [ br0 -> {_2 = false} (! bb3) | br1 -> {_2} (! bb5) ] - | bb5 = s0 + | bb2 = any [ br0 -> {_2 = false} (! bb4) | br1 -> {_2} (! bb3) ] + | bb3 = s0 [ s0 = checked_sub {[%#schecked_ops'1] (250: UInt8.t)} {[%#schecked_ops'2] (10: UInt8.t)} (fun (_ret: t_Option) -> [ &_9 <- _ret ] s1) - | s1 = bb6 ] - | bb6 = s0 [ s0 = unwrap {_9} (fun (_ret: UInt8.t) -> [ &_8 <- _ret ] s1) | s1 = bb7 ] - | bb7 = s0 + | s1 = bb5 ] + | bb5 = s0 [ s0 = unwrap {_9} (fun (_ret: UInt8.t) -> [ &_8 <- _ret ] s1) | s1 = bb6 ] + | bb6 = s0 [ s0 = [ &_7 <- _8 = ([%#schecked_ops'3] (240: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_7 = false} (! bb8) | br1 -> {_7} (! bb10) ] ] - | bb10 = s0 + | s1 = any [ br0 -> {_7 = false} (! bb8) | br1 -> {_7} (! bb7) ] ] + | bb7 = s0 [ s0 = wrapping_sub {[%#schecked_ops'4] (5: UInt8.t)} {[%#schecked_ops'5] (10: UInt8.t)} (fun (_ret: UInt8.t) -> [ &_13 <- _ret ] s1) - | s1 = bb11 ] - | bb11 = s0 + | s1 = bb9 ] + | bb9 = s0 [ s0 = [ &_12 <- _13 = ([%#schecked_ops'6] (251: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_12 = false} (! bb12) | br1 -> {_12} (! bb14) ] ] - | bb14 = s0 + | s1 = any [ br0 -> {_12 = false} (! bb11) | br1 -> {_12} (! bb10) ] ] + | bb10 = s0 [ s0 = wrapping_sub {[%#schecked_ops'7] (250: UInt8.t)} {[%#schecked_ops'8] (10: UInt8.t)} (fun (_ret: UInt8.t) -> [ &_17 <- _ret ] s1) - | s1 = bb15 ] - | bb15 = s0 + | s1 = bb12 ] + | bb12 = s0 [ s0 = [ &_16 <- _17 = ([%#schecked_ops'9] (240: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_16 = false} (! bb16) | br1 -> {_16} (! bb18) ] ] - | bb18 = s0 + | s1 = any [ br0 -> {_16 = false} (! bb14) | br1 -> {_16} (! bb13) ] ] + | bb13 = s0 [ s0 = saturating_sub {[%#schecked_ops'10] (5: UInt8.t)} {[%#schecked_ops'11] (10: UInt8.t)} (fun (_ret: UInt8.t) -> [ &_21 <- _ret ] s1) - | s1 = bb19 ] - | bb19 = s0 + | s1 = bb15 ] + | bb15 = s0 [ s0 = [ &_20 <- _21 = ([%#schecked_ops'12] (0: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_20 = false} (! bb20) | br1 -> {_20} (! bb22) ] ] - | bb22 = s0 + | s1 = any [ br0 -> {_20 = false} (! bb17) | br1 -> {_20} (! bb16) ] ] + | bb16 = s0 [ s0 = saturating_sub {[%#schecked_ops'13] (250: UInt8.t)} {[%#schecked_ops'14] (10: UInt8.t)} (fun (_ret: UInt8.t) -> [ &_25 <- _ret ] s1) - | s1 = bb23 ] - | bb23 = s0 + | s1 = bb18 ] + | bb18 = s0 [ s0 = [ &_24 <- _25 = ([%#schecked_ops'15] (240: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_24 = false} (! bb24) | br1 -> {_24} (! bb26) ] ] - | bb26 = s0 + | s1 = any [ br0 -> {_24 = false} (! bb20) | br1 -> {_24} (! bb19) ] ] + | bb19 = s0 [ s0 = overflowing_sub {[%#schecked_ops'16] (5: UInt8.t)} {[%#schecked_ops'17] (10: UInt8.t)} (fun (_ret: tuple) -> [ &res <- _ret ] s1) + | s1 = bb21 ] + | bb21 = s0 + [ s0 = [ &_29 <- res._p0 = ([%#schecked_ops'18] (251: UInt8.t)) ] s1 + | s1 = any [ br0 -> {_29 = false} (! bb26) | br1 -> {_29} (! bb22) ] ] + | bb22 = s0 [ s0 = [ &_31 <- res._p1 ] s1 | s1 = any [ br0 -> {_31 = false} (! bb26) | br1 -> {_31} (! bb23) ] ] + | bb23 = s0 + [ s0 = overflowing_sub {[%#schecked_ops'20] (250: UInt8.t)} {[%#schecked_ops'21] (10: UInt8.t)} + (fun (_ret: tuple) -> [ &res'0 <- _ret ] s1) | s1 = bb27 ] | bb27 = s0 - [ s0 = [ &_30 <- res._p0 = ([%#schecked_ops'18] (251: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_30 = false} (! bb29) | br1 -> {_30} (! bb28) ] ] - | bb28 = s0 [ s0 = [ &_29 <- res._p1 ] s1 | s1 = bb30 ] - | bb29 = s0 [ s0 = [ &_29 <- [%#schecked_ops'20] false ] s1 | s1 = bb30 ] - | bb30 = any [ br0 -> {_29 = false} (! bb31) | br1 -> {_29} (! bb33) ] - | bb33 = s0 - [ s0 = overflowing_sub {[%#schecked_ops'21] (250: UInt8.t)} {[%#schecked_ops'22] (10: UInt8.t)} - (fun (_ret: tuple) -> [ &res'0 <- _ret ] s1) - | s1 = bb34 ] - | bb34 = s0 - [ s0 = [ &_37 <- res'0._p0 = ([%#schecked_ops'23] (240: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_37 = false} (! bb36) | br1 -> {_37} (! bb35) ] ] - | bb35 = s0 [ s0 = [ &_36 <- res'0._p1 = ([%#schecked_ops'24] false) ] s1 | s1 = bb37 ] - | bb36 = s0 [ s0 = [ &_36 <- [%#schecked_ops'25] false ] s1 | s1 = bb37 ] - | bb37 = any [ br0 -> {_36 = false} (! bb38) | br1 -> {_36} (! bb40) ] - | bb40 = return''0 {_0} - | bb38 = {[%#schecked_ops'26] false} any - | bb31 = {[%#schecked_ops'27] false} any - | bb24 = {[%#schecked_ops'28] false} any - | bb20 = {[%#schecked_ops'29] false} any - | bb16 = {[%#schecked_ops'30] false} any - | bb12 = {[%#schecked_ops'31] false} any - | bb8 = {[%#schecked_ops'32] false} any - | bb3 = {[%#schecked_ops'33] false} any ] + [ s0 = [ &_36 <- res'0._p0 = ([%#schecked_ops'22] (240: UInt8.t)) ] s1 + | s1 = any [ br0 -> {_36 = false} (! bb32) | br1 -> {_36} (! bb28) ] ] + | bb28 = s0 + [ s0 = [ &_38 <- res'0._p1 = ([%#schecked_ops'23] false) ] s1 + | s1 = any [ br0 -> {_38 = false} (! bb32) | br1 -> {_38} (! bb29) ] ] + | bb29 = return''0 {_0} + | bb32 = {[%#schecked_ops'24] false} any + | bb26 = {[%#schecked_ops'25] false} any + | bb20 = {[%#schecked_ops'26] false} any + | bb17 = {[%#schecked_ops'27] false} any + | bb14 = {[%#schecked_ops'28] false} any + | bb11 = {[%#schecked_ops'29] false} any + | bb8 = {[%#schecked_ops'30] false} any + | bb4 = {[%#schecked_ops'31] false} any ] [ & _0: () = Any.any_l () | & _2: bool = Any.any_l () | & _4: t_Option = Any.any_l () @@ -605,10 +594,10 @@ module M_checked_ops__test_u8_sub_example [#"checked_ops.rs" 45 0 45 28] | & _25: UInt8.t = Any.any_l () | & res: tuple = Any.any_l () | & _29: bool = Any.any_l () - | & _30: bool = Any.any_l () + | & _31: bool = Any.any_l () | & res'0: tuple = Any.any_l () | & _36: bool = Any.any_l () - | & _37: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] + | & _38: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end module M_checked_ops__test_u8_sub_overflow [#"checked_ops.rs" 63 0 63 34] let%span schecked_ops = "checked_ops.rs" 64 12 64 15 @@ -621,12 +610,11 @@ module M_checked_ops__test_u8_sub_overflow [#"checked_ops.rs" 63 0 63 34] let%span schecked_ops'6 = "checked_ops.rs" 68 21 68 24 let%span schecked_ops'7 = "checked_ops.rs" 68 31 68 32 let%span schecked_ops'8 = "checked_ops.rs" 68 45 68 49 - let%span schecked_ops'9 = "checked_ops.rs" 68 12 68 49 - let%span schecked_ops'10 = "checked_ops.rs" 68 12 68 49 - let%span schecked_ops'11 = "checked_ops.rs" 66 12 66 38 - let%span schecked_ops'12 = "checked_ops.rs" 65 12 65 46 - let%span schecked_ops'13 = "checked_ops.rs" 64 12 64 40 - let%span schecked_ops'14 = "checked_ops.rs" 62 11 62 18 + let%span schecked_ops'9 = "checked_ops.rs" 68 4 68 50 + let%span schecked_ops'10 = "checked_ops.rs" 66 4 66 39 + let%span schecked_ops'11 = "checked_ops.rs" 65 4 65 47 + let%span schecked_ops'12 = "checked_ops.rs" 64 4 64 41 + let%span schecked_ops'13 = "checked_ops.rs" 62 11 62 18 let%span snum = "../../creusot-contracts/src/std/num.rs" 223 20 224 89 let%span snum'0 = "../../creusot-contracts/src/std/num.rs" 227 26 227 87 let%span snum'1 = "../../creusot-contracts/src/std/num.rs" 233 26 233 48 @@ -689,42 +677,40 @@ module M_checked_ops__test_u8_sub_overflow [#"checked_ops.rs" 63 0 63 34] meta "select_lsinst" "all" let rec test_u8_sub_overflow [#"checked_ops.rs" 63 0 63 34] (a: UInt8.t) (return' (x: ())) = - {[@expl:test_u8_sub_overflow requires] [%#schecked_ops'14] UInt8.t'int a <> 0} + {[@expl:test_u8_sub_overflow requires] [%#schecked_ops'13] UInt8.t'int a <> 0} (! bb0 [ bb0 = s0 [ s0 = checked_sub {[%#schecked_ops] (0: UInt8.t)} {a'0} (fun (_ret: t_Option) -> [ &_6 <- _ret ] s1) | s1 = bb1 ] | bb1 = s0 [ s0 = is_none {_6} (fun (_ret: bool) -> [ &_4 <- _ret ] s1) | s1 = bb2 ] - | bb2 = any [ br0 -> {_4 = false} (! bb3) | br1 -> {_4} (! bb5) ] - | bb5 = s0 + | bb2 = any [ br0 -> {_4 = false} (! bb4) | br1 -> {_4} (! bb3) ] + | bb3 = s0 [ s0 = wrapping_sub {[%#schecked_ops'0] (0: UInt8.t)} {a'0} (fun (_ret: UInt8.t) -> [ &_11 <- _ret ] s1) - | s1 = bb6 ] - | bb6 = s0 + | s1 = bb5 ] + | bb5 = s0 [ s0 = UInt8.sub {[%#schecked_ops'1] (255: UInt8.t)} {a'0} (fun (_ret: UInt8.t) -> [ &_14 <- _ret ] s1) | s1 = UInt8.add {_14} {[%#schecked_ops'2] (1: UInt8.t)} (fun (_ret: UInt8.t) -> [ &_13 <- _ret ] s2) | s2 = [ &_10 <- _11 = _13 ] s3 - | s3 = any [ br0 -> {_10 = false} (! bb7) | br1 -> {_10} (! bb9) ] ] - | bb9 = s0 + | s3 = any [ br0 -> {_10 = false} (! bb7) | br1 -> {_10} (! bb6) ] ] + | bb6 = s0 [ s0 = saturating_sub {[%#schecked_ops'3] (0: UInt8.t)} {a'0} (fun (_ret: UInt8.t) -> [ &_19 <- _ret ] s1) - | s1 = bb10 ] - | bb10 = s0 + | s1 = bb8 ] + | bb8 = s0 [ s0 = [ &_18 <- _19 = ([%#schecked_ops'4] (0: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_18 = false} (! bb11) | br1 -> {_18} (! bb13) ] ] - | bb13 = s0 + | s1 = any [ br0 -> {_18 = false} (! bb10) | br1 -> {_18} (! bb9) ] ] + | bb9 = s0 [ s0 = overflowing_sub {[%#schecked_ops'5] (0: UInt8.t)} {a'0} (fun (_ret: tuple) -> [ &res <- _ret ] s1) - | s1 = bb14 ] - | bb14 = s0 - [ s0 = UInt8.sub {[%#schecked_ops'6] (255: UInt8.t)} {a'0} (fun (_ret: UInt8.t) -> [ &_29 <- _ret ] s1) - | s1 = UInt8.add {_29} {[%#schecked_ops'7] (1: UInt8.t)} (fun (_ret: UInt8.t) -> [ &_28 <- _ret ] s2) - | s2 = [ &_26 <- res._p0 = _28 ] s3 - | s3 = any [ br0 -> {_26 = false} (! bb16) | br1 -> {_26} (! bb15) ] ] - | bb15 = s0 [ s0 = [ &_25 <- res._p1 ] s1 | s1 = bb17 ] - | bb16 = s0 [ s0 = [ &_25 <- [%#schecked_ops'9] false ] s1 | s1 = bb17 ] - | bb17 = any [ br0 -> {_25 = false} (! bb18) | br1 -> {_25} (! bb20) ] - | bb20 = return''0 {_0} - | bb18 = {[%#schecked_ops'10] false} any - | bb11 = {[%#schecked_ops'11] false} any - | bb7 = {[%#schecked_ops'12] false} any - | bb3 = {[%#schecked_ops'13] false} any ] + | s1 = bb11 ] + | bb11 = s0 + [ s0 = UInt8.sub {[%#schecked_ops'6] (255: UInt8.t)} {a'0} (fun (_ret: UInt8.t) -> [ &_28 <- _ret ] s1) + | s1 = UInt8.add {_28} {[%#schecked_ops'7] (1: UInt8.t)} (fun (_ret: UInt8.t) -> [ &_27 <- _ret ] s2) + | s2 = [ &_25 <- res._p0 = _27 ] s3 + | s3 = any [ br0 -> {_25 = false} (! bb16) | br1 -> {_25} (! bb12) ] ] + | bb12 = s0 [ s0 = [ &_30 <- res._p1 ] s1 | s1 = any [ br0 -> {_30 = false} (! bb16) | br1 -> {_30} (! bb13) ] ] + | bb13 = return''0 {_0} + | bb16 = {[%#schecked_ops'9] false} any + | bb10 = {[%#schecked_ops'10] false} any + | bb7 = {[%#schecked_ops'11] false} any + | bb4 = {[%#schecked_ops'12] false} any ] [ & _0: () = Any.any_l () | & a'0: UInt8.t = a | & _4: bool = Any.any_l () @@ -737,9 +723,9 @@ module M_checked_ops__test_u8_sub_overflow [#"checked_ops.rs" 63 0 63 34] | & _19: UInt8.t = Any.any_l () | & res: tuple = Any.any_l () | & _25: bool = Any.any_l () - | & _26: bool = Any.any_l () + | & _27: UInt8.t = Any.any_l () | & _28: UInt8.t = Any.any_l () - | & _29: UInt8.t = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] + | & _30: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end module M_checked_ops__test_u8_wrapping_sub [#"checked_ops.rs" 74 0 74 47] let%span schecked_ops = "checked_ops.rs" 73 10 73 56 @@ -765,8 +751,8 @@ module M_checked_ops__test_u8_wrapping_sub [#"checked_ops.rs" 74 0 74 47] (! return' {result}) ] end module M_checked_ops__test_u8_overflowing_sub [#"checked_ops.rs" 79 0 79 44] - let%span schecked_ops = "checked_ops.rs" 81 12 81 64 - let%span schecked_ops'0 = "checked_ops.rs" 80 12 80 55 + let%span schecked_ops = "checked_ops.rs" 81 4 81 65 + let%span schecked_ops'0 = "checked_ops.rs" 80 4 80 56 let%span snum = "../../creusot-contracts/src/std/num.rs" 256 20 257 53 let%span snum'0 = "../../creusot-contracts/src/std/num.rs" 263 20 263 102 let%span snum'1 = "../../creusot-contracts/src/std/num.rs" 267 20 267 98 @@ -818,14 +804,14 @@ module M_checked_ops__test_u8_overflowing_sub [#"checked_ops.rs" 79 0 79 44] let rec test_u8_overflowing_sub [#"checked_ops.rs" 79 0 79 44] (a: UInt8.t) (b: UInt8.t) (return' (x: ())) = (! bb0 [ bb0 = s0 [ s0 = overflowing_sub {a'0} {b'0} (fun (_ret: tuple) -> [ &_6 <- _ret ] s1) | s1 = bb1 ] | bb1 = s0 [ s0 = wrapping_sub {a'0} {b'0} (fun (_ret: UInt8.t) -> [ &_9 <- _ret ] s1) | s1 = bb2 ] - | bb2 = s0 [ s0 = [ &_4 <- _6._p0 = _9 ] s1 | s1 = any [ br0 -> {_4 = false} (! bb3) | br1 -> {_4} (! bb5) ] ] - | bb5 = s0 [ s0 = overflowing_sub {a'0} {b'0} (fun (_ret: tuple) -> [ &_16 <- _ret ] s1) | s1 = bb6 ] - | bb6 = s0 [ s0 = checked_sub {a'0} {b'0} (fun (_ret: t_Option) -> [ &_21 <- _ret ] s1) | s1 = bb7 ] - | bb7 = s0 [ s0 = is_none {_21} (fun (_ret: bool) -> [ &_19 <- _ret ] s1) | s1 = bb8 ] - | bb8 = s0 [ s0 = [ &_14 <- _16._p1 = _19 ] s1 | s1 = any [ br0 -> {_14 = false} (! bb9) | br1 -> {_14} (! bb11) ] ] - | bb11 = return''0 {_0} + | bb2 = s0 [ s0 = [ &_4 <- _6._p0 = _9 ] s1 | s1 = any [ br0 -> {_4 = false} (! bb4) | br1 -> {_4} (! bb3) ] ] + | bb3 = s0 [ s0 = overflowing_sub {a'0} {b'0} (fun (_ret: tuple) -> [ &_16 <- _ret ] s1) | s1 = bb5 ] + | bb5 = s0 [ s0 = checked_sub {a'0} {b'0} (fun (_ret: t_Option) -> [ &_21 <- _ret ] s1) | s1 = bb6 ] + | bb6 = s0 [ s0 = is_none {_21} (fun (_ret: bool) -> [ &_19 <- _ret ] s1) | s1 = bb7 ] + | bb7 = s0 [ s0 = [ &_14 <- _16._p1 = _19 ] s1 | s1 = any [ br0 -> {_14 = false} (! bb9) | br1 -> {_14} (! bb8) ] ] + | bb8 = return''0 {_0} | bb9 = {[%#schecked_ops] false} any - | bb3 = {[%#schecked_ops'0] false} any ] + | bb4 = {[%#schecked_ops'0] false} any ] [ & _0: () = Any.any_l () | & a'0: UInt8.t = a | & b'0: UInt8.t = b @@ -859,20 +845,18 @@ module M_checked_ops__test_u8_mul_example [#"checked_ops.rs" 85 0 85 28] let%span schecked_ops'17 = "checked_ops.rs" 95 34 95 36 let%span schecked_ops'18 = "checked_ops.rs" 96 21 96 23 let%span schecked_ops'19 = "checked_ops.rs" 96 36 96 41 - let%span schecked_ops'20 = "checked_ops.rs" 96 12 96 41 - let%span schecked_ops'21 = "checked_ops.rs" 97 14 97 18 - let%span schecked_ops'22 = "checked_ops.rs" 97 35 97 37 - let%span schecked_ops'23 = "checked_ops.rs" 98 21 98 24 - let%span schecked_ops'24 = "checked_ops.rs" 98 37 98 41 - let%span schecked_ops'25 = "checked_ops.rs" 98 12 98 41 - let%span schecked_ops'26 = "checked_ops.rs" 98 12 98 41 - let%span schecked_ops'27 = "checked_ops.rs" 96 12 96 41 - let%span schecked_ops'28 = "checked_ops.rs" 93 12 93 42 - let%span schecked_ops'29 = "checked_ops.rs" 92 12 92 40 - let%span schecked_ops'30 = "checked_ops.rs" 90 12 90 40 - let%span schecked_ops'31 = "checked_ops.rs" 89 12 89 38 - let%span schecked_ops'32 = "checked_ops.rs" 87 12 87 42 - let%span schecked_ops'33 = "checked_ops.rs" 86 12 86 46 + let%span schecked_ops'20 = "checked_ops.rs" 97 14 97 18 + let%span schecked_ops'21 = "checked_ops.rs" 97 35 97 37 + let%span schecked_ops'22 = "checked_ops.rs" 98 21 98 24 + let%span schecked_ops'23 = "checked_ops.rs" 98 37 98 41 + let%span schecked_ops'24 = "checked_ops.rs" 98 4 98 42 + let%span schecked_ops'25 = "checked_ops.rs" 96 4 96 42 + let%span schecked_ops'26 = "checked_ops.rs" 93 4 93 43 + let%span schecked_ops'27 = "checked_ops.rs" 92 4 92 41 + let%span schecked_ops'28 = "checked_ops.rs" 90 4 90 41 + let%span schecked_ops'29 = "checked_ops.rs" 89 4 89 39 + let%span schecked_ops'30 = "checked_ops.rs" 87 4 87 43 + let%span schecked_ops'31 = "checked_ops.rs" 86 4 86 47 let%span snum = "../../creusot-contracts/src/std/num.rs" 223 20 224 89 let%span snum'0 = "../../creusot-contracts/src/std/num.rs" 227 26 227 87 let%span snum'1 = "../../creusot-contracts/src/std/num.rs" 233 26 233 48 @@ -947,70 +931,68 @@ module M_checked_ops__test_u8_mul_example [#"checked_ops.rs" 85 0 85 28] | bb1 = s0 [ s0 = unwrap {_4} (fun (_ret: UInt8.t) -> [ &_3 <- _ret ] s1) | s1 = bb2 ] | bb2 = s0 [ s0 = [ &_2 <- _3 = ([%#schecked_ops'1] (50: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_2 = false} (! bb3) | br1 -> {_2} (! bb5) ] ] - | bb5 = s0 + | s1 = any [ br0 -> {_2 = false} (! bb4) | br1 -> {_2} (! bb3) ] ] + | bb3 = s0 [ s0 = checked_mul {[%#schecked_ops'2] (50: UInt8.t)} {[%#schecked_ops'3] (10: UInt8.t)} (fun (_ret: t_Option) -> [ &_9 <- _ret ] s1) - | s1 = bb6 ] - | bb6 = s0 [ s0 = is_none {_9} (fun (_ret: bool) -> [ &_7 <- _ret ] s1) | s1 = bb7 ] - | bb7 = any [ br0 -> {_7 = false} (! bb8) | br1 -> {_7} (! bb10) ] - | bb10 = s0 + | s1 = bb5 ] + | bb5 = s0 [ s0 = is_none {_9} (fun (_ret: bool) -> [ &_7 <- _ret ] s1) | s1 = bb6 ] + | bb6 = any [ br0 -> {_7 = false} (! bb8) | br1 -> {_7} (! bb7) ] + | bb7 = s0 [ s0 = wrapping_mul {[%#schecked_ops'4] (5: UInt8.t)} {[%#schecked_ops'5] (10: UInt8.t)} (fun (_ret: UInt8.t) -> [ &_13 <- _ret ] s1) - | s1 = bb11 ] - | bb11 = s0 + | s1 = bb9 ] + | bb9 = s0 [ s0 = [ &_12 <- _13 = ([%#schecked_ops'6] (50: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_12 = false} (! bb12) | br1 -> {_12} (! bb14) ] ] - | bb14 = s0 + | s1 = any [ br0 -> {_12 = false} (! bb11) | br1 -> {_12} (! bb10) ] ] + | bb10 = s0 [ s0 = wrapping_mul {[%#schecked_ops'7] (50: UInt8.t)} {[%#schecked_ops'8] (10: UInt8.t)} (fun (_ret: UInt8.t) -> [ &_17 <- _ret ] s1) - | s1 = bb15 ] - | bb15 = s0 + | s1 = bb12 ] + | bb12 = s0 [ s0 = [ &_16 <- _17 = ([%#schecked_ops'9] (244: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_16 = false} (! bb16) | br1 -> {_16} (! bb18) ] ] - | bb18 = s0 + | s1 = any [ br0 -> {_16 = false} (! bb14) | br1 -> {_16} (! bb13) ] ] + | bb13 = s0 [ s0 = saturating_mul {[%#schecked_ops'10] (5: UInt8.t)} {[%#schecked_ops'11] (10: UInt8.t)} (fun (_ret: UInt8.t) -> [ &_21 <- _ret ] s1) - | s1 = bb19 ] - | bb19 = s0 + | s1 = bb15 ] + | bb15 = s0 [ s0 = [ &_20 <- _21 = ([%#schecked_ops'12] (50: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_20 = false} (! bb20) | br1 -> {_20} (! bb22) ] ] - | bb22 = s0 + | s1 = any [ br0 -> {_20 = false} (! bb17) | br1 -> {_20} (! bb16) ] ] + | bb16 = s0 [ s0 = saturating_mul {[%#schecked_ops'13] (50: UInt8.t)} {[%#schecked_ops'14] (10: UInt8.t)} (fun (_ret: UInt8.t) -> [ &_25 <- _ret ] s1) - | s1 = bb23 ] - | bb23 = s0 + | s1 = bb18 ] + | bb18 = s0 [ s0 = [ &_24 <- _25 = ([%#schecked_ops'15] (255: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_24 = false} (! bb24) | br1 -> {_24} (! bb26) ] ] - | bb26 = s0 + | s1 = any [ br0 -> {_24 = false} (! bb20) | br1 -> {_24} (! bb19) ] ] + | bb19 = s0 [ s0 = overflowing_mul {[%#schecked_ops'16] (5: UInt8.t)} {[%#schecked_ops'17] (10: UInt8.t)} (fun (_ret: tuple) -> [ &res <- _ret ] s1) + | s1 = bb21 ] + | bb21 = s0 + [ s0 = [ &_29 <- res._p0 = ([%#schecked_ops'18] (50: UInt8.t)) ] s1 + | s1 = any [ br0 -> {_29 = false} (! bb26) | br1 -> {_29} (! bb22) ] ] + | bb22 = s0 + [ s0 = [ &_31 <- res._p1 = ([%#schecked_ops'19] false) ] s1 + | s1 = any [ br0 -> {_31 = false} (! bb26) | br1 -> {_31} (! bb23) ] ] + | bb23 = s0 + [ s0 = overflowing_mul {[%#schecked_ops'20] (50: UInt8.t)} {[%#schecked_ops'21] (10: UInt8.t)} + (fun (_ret: tuple) -> [ &res'0 <- _ret ] s1) | s1 = bb27 ] | bb27 = s0 - [ s0 = [ &_30 <- res._p0 = ([%#schecked_ops'18] (50: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_30 = false} (! bb29) | br1 -> {_30} (! bb28) ] ] - | bb28 = s0 [ s0 = [ &_29 <- res._p1 = ([%#schecked_ops'19] false) ] s1 | s1 = bb30 ] - | bb29 = s0 [ s0 = [ &_29 <- [%#schecked_ops'20] false ] s1 | s1 = bb30 ] - | bb30 = any [ br0 -> {_29 = false} (! bb31) | br1 -> {_29} (! bb33) ] - | bb33 = s0 - [ s0 = overflowing_mul {[%#schecked_ops'21] (50: UInt8.t)} {[%#schecked_ops'22] (10: UInt8.t)} - (fun (_ret: tuple) -> [ &res'0 <- _ret ] s1) - | s1 = bb34 ] - | bb34 = s0 - [ s0 = [ &_37 <- res'0._p0 = ([%#schecked_ops'23] (244: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_37 = false} (! bb36) | br1 -> {_37} (! bb35) ] ] - | bb35 = s0 [ s0 = [ &_36 <- res'0._p1 ] s1 | s1 = bb37 ] - | bb36 = s0 [ s0 = [ &_36 <- [%#schecked_ops'25] false ] s1 | s1 = bb37 ] - | bb37 = any [ br0 -> {_36 = false} (! bb38) | br1 -> {_36} (! bb40) ] - | bb40 = return''0 {_0} - | bb38 = {[%#schecked_ops'26] false} any - | bb31 = {[%#schecked_ops'27] false} any - | bb24 = {[%#schecked_ops'28] false} any - | bb20 = {[%#schecked_ops'29] false} any - | bb16 = {[%#schecked_ops'30] false} any - | bb12 = {[%#schecked_ops'31] false} any - | bb8 = {[%#schecked_ops'32] false} any - | bb3 = {[%#schecked_ops'33] false} any ] + [ s0 = [ &_36 <- res'0._p0 = ([%#schecked_ops'22] (244: UInt8.t)) ] s1 + | s1 = any [ br0 -> {_36 = false} (! bb32) | br1 -> {_36} (! bb28) ] ] + | bb28 = s0 [ s0 = [ &_38 <- res'0._p1 ] s1 | s1 = any [ br0 -> {_38 = false} (! bb32) | br1 -> {_38} (! bb29) ] ] + | bb29 = return''0 {_0} + | bb32 = {[%#schecked_ops'24] false} any + | bb26 = {[%#schecked_ops'25] false} any + | bb20 = {[%#schecked_ops'26] false} any + | bb17 = {[%#schecked_ops'27] false} any + | bb14 = {[%#schecked_ops'28] false} any + | bb11 = {[%#schecked_ops'29] false} any + | bb8 = {[%#schecked_ops'30] false} any + | bb4 = {[%#schecked_ops'31] false} any ] [ & _0: () = Any.any_l () | & _2: bool = Any.any_l () | & _3: UInt8.t = Any.any_l () @@ -1027,10 +1009,10 @@ module M_checked_ops__test_u8_mul_example [#"checked_ops.rs" 85 0 85 28] | & _25: UInt8.t = Any.any_l () | & res: tuple = Any.any_l () | & _29: bool = Any.any_l () - | & _30: bool = Any.any_l () + | & _31: bool = Any.any_l () | & res'0: tuple = Any.any_l () | & _36: bool = Any.any_l () - | & _37: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] + | & _38: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end module M_checked_ops__test_u8_mul_zero [#"checked_ops.rs" 102 0 102 30] let%span schecked_ops = "checked_ops.rs" 103 12 103 15 @@ -1042,11 +1024,10 @@ module M_checked_ops__test_u8_mul_zero [#"checked_ops.rs" 102 0 102 30] let%span schecked_ops'5 = "checked_ops.rs" 106 14 106 17 let%span schecked_ops'6 = "checked_ops.rs" 107 21 107 22 let%span schecked_ops'7 = "checked_ops.rs" 107 35 107 40 - let%span schecked_ops'8 = "checked_ops.rs" 107 12 107 40 - let%span schecked_ops'9 = "checked_ops.rs" 107 12 107 40 - let%span schecked_ops'10 = "checked_ops.rs" 105 12 105 38 - let%span schecked_ops'11 = "checked_ops.rs" 104 12 104 36 - let%span schecked_ops'12 = "checked_ops.rs" 103 12 103 44 + let%span schecked_ops'8 = "checked_ops.rs" 107 4 107 41 + let%span schecked_ops'9 = "checked_ops.rs" 105 4 105 39 + let%span schecked_ops'10 = "checked_ops.rs" 104 4 104 37 + let%span schecked_ops'11 = "checked_ops.rs" 103 4 103 45 let%span snum = "../../creusot-contracts/src/std/num.rs" 223 20 224 89 let%span snum'0 = "../../creusot-contracts/src/std/num.rs" 227 26 227 87 let%span snum'1 = "../../creusot-contracts/src/std/num.rs" 233 26 233 48 @@ -1115,33 +1096,33 @@ module M_checked_ops__test_u8_mul_zero [#"checked_ops.rs" 102 0 102 30] | bb1 = s0 [ s0 = unwrap {_5} (fun (_ret: UInt8.t) -> [ &_4 <- _ret ] s1) | s1 = bb2 ] | bb2 = s0 [ s0 = [ &_3 <- _4 = ([%#schecked_ops'0] (0: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_3 = false} (! bb3) | br1 -> {_3} (! bb5) ] ] - | bb5 = s0 + | s1 = any [ br0 -> {_3 = false} (! bb4) | br1 -> {_3} (! bb3) ] ] + | bb3 = s0 [ s0 = wrapping_mul {[%#schecked_ops'1] (0: UInt8.t)} {a'0} (fun (_ret: UInt8.t) -> [ &_10 <- _ret ] s1) - | s1 = bb6 ] - | bb6 = s0 + | s1 = bb5 ] + | bb5 = s0 [ s0 = [ &_9 <- _10 = ([%#schecked_ops'2] (0: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_9 = false} (! bb7) | br1 -> {_9} (! bb9) ] ] - | bb9 = s0 + | s1 = any [ br0 -> {_9 = false} (! bb7) | br1 -> {_9} (! bb6) ] ] + | bb6 = s0 [ s0 = saturating_mul {[%#schecked_ops'3] (0: UInt8.t)} {a'0} (fun (_ret: UInt8.t) -> [ &_15 <- _ret ] s1) - | s1 = bb10 ] - | bb10 = s0 + | s1 = bb8 ] + | bb8 = s0 [ s0 = [ &_14 <- _15 = ([%#schecked_ops'4] (0: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_14 = false} (! bb11) | br1 -> {_14} (! bb13) ] ] - | bb13 = s0 + | s1 = any [ br0 -> {_14 = false} (! bb10) | br1 -> {_14} (! bb9) ] ] + | bb9 = s0 [ s0 = overflowing_mul {[%#schecked_ops'5] (0: UInt8.t)} {a'0} (fun (_ret: tuple) -> [ &res <- _ret ] s1) - | s1 = bb14 ] - | bb14 = s0 - [ s0 = [ &_22 <- res._p0 = ([%#schecked_ops'6] (0: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_22 = false} (! bb16) | br1 -> {_22} (! bb15) ] ] - | bb15 = s0 [ s0 = [ &_21 <- res._p1 = ([%#schecked_ops'7] false) ] s1 | s1 = bb17 ] - | bb16 = s0 [ s0 = [ &_21 <- [%#schecked_ops'8] false ] s1 | s1 = bb17 ] - | bb17 = any [ br0 -> {_21 = false} (! bb18) | br1 -> {_21} (! bb20) ] - | bb20 = return''0 {_0} - | bb18 = {[%#schecked_ops'9] false} any - | bb11 = {[%#schecked_ops'10] false} any - | bb7 = {[%#schecked_ops'11] false} any - | bb3 = {[%#schecked_ops'12] false} any ] + | s1 = bb11 ] + | bb11 = s0 + [ s0 = [ &_21 <- res._p0 = ([%#schecked_ops'6] (0: UInt8.t)) ] s1 + | s1 = any [ br0 -> {_21 = false} (! bb16) | br1 -> {_21} (! bb12) ] ] + | bb12 = s0 + [ s0 = [ &_23 <- res._p1 = ([%#schecked_ops'7] false) ] s1 + | s1 = any [ br0 -> {_23 = false} (! bb16) | br1 -> {_23} (! bb13) ] ] + | bb13 = return''0 {_0} + | bb16 = {[%#schecked_ops'8] false} any + | bb10 = {[%#schecked_ops'9] false} any + | bb7 = {[%#schecked_ops'10] false} any + | bb4 = {[%#schecked_ops'11] false} any ] [ & _0: () = Any.any_l () | & a'0: UInt8.t = a | & _3: bool = Any.any_l () @@ -1153,11 +1134,11 @@ module M_checked_ops__test_u8_mul_zero [#"checked_ops.rs" 102 0 102 30] | & _15: UInt8.t = Any.any_l () | & res: tuple = Any.any_l () | & _21: bool = Any.any_l () - | & _22: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] + | & _23: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end module M_checked_ops__test_u8_overflowing_mul [#"checked_ops.rs" 111 0 111 44] - let%span schecked_ops = "checked_ops.rs" 113 12 113 64 - let%span schecked_ops'0 = "checked_ops.rs" 112 12 112 55 + let%span schecked_ops = "checked_ops.rs" 113 4 113 65 + let%span schecked_ops'0 = "checked_ops.rs" 112 4 112 56 let%span snum = "../../creusot-contracts/src/std/num.rs" 256 20 257 53 let%span snum'0 = "../../creusot-contracts/src/std/num.rs" 263 20 263 102 let%span snum'1 = "../../creusot-contracts/src/std/num.rs" 267 20 267 98 @@ -1209,14 +1190,14 @@ module M_checked_ops__test_u8_overflowing_mul [#"checked_ops.rs" 111 0 111 44] let rec test_u8_overflowing_mul [#"checked_ops.rs" 111 0 111 44] (a: UInt8.t) (b: UInt8.t) (return' (x: ())) = (! bb0 [ bb0 = s0 [ s0 = overflowing_mul {a'0} {b'0} (fun (_ret: tuple) -> [ &_6 <- _ret ] s1) | s1 = bb1 ] | bb1 = s0 [ s0 = wrapping_mul {a'0} {b'0} (fun (_ret: UInt8.t) -> [ &_9 <- _ret ] s1) | s1 = bb2 ] - | bb2 = s0 [ s0 = [ &_4 <- _6._p0 = _9 ] s1 | s1 = any [ br0 -> {_4 = false} (! bb3) | br1 -> {_4} (! bb5) ] ] - | bb5 = s0 [ s0 = overflowing_mul {a'0} {b'0} (fun (_ret: tuple) -> [ &_16 <- _ret ] s1) | s1 = bb6 ] - | bb6 = s0 [ s0 = checked_mul {a'0} {b'0} (fun (_ret: t_Option) -> [ &_21 <- _ret ] s1) | s1 = bb7 ] - | bb7 = s0 [ s0 = is_none {_21} (fun (_ret: bool) -> [ &_19 <- _ret ] s1) | s1 = bb8 ] - | bb8 = s0 [ s0 = [ &_14 <- _16._p1 = _19 ] s1 | s1 = any [ br0 -> {_14 = false} (! bb9) | br1 -> {_14} (! bb11) ] ] - | bb11 = return''0 {_0} + | bb2 = s0 [ s0 = [ &_4 <- _6._p0 = _9 ] s1 | s1 = any [ br0 -> {_4 = false} (! bb4) | br1 -> {_4} (! bb3) ] ] + | bb3 = s0 [ s0 = overflowing_mul {a'0} {b'0} (fun (_ret: tuple) -> [ &_16 <- _ret ] s1) | s1 = bb5 ] + | bb5 = s0 [ s0 = checked_mul {a'0} {b'0} (fun (_ret: t_Option) -> [ &_21 <- _ret ] s1) | s1 = bb6 ] + | bb6 = s0 [ s0 = is_none {_21} (fun (_ret: bool) -> [ &_19 <- _ret ] s1) | s1 = bb7 ] + | bb7 = s0 [ s0 = [ &_14 <- _16._p1 = _19 ] s1 | s1 = any [ br0 -> {_14 = false} (! bb9) | br1 -> {_14} (! bb8) ] ] + | bb8 = return''0 {_0} | bb9 = {[%#schecked_ops] false} any - | bb3 = {[%#schecked_ops'0] false} any ] + | bb4 = {[%#schecked_ops'0] false} any ] [ & _0: () = Any.any_l () | & a'0: UInt8.t = a | & b'0: UInt8.t = b @@ -1244,12 +1225,11 @@ module M_checked_ops__test_u8_div_example [#"checked_ops.rs" 117 0 117 28] let%span schecked_ops'11 = "checked_ops.rs" 122 34 122 35 let%span schecked_ops'12 = "checked_ops.rs" 123 21 123 22 let%span schecked_ops'13 = "checked_ops.rs" 123 35 123 40 - let%span schecked_ops'14 = "checked_ops.rs" 123 12 123 40 - let%span schecked_ops'15 = "checked_ops.rs" 123 12 123 40 - let%span schecked_ops'16 = "checked_ops.rs" 121 12 121 38 - let%span schecked_ops'17 = "checked_ops.rs" 120 12 120 36 - let%span schecked_ops'18 = "checked_ops.rs" 119 12 119 44 - let%span schecked_ops'19 = "checked_ops.rs" 118 12 118 40 + let%span schecked_ops'14 = "checked_ops.rs" 123 4 123 41 + let%span schecked_ops'15 = "checked_ops.rs" 121 4 121 39 + let%span schecked_ops'16 = "checked_ops.rs" 120 4 120 37 + let%span schecked_ops'17 = "checked_ops.rs" 119 4 119 45 + let%span schecked_ops'18 = "checked_ops.rs" 118 4 118 41 let%span snum = "../../creusot-contracts/src/std/num.rs" 146 26 146 97 let%span snum'0 = "../../creusot-contracts/src/std/num.rs" 148 26 148 83 let%span snum'1 = "../../creusot-contracts/src/std/num.rs" 154 27 154 36 @@ -1326,45 +1306,45 @@ module M_checked_ops__test_u8_div_example [#"checked_ops.rs" 117 0 117 28] (fun (_ret: t_Option) -> [ &_4 <- _ret ] s1) | s1 = bb1 ] | bb1 = s0 [ s0 = is_none {_4} (fun (_ret: bool) -> [ &_2 <- _ret ] s1) | s1 = bb2 ] - | bb2 = any [ br0 -> {_2 = false} (! bb3) | br1 -> {_2} (! bb5) ] - | bb5 = s0 + | bb2 = any [ br0 -> {_2 = false} (! bb4) | br1 -> {_2} (! bb3) ] + | bb3 = s0 [ s0 = checked_div {[%#schecked_ops'1] (5: UInt8.t)} {[%#schecked_ops'2] (2: UInt8.t)} (fun (_ret: t_Option) -> [ &_9 <- _ret ] s1) - | s1 = bb6 ] - | bb6 = s0 [ s0 = unwrap {_9} (fun (_ret: UInt8.t) -> [ &_8 <- _ret ] s1) | s1 = bb7 ] - | bb7 = s0 + | s1 = bb5 ] + | bb5 = s0 [ s0 = unwrap {_9} (fun (_ret: UInt8.t) -> [ &_8 <- _ret ] s1) | s1 = bb6 ] + | bb6 = s0 [ s0 = [ &_7 <- _8 = ([%#schecked_ops'3] (2: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_7 = false} (! bb8) | br1 -> {_7} (! bb10) ] ] - | bb10 = s0 + | s1 = any [ br0 -> {_7 = false} (! bb8) | br1 -> {_7} (! bb7) ] ] + | bb7 = s0 [ s0 = wrapping_div {[%#schecked_ops'4] (5: UInt8.t)} {[%#schecked_ops'5] (2: UInt8.t)} (fun (_ret: UInt8.t) -> [ &_13 <- _ret ] s1) - | s1 = bb11 ] - | bb11 = s0 + | s1 = bb9 ] + | bb9 = s0 [ s0 = [ &_12 <- _13 = ([%#schecked_ops'6] (2: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_12 = false} (! bb12) | br1 -> {_12} (! bb14) ] ] - | bb14 = s0 + | s1 = any [ br0 -> {_12 = false} (! bb11) | br1 -> {_12} (! bb10) ] ] + | bb10 = s0 [ s0 = saturating_div {[%#schecked_ops'7] (5: UInt8.t)} {[%#schecked_ops'8] (2: UInt8.t)} (fun (_ret: UInt8.t) -> [ &_17 <- _ret ] s1) - | s1 = bb15 ] - | bb15 = s0 + | s1 = bb12 ] + | bb12 = s0 [ s0 = [ &_16 <- _17 = ([%#schecked_ops'9] (2: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_16 = false} (! bb16) | br1 -> {_16} (! bb18) ] ] - | bb18 = s0 + | s1 = any [ br0 -> {_16 = false} (! bb14) | br1 -> {_16} (! bb13) ] ] + | bb13 = s0 [ s0 = overflowing_div {[%#schecked_ops'10] (5: UInt8.t)} {[%#schecked_ops'11] (2: UInt8.t)} (fun (_ret: tuple) -> [ &res <- _ret ] s1) - | s1 = bb19 ] - | bb19 = s0 - [ s0 = [ &_22 <- res._p0 = ([%#schecked_ops'12] (2: UInt8.t)) ] s1 - | s1 = any [ br0 -> {_22 = false} (! bb21) | br1 -> {_22} (! bb20) ] ] - | bb20 = s0 [ s0 = [ &_21 <- res._p1 = ([%#schecked_ops'13] false) ] s1 | s1 = bb22 ] - | bb21 = s0 [ s0 = [ &_21 <- [%#schecked_ops'14] false ] s1 | s1 = bb22 ] - | bb22 = any [ br0 -> {_21 = false} (! bb23) | br1 -> {_21} (! bb25) ] - | bb25 = return''0 {_0} - | bb23 = {[%#schecked_ops'15] false} any - | bb16 = {[%#schecked_ops'16] false} any - | bb12 = {[%#schecked_ops'17] false} any - | bb8 = {[%#schecked_ops'18] false} any - | bb3 = {[%#schecked_ops'19] false} any ] + | s1 = bb15 ] + | bb15 = s0 + [ s0 = [ &_21 <- res._p0 = ([%#schecked_ops'12] (2: UInt8.t)) ] s1 + | s1 = any [ br0 -> {_21 = false} (! bb20) | br1 -> {_21} (! bb16) ] ] + | bb16 = s0 + [ s0 = [ &_23 <- res._p1 = ([%#schecked_ops'13] false) ] s1 + | s1 = any [ br0 -> {_23 = false} (! bb20) | br1 -> {_23} (! bb17) ] ] + | bb17 = return''0 {_0} + | bb20 = {[%#schecked_ops'14] false} any + | bb14 = {[%#schecked_ops'15] false} any + | bb11 = {[%#schecked_ops'16] false} any + | bb8 = {[%#schecked_ops'17] false} any + | bb4 = {[%#schecked_ops'18] false} any ] [ & _0: () = Any.any_l () | & _2: bool = Any.any_l () | & _4: t_Option = Any.any_l () @@ -1377,7 +1357,7 @@ module M_checked_ops__test_u8_div_example [#"checked_ops.rs" 117 0 117 28] | & _17: UInt8.t = Any.any_l () | & res: tuple = Any.any_l () | & _21: bool = Any.any_l () - | & _22: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] + | & _23: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end module M_checked_ops__test_u8_div_no_overflow [#"checked_ops.rs" 128 0 128 44] let%span schecked_ops = "checked_ops.rs" 129 41 129 46 @@ -1385,12 +1365,11 @@ module M_checked_ops__test_u8_div_no_overflow [#"checked_ops.rs" 128 0 128 44] let%span schecked_ops'1 = "checked_ops.rs" 131 35 131 40 let%span schecked_ops'2 = "checked_ops.rs" 133 21 133 26 let%span schecked_ops'3 = "checked_ops.rs" 133 39 133 44 - let%span schecked_ops'4 = "checked_ops.rs" 133 12 133 44 - let%span schecked_ops'5 = "checked_ops.rs" 133 12 133 44 - let%span schecked_ops'6 = "checked_ops.rs" 131 12 131 40 - let%span schecked_ops'7 = "checked_ops.rs" 130 12 130 38 - let%span schecked_ops'8 = "checked_ops.rs" 129 12 129 46 - let%span schecked_ops'9 = "checked_ops.rs" 127 11 127 18 + let%span schecked_ops'4 = "checked_ops.rs" 133 4 133 45 + let%span schecked_ops'5 = "checked_ops.rs" 131 4 131 41 + let%span schecked_ops'6 = "checked_ops.rs" 130 4 130 39 + let%span schecked_ops'7 = "checked_ops.rs" 129 4 129 47 + let%span schecked_ops'8 = "checked_ops.rs" 127 11 127 18 let%span snum = "../../creusot-contracts/src/std/num.rs" 146 26 146 97 let%span snum'0 = "../../creusot-contracts/src/std/num.rs" 148 26 148 83 let%span snum'1 = "../../creusot-contracts/src/std/num.rs" 154 27 154 36 @@ -1458,7 +1437,7 @@ module M_checked_ops__test_u8_div_no_overflow [#"checked_ops.rs" 128 0 128 44] meta "select_lsinst" "all" let rec test_u8_div_no_overflow [#"checked_ops.rs" 128 0 128 44] (a: UInt8.t) (b: UInt8.t) (return' (x: ())) = - {[@expl:test_u8_div_no_overflow requires] [%#schecked_ops'9] UInt8.t'int b <> 0} + {[@expl:test_u8_div_no_overflow requires] [%#schecked_ops'8] UInt8.t'int b <> 0} (! bb0 [ bb0 = s0 [ s0 = checked_div {a'0} {b'0} (fun (_ret: t_Option) -> [ &_7 <- _ret ] s1) | s1 = bb1 ] | bb1 = s0 [ s0 = unwrap {_7} (fun (_ret: UInt8.t) -> [ &_6 <- _ret ] s1) | s1 = bb2 ] @@ -1470,45 +1449,45 @@ module M_checked_ops__test_u8_div_no_overflow [#"checked_ops.rs" 128 0 128 44] | bb3 = s0 [ s0 = UInt8.div {a'0} {_12} (fun (_ret: UInt8.t) -> [ &_10 <- _ret ] s1) | s1 = [ &_5 <- _6 = _10 ] s2 - | s2 = any [ br0 -> {_5 = false} (! bb4) | br1 -> {_5} (! bb6) ] ] - | bb6 = s0 [ s0 = wrapping_div {a'0} {b'0} (fun (_ret: UInt8.t) -> [ &_17 <- _ret ] s1) | s1 = bb7 ] - | bb7 = s0 + | s2 = any [ br0 -> {_5 = false} (! bb5) | br1 -> {_5} (! bb4) ] ] + | bb4 = s0 [ s0 = wrapping_div {a'0} {b'0} (fun (_ret: UInt8.t) -> [ &_17 <- _ret ] s1) | s1 = bb6 ] + | bb6 = s0 [ s0 = [ &_22 <- b'0 ] s1 | s1 = [ &_23 <- _22 = ([%#schecked_ops'0] (0: UInt8.t)) ] s2 | s2 = {[@expl:division by zero] [%#schecked_ops'0] not _23} s3 - | s3 = bb8 ] - | bb8 = s0 + | s3 = bb7 ] + | bb7 = s0 [ s0 = UInt8.div {a'0} {_22} (fun (_ret: UInt8.t) -> [ &_20 <- _ret ] s1) | s1 = [ &_16 <- _17 = _20 ] s2 - | s2 = any [ br0 -> {_16 = false} (! bb9) | br1 -> {_16} (! bb11) ] ] - | bb11 = s0 [ s0 = saturating_div {a'0} {b'0} (fun (_ret: UInt8.t) -> [ &_27 <- _ret ] s1) | s1 = bb12 ] - | bb12 = s0 + | s2 = any [ br0 -> {_16 = false} (! bb9) | br1 -> {_16} (! bb8) ] ] + | bb8 = s0 [ s0 = saturating_div {a'0} {b'0} (fun (_ret: UInt8.t) -> [ &_27 <- _ret ] s1) | s1 = bb10 ] + | bb10 = s0 [ s0 = [ &_32 <- b'0 ] s1 | s1 = [ &_33 <- _32 = ([%#schecked_ops'1] (0: UInt8.t)) ] s2 | s2 = {[@expl:division by zero] [%#schecked_ops'1] not _33} s3 - | s3 = bb13 ] - | bb13 = s0 + | s3 = bb11 ] + | bb11 = s0 [ s0 = UInt8.div {a'0} {_32} (fun (_ret: UInt8.t) -> [ &_30 <- _ret ] s1) | s1 = [ &_26 <- _27 = _30 ] s2 - | s2 = any [ br0 -> {_26 = false} (! bb14) | br1 -> {_26} (! bb16) ] ] - | bb16 = s0 [ s0 = overflowing_div {a'0} {b'0} (fun (_ret: tuple) -> [ &res <- _ret ] s1) | s1 = bb17 ] - | bb17 = s0 - [ s0 = [ &_44 <- b'0 ] s1 - | s1 = [ &_45 <- _44 = ([%#schecked_ops'2] (0: UInt8.t)) ] s2 - | s2 = {[@expl:division by zero] [%#schecked_ops'2] not _45} s3 - | s3 = bb18 ] - | bb18 = s0 - [ s0 = UInt8.div {a'0} {_44} (fun (_ret: UInt8.t) -> [ &_42 <- _ret ] s1) - | s1 = [ &_40 <- res._p0 = _42 ] s2 - | s2 = any [ br0 -> {_40 = false} (! bb20) | br1 -> {_40} (! bb19) ] ] - | bb19 = s0 [ s0 = [ &_39 <- res._p1 = ([%#schecked_ops'3] false) ] s1 | s1 = bb21 ] - | bb20 = s0 [ s0 = [ &_39 <- [%#schecked_ops'4] false ] s1 | s1 = bb21 ] - | bb21 = any [ br0 -> {_39 = false} (! bb22) | br1 -> {_39} (! bb24) ] - | bb24 = return''0 {_0} - | bb22 = {[%#schecked_ops'5] false} any - | bb14 = {[%#schecked_ops'6] false} any - | bb9 = {[%#schecked_ops'7] false} any - | bb4 = {[%#schecked_ops'8] false} any ] + | s2 = any [ br0 -> {_26 = false} (! bb13) | br1 -> {_26} (! bb12) ] ] + | bb12 = s0 [ s0 = overflowing_div {a'0} {b'0} (fun (_ret: tuple) -> [ &res <- _ret ] s1) | s1 = bb14 ] + | bb14 = s0 + [ s0 = [ &_43 <- b'0 ] s1 + | s1 = [ &_44 <- _43 = ([%#schecked_ops'2] (0: UInt8.t)) ] s2 + | s2 = {[@expl:division by zero] [%#schecked_ops'2] not _44} s3 + | s3 = bb15 ] + | bb15 = s0 + [ s0 = UInt8.div {a'0} {_43} (fun (_ret: UInt8.t) -> [ &_41 <- _ret ] s1) + | s1 = [ &_39 <- res._p0 = _41 ] s2 + | s2 = any [ br0 -> {_39 = false} (! bb20) | br1 -> {_39} (! bb16) ] ] + | bb16 = s0 + [ s0 = [ &_45 <- res._p1 = ([%#schecked_ops'3] false) ] s1 + | s1 = any [ br0 -> {_45 = false} (! bb20) | br1 -> {_45} (! bb17) ] ] + | bb17 = return''0 {_0} + | bb20 = {[%#schecked_ops'4] false} any + | bb13 = {[%#schecked_ops'5] false} any + | bb9 = {[%#schecked_ops'6] false} any + | bb5 = {[%#schecked_ops'7] false} any ] [ & _0: () = Any.any_l () | & a'0: UInt8.t = a | & b'0: UInt8.t = b @@ -1530,14 +1509,14 @@ module M_checked_ops__test_u8_div_no_overflow [#"checked_ops.rs" 128 0 128 44] | & _33: bool = Any.any_l () | & res: tuple = Any.any_l () | & _39: bool = Any.any_l () - | & _40: bool = Any.any_l () - | & _42: UInt8.t = Any.any_l () - | & _44: UInt8.t = Any.any_l () + | & _41: UInt8.t = Any.any_l () + | & _43: UInt8.t = Any.any_l () + | & _44: bool = Any.any_l () | & _45: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end module M_checked_ops__test_u8_div_zero [#"checked_ops.rs" 137 0 137 30] let%span schecked_ops = "checked_ops.rs" 138 26 138 27 - let%span schecked_ops'0 = "checked_ops.rs" 138 12 138 38 + let%span schecked_ops'0 = "checked_ops.rs" 138 4 138 39 let%span snum = "../../creusot-contracts/src/std/num.rs" 146 26 146 97 let%span snum'0 = "../../creusot-contracts/src/std/num.rs" 148 26 148 83 let%span soption = "../../creusot-contracts/src/std/option.rs" 79 26 79 51 @@ -1567,9 +1546,9 @@ module M_checked_ops__test_u8_div_zero [#"checked_ops.rs" 137 0 137 30] [ bb0 = s0 [ s0 = checked_div {a'0} {[%#schecked_ops] (0: UInt8.t)} (fun (_ret: t_Option) -> [ &_5 <- _ret ] s1) | s1 = bb1 ] | bb1 = s0 [ s0 = is_none {_5} (fun (_ret: bool) -> [ &_3 <- _ret ] s1) | s1 = bb2 ] - | bb2 = any [ br0 -> {_3 = false} (! bb3) | br1 -> {_3} (! bb5) ] - | bb5 = return''0 {_0} - | bb3 = {[%#schecked_ops'0] false} any ] + | bb2 = any [ br0 -> {_3 = false} (! bb4) | br1 -> {_3} (! bb3) ] + | bb3 = return''0 {_0} + | bb4 = {[%#schecked_ops'0] false} any ] [ & _0: () = Any.any_l () | & a'0: UInt8.t = a | & _3: bool = Any.any_l () | & _5: t_Option = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end @@ -1603,29 +1582,26 @@ module M_checked_ops__test_i8_add_example [#"checked_ops.rs" 142 0 142 28] let%span schecked_ops'25 = "checked_ops.rs" 155 34 155 36 let%span schecked_ops'26 = "checked_ops.rs" 156 21 156 23 let%span schecked_ops'27 = "checked_ops.rs" 156 36 156 41 - let%span schecked_ops'28 = "checked_ops.rs" 156 12 156 41 - let%span schecked_ops'29 = "checked_ops.rs" 157 14 157 19 - let%span schecked_ops'30 = "checked_ops.rs" 157 36 157 38 - let%span schecked_ops'31 = "checked_ops.rs" 158 21 158 25 - let%span schecked_ops'32 = "checked_ops.rs" 158 38 158 42 - let%span schecked_ops'33 = "checked_ops.rs" 158 12 158 42 - let%span schecked_ops'34 = "checked_ops.rs" 159 14 159 22 - let%span schecked_ops'35 = "checked_ops.rs" 159 39 159 42 - let%span schecked_ops'36 = "checked_ops.rs" 160 21 160 24 - let%span schecked_ops'37 = "checked_ops.rs" 160 37 160 41 - let%span schecked_ops'38 = "checked_ops.rs" 160 12 160 41 - let%span schecked_ops'39 = "checked_ops.rs" 160 12 160 41 - let%span schecked_ops'40 = "checked_ops.rs" 158 12 158 42 - let%span schecked_ops'41 = "checked_ops.rs" 156 12 156 41 - let%span schecked_ops'42 = "checked_ops.rs" 153 12 153 48 - let%span schecked_ops'43 = "checked_ops.rs" 152 12 152 43 - let%span schecked_ops'44 = "checked_ops.rs" 151 12 151 40 - let%span schecked_ops'45 = "checked_ops.rs" 149 12 149 45 - let%span schecked_ops'46 = "checked_ops.rs" 148 12 148 42 - let%span schecked_ops'47 = "checked_ops.rs" 147 12 147 38 - let%span schecked_ops'48 = "checked_ops.rs" 145 12 145 47 - let%span schecked_ops'49 = "checked_ops.rs" 144 12 144 43 - let%span schecked_ops'50 = "checked_ops.rs" 143 12 143 46 + let%span schecked_ops'28 = "checked_ops.rs" 157 14 157 19 + let%span schecked_ops'29 = "checked_ops.rs" 157 36 157 38 + let%span schecked_ops'30 = "checked_ops.rs" 158 21 158 25 + let%span schecked_ops'31 = "checked_ops.rs" 158 38 158 42 + let%span schecked_ops'32 = "checked_ops.rs" 159 14 159 22 + let%span schecked_ops'33 = "checked_ops.rs" 159 39 159 42 + let%span schecked_ops'34 = "checked_ops.rs" 160 21 160 24 + let%span schecked_ops'35 = "checked_ops.rs" 160 37 160 41 + let%span schecked_ops'36 = "checked_ops.rs" 160 4 160 42 + let%span schecked_ops'37 = "checked_ops.rs" 158 4 158 43 + let%span schecked_ops'38 = "checked_ops.rs" 156 4 156 42 + let%span schecked_ops'39 = "checked_ops.rs" 153 4 153 49 + let%span schecked_ops'40 = "checked_ops.rs" 152 4 152 44 + let%span schecked_ops'41 = "checked_ops.rs" 151 4 151 41 + let%span schecked_ops'42 = "checked_ops.rs" 149 4 149 46 + let%span schecked_ops'43 = "checked_ops.rs" 148 4 148 43 + let%span schecked_ops'44 = "checked_ops.rs" 147 4 147 39 + let%span schecked_ops'45 = "checked_ops.rs" 145 4 145 48 + let%span schecked_ops'46 = "checked_ops.rs" 144 4 144 44 + let%span schecked_ops'47 = "checked_ops.rs" 143 4 143 47 let%span snum = "../../creusot-contracts/src/std/num.rs" 223 20 224 89 let%span snum'0 = "../../creusot-contracts/src/std/num.rs" 227 26 227 87 let%span snum'1 = "../../creusot-contracts/src/std/num.rs" 233 26 233 48 @@ -1700,104 +1676,100 @@ module M_checked_ops__test_i8_add_example [#"checked_ops.rs" 142 0 142 28] | bb1 = s0 [ s0 = unwrap {_4} (fun (_ret: Int8.t) -> [ &_3 <- _ret ] s1) | s1 = bb2 ] | bb2 = s0 [ s0 = [ &_2 <- _3 = ([%#schecked_ops'1] (15: Int8.t)) ] s1 - | s1 = any [ br0 -> {_2 = false} (! bb3) | br1 -> {_2} (! bb5) ] ] - | bb5 = s0 + | s1 = any [ br0 -> {_2 = false} (! bb4) | br1 -> {_2} (! bb3) ] ] + | bb3 = s0 [ s0 = checked_add {[%#schecked_ops'2] (120: Int8.t)} {[%#schecked_ops'3] (10: Int8.t)} (fun (_ret: t_Option) -> [ &_9 <- _ret ] s1) - | s1 = bb6 ] - | bb6 = s0 [ s0 = is_none {_9} (fun (_ret: bool) -> [ &_7 <- _ret ] s1) | s1 = bb7 ] - | bb7 = any [ br0 -> {_7 = false} (! bb8) | br1 -> {_7} (! bb10) ] - | bb10 = s0 + | s1 = bb5 ] + | bb5 = s0 [ s0 = is_none {_9} (fun (_ret: bool) -> [ &_7 <- _ret ] s1) | s1 = bb6 ] + | bb6 = any [ br0 -> {_7 = false} (! bb8) | br1 -> {_7} (! bb7) ] + | bb7 = s0 [ s0 = checked_add {[%#schecked_ops'4] (-120: Int8.t)} {[%#schecked_ops'5] (-10: Int8.t)} (fun (_ret: t_Option) -> [ &_14 <- _ret ] s1) - | s1 = bb11 ] - | bb11 = s0 [ s0 = is_none {_14} (fun (_ret: bool) -> [ &_12 <- _ret ] s1) | s1 = bb12 ] - | bb12 = any [ br0 -> {_12 = false} (! bb13) | br1 -> {_12} (! bb15) ] - | bb15 = s0 + | s1 = bb9 ] + | bb9 = s0 [ s0 = is_none {_14} (fun (_ret: bool) -> [ &_12 <- _ret ] s1) | s1 = bb10 ] + | bb10 = any [ br0 -> {_12 = false} (! bb12) | br1 -> {_12} (! bb11) ] + | bb11 = s0 [ s0 = wrapping_add {[%#schecked_ops'6] (5: Int8.t)} {[%#schecked_ops'7] (10: Int8.t)} (fun (_ret: Int8.t) -> [ &_18 <- _ret ] s1) - | s1 = bb16 ] - | bb16 = s0 + | s1 = bb13 ] + | bb13 = s0 [ s0 = [ &_17 <- _18 = ([%#schecked_ops'8] (15: Int8.t)) ] s1 - | s1 = any [ br0 -> {_17 = false} (! bb17) | br1 -> {_17} (! bb19) ] ] - | bb19 = s0 + | s1 = any [ br0 -> {_17 = false} (! bb15) | br1 -> {_17} (! bb14) ] ] + | bb14 = s0 [ s0 = wrapping_add {[%#schecked_ops'9] (120: Int8.t)} {[%#schecked_ops'10] (10: Int8.t)} (fun (_ret: Int8.t) -> [ &_22 <- _ret ] s1) - | s1 = bb20 ] - | bb20 = s0 + | s1 = bb16 ] + | bb16 = s0 [ s0 = [ &_21 <- _22 = ([%#schecked_ops'11] (-126: Int8.t)) ] s1 - | s1 = any [ br0 -> {_21 = false} (! bb21) | br1 -> {_21} (! bb23) ] ] - | bb23 = s0 + | s1 = any [ br0 -> {_21 = false} (! bb18) | br1 -> {_21} (! bb17) ] ] + | bb17 = s0 [ s0 = wrapping_add {[%#schecked_ops'12] (-120: Int8.t)} {[%#schecked_ops'13] (-10: Int8.t)} (fun (_ret: Int8.t) -> [ &_26 <- _ret ] s1) - | s1 = bb24 ] - | bb24 = s0 + | s1 = bb19 ] + | bb19 = s0 [ s0 = [ &_25 <- _26 = ([%#schecked_ops'14] (126: Int8.t)) ] s1 - | s1 = any [ br0 -> {_25 = false} (! bb25) | br1 -> {_25} (! bb27) ] ] - | bb27 = s0 + | s1 = any [ br0 -> {_25 = false} (! bb21) | br1 -> {_25} (! bb20) ] ] + | bb20 = s0 [ s0 = saturating_add {[%#schecked_ops'15] (5: Int8.t)} {[%#schecked_ops'16] (10: Int8.t)} (fun (_ret: Int8.t) -> [ &_30 <- _ret ] s1) - | s1 = bb28 ] - | bb28 = s0 + | s1 = bb22 ] + | bb22 = s0 [ s0 = [ &_29 <- _30 = ([%#schecked_ops'17] (15: Int8.t)) ] s1 - | s1 = any [ br0 -> {_29 = false} (! bb29) | br1 -> {_29} (! bb31) ] ] - | bb31 = s0 + | s1 = any [ br0 -> {_29 = false} (! bb24) | br1 -> {_29} (! bb23) ] ] + | bb23 = s0 [ s0 = saturating_add {[%#schecked_ops'18] (120: Int8.t)} {[%#schecked_ops'19] (10: Int8.t)} (fun (_ret: Int8.t) -> [ &_34 <- _ret ] s1) - | s1 = bb32 ] - | bb32 = s0 + | s1 = bb25 ] + | bb25 = s0 [ s0 = [ &_33 <- _34 = ([%#schecked_ops'20] (127: Int8.t)) ] s1 - | s1 = any [ br0 -> {_33 = false} (! bb33) | br1 -> {_33} (! bb35) ] ] - | bb35 = s0 + | s1 = any [ br0 -> {_33 = false} (! bb27) | br1 -> {_33} (! bb26) ] ] + | bb26 = s0 [ s0 = saturating_add {[%#schecked_ops'21] (-120: Int8.t)} {[%#schecked_ops'22] (-10: Int8.t)} (fun (_ret: Int8.t) -> [ &_38 <- _ret ] s1) - | s1 = bb36 ] - | bb36 = s0 + | s1 = bb28 ] + | bb28 = s0 [ s0 = [ &_37 <- _38 = ([%#schecked_ops'23] (-128: Int8.t)) ] s1 - | s1 = any [ br0 -> {_37 = false} (! bb37) | br1 -> {_37} (! bb39) ] ] - | bb39 = s0 + | s1 = any [ br0 -> {_37 = false} (! bb30) | br1 -> {_37} (! bb29) ] ] + | bb29 = s0 [ s0 = overflowing_add {[%#schecked_ops'24] (5: Int8.t)} {[%#schecked_ops'25] (10: Int8.t)} (fun (_ret: tuple) -> [ &res <- _ret ] s1) - | s1 = bb40 ] - | bb40 = s0 - [ s0 = [ &_43 <- res._p0 = ([%#schecked_ops'26] (15: Int8.t)) ] s1 - | s1 = any [ br0 -> {_43 = false} (! bb42) | br1 -> {_43} (! bb41) ] ] - | bb41 = s0 [ s0 = [ &_42 <- res._p1 = ([%#schecked_ops'27] false) ] s1 | s1 = bb43 ] - | bb42 = s0 [ s0 = [ &_42 <- [%#schecked_ops'28] false ] s1 | s1 = bb43 ] - | bb43 = any [ br0 -> {_42 = false} (! bb44) | br1 -> {_42} (! bb46) ] - | bb46 = s0 - [ s0 = overflowing_add {[%#schecked_ops'29] (120: Int8.t)} {[%#schecked_ops'30] (10: Int8.t)} + | s1 = bb31 ] + | bb31 = s0 + [ s0 = [ &_42 <- res._p0 = ([%#schecked_ops'26] (15: Int8.t)) ] s1 + | s1 = any [ br0 -> {_42 = false} (! bb36) | br1 -> {_42} (! bb32) ] ] + | bb32 = s0 + [ s0 = [ &_44 <- res._p1 = ([%#schecked_ops'27] false) ] s1 + | s1 = any [ br0 -> {_44 = false} (! bb36) | br1 -> {_44} (! bb33) ] ] + | bb33 = s0 + [ s0 = overflowing_add {[%#schecked_ops'28] (120: Int8.t)} {[%#schecked_ops'29] (10: Int8.t)} (fun (_ret: tuple) -> [ &res'0 <- _ret ] s1) - | s1 = bb47 ] - | bb47 = s0 - [ s0 = [ &_50 <- res'0._p0 = ([%#schecked_ops'31] (-126: Int8.t)) ] s1 - | s1 = any [ br0 -> {_50 = false} (! bb49) | br1 -> {_50} (! bb48) ] ] - | bb48 = s0 [ s0 = [ &_49 <- res'0._p1 ] s1 | s1 = bb50 ] - | bb49 = s0 [ s0 = [ &_49 <- [%#schecked_ops'33] false ] s1 | s1 = bb50 ] - | bb50 = any [ br0 -> {_49 = false} (! bb51) | br1 -> {_49} (! bb53) ] - | bb53 = s0 - [ s0 = overflowing_add {[%#schecked_ops'34] (-120: Int8.t)} {[%#schecked_ops'35] (-10: Int8.t)} + | s1 = bb37 ] + | bb37 = s0 + [ s0 = [ &_49 <- res'0._p0 = ([%#schecked_ops'30] (-126: Int8.t)) ] s1 + | s1 = any [ br0 -> {_49 = false} (! bb42) | br1 -> {_49} (! bb38) ] ] + | bb38 = s0 [ s0 = [ &_51 <- res'0._p1 ] s1 | s1 = any [ br0 -> {_51 = false} (! bb42) | br1 -> {_51} (! bb39) ] ] + | bb39 = s0 + [ s0 = overflowing_add {[%#schecked_ops'32] (-120: Int8.t)} {[%#schecked_ops'33] (-10: Int8.t)} (fun (_ret: tuple) -> [ &res'1 <- _ret ] s1) - | s1 = bb54 ] - | bb54 = s0 - [ s0 = [ &_57 <- res'1._p0 = ([%#schecked_ops'36] (126: Int8.t)) ] s1 - | s1 = any [ br0 -> {_57 = false} (! bb56) | br1 -> {_57} (! bb55) ] ] - | bb55 = s0 [ s0 = [ &_56 <- res'1._p1 ] s1 | s1 = bb57 ] - | bb56 = s0 [ s0 = [ &_56 <- [%#schecked_ops'38] false ] s1 | s1 = bb57 ] - | bb57 = any [ br0 -> {_56 = false} (! bb58) | br1 -> {_56} (! bb60) ] - | bb60 = return''0 {_0} - | bb58 = {[%#schecked_ops'39] false} any - | bb51 = {[%#schecked_ops'40] false} any - | bb44 = {[%#schecked_ops'41] false} any - | bb37 = {[%#schecked_ops'42] false} any - | bb33 = {[%#schecked_ops'43] false} any - | bb29 = {[%#schecked_ops'44] false} any - | bb25 = {[%#schecked_ops'45] false} any - | bb21 = {[%#schecked_ops'46] false} any - | bb17 = {[%#schecked_ops'47] false} any - | bb13 = {[%#schecked_ops'48] false} any - | bb8 = {[%#schecked_ops'49] false} any - | bb3 = {[%#schecked_ops'50] false} any ] + | s1 = bb43 ] + | bb43 = s0 + [ s0 = [ &_56 <- res'1._p0 = ([%#schecked_ops'34] (126: Int8.t)) ] s1 + | s1 = any [ br0 -> {_56 = false} (! bb48) | br1 -> {_56} (! bb44) ] ] + | bb44 = s0 [ s0 = [ &_58 <- res'1._p1 ] s1 | s1 = any [ br0 -> {_58 = false} (! bb48) | br1 -> {_58} (! bb45) ] ] + | bb45 = return''0 {_0} + | bb48 = {[%#schecked_ops'36] false} any + | bb42 = {[%#schecked_ops'37] false} any + | bb36 = {[%#schecked_ops'38] false} any + | bb30 = {[%#schecked_ops'39] false} any + | bb27 = {[%#schecked_ops'40] false} any + | bb24 = {[%#schecked_ops'41] false} any + | bb21 = {[%#schecked_ops'42] false} any + | bb18 = {[%#schecked_ops'43] false} any + | bb15 = {[%#schecked_ops'44] false} any + | bb12 = {[%#schecked_ops'45] false} any + | bb8 = {[%#schecked_ops'46] false} any + | bb4 = {[%#schecked_ops'47] false} any ] [ & _0: () = Any.any_l () | & _2: bool = Any.any_l () | & _3: Int8.t = Any.any_l () @@ -1820,13 +1792,13 @@ module M_checked_ops__test_i8_add_example [#"checked_ops.rs" 142 0 142 28] | & _38: Int8.t = Any.any_l () | & res: tuple = Any.any_l () | & _42: bool = Any.any_l () - | & _43: bool = Any.any_l () + | & _44: bool = Any.any_l () | & res'0: tuple = Any.any_l () | & _49: bool = Any.any_l () - | & _50: bool = Any.any_l () + | & _51: bool = Any.any_l () | & res'1: tuple = Any.any_l () | & _56: bool = Any.any_l () - | & _57: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] + | & _58: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end module M_checked_ops__test_i8_add_overflow_pos [#"checked_ops.rs" 165 0 165 38] let%span schecked_ops = "checked_ops.rs" 166 12 166 17 @@ -1839,12 +1811,11 @@ module M_checked_ops__test_i8_add_overflow_pos [#"checked_ops.rs" 165 0 165 38] let%span schecked_ops'6 = "checked_ops.rs" 170 25 170 28 let%span schecked_ops'7 = "checked_ops.rs" 170 31 170 32 let%span schecked_ops'8 = "checked_ops.rs" 170 45 170 49 - let%span schecked_ops'9 = "checked_ops.rs" 170 12 170 49 - let%span schecked_ops'10 = "checked_ops.rs" 170 12 170 49 - let%span schecked_ops'11 = "checked_ops.rs" 168 12 168 42 - let%span schecked_ops'12 = "checked_ops.rs" 167 12 167 48 - let%span schecked_ops'13 = "checked_ops.rs" 166 12 166 42 - let%span schecked_ops'14 = "checked_ops.rs" 164 11 164 17 + let%span schecked_ops'9 = "checked_ops.rs" 170 4 170 50 + let%span schecked_ops'10 = "checked_ops.rs" 168 4 168 43 + let%span schecked_ops'11 = "checked_ops.rs" 167 4 167 49 + let%span schecked_ops'12 = "checked_ops.rs" 166 4 166 43 + let%span schecked_ops'13 = "checked_ops.rs" 164 11 164 17 let%span snum = "../../creusot-contracts/src/std/num.rs" 223 20 224 89 let%span snum'0 = "../../creusot-contracts/src/std/num.rs" 227 26 227 87 let%span snum'1 = "../../creusot-contracts/src/std/num.rs" 233 26 233 48 @@ -1907,43 +1878,41 @@ module M_checked_ops__test_i8_add_overflow_pos [#"checked_ops.rs" 165 0 165 38] meta "select_lsinst" "all" let rec test_i8_add_overflow_pos [#"checked_ops.rs" 165 0 165 38] (a: Int8.t) (return' (x: ())) = - {[@expl:test_i8_add_overflow_pos requires] [%#schecked_ops'14] Int8.to_int a > 0} + {[@expl:test_i8_add_overflow_pos requires] [%#schecked_ops'13] Int8.to_int a > 0} (! bb0 [ bb0 = s0 [ s0 = checked_add {[%#schecked_ops] (127: Int8.t)} {a'0} (fun (_ret: t_Option) -> [ &_6 <- _ret ] s1) | s1 = bb1 ] | bb1 = s0 [ s0 = is_none {_6} (fun (_ret: bool) -> [ &_4 <- _ret ] s1) | s1 = bb2 ] - | bb2 = any [ br0 -> {_4 = false} (! bb3) | br1 -> {_4} (! bb5) ] - | bb5 = s0 + | bb2 = any [ br0 -> {_4 = false} (! bb4) | br1 -> {_4} (! bb3) ] + | bb3 = s0 [ s0 = wrapping_add {[%#schecked_ops'0] (127: Int8.t)} {a'0} (fun (_ret: Int8.t) -> [ &_11 <- _ret ] s1) - | s1 = bb6 ] - | bb6 = s0 + | s1 = bb5 ] + | bb5 = s0 [ s0 = Int8.sub {a'0} {[%#schecked_ops'1] (127: Int8.t)} (fun (_ret: Int8.t) -> [ &_14 <- _ret ] s1) | s1 = Int8.sub {_14} {[%#schecked_ops'2] (2: Int8.t)} (fun (_ret: Int8.t) -> [ &_13 <- _ret ] s2) | s2 = [ &_10 <- _11 = _13 ] s3 - | s3 = any [ br0 -> {_10 = false} (! bb7) | br1 -> {_10} (! bb9) ] ] - | bb9 = s0 + | s3 = any [ br0 -> {_10 = false} (! bb7) | br1 -> {_10} (! bb6) ] ] + | bb6 = s0 [ s0 = saturating_add {[%#schecked_ops'3] (127: Int8.t)} {a'0} (fun (_ret: Int8.t) -> [ &_19 <- _ret ] s1) - | s1 = bb10 ] - | bb10 = s0 + | s1 = bb8 ] + | bb8 = s0 [ s0 = [ &_18 <- _19 = ([%#schecked_ops'4] (127: Int8.t)) ] s1 - | s1 = any [ br0 -> {_18 = false} (! bb11) | br1 -> {_18} (! bb13) ] ] - | bb13 = s0 + | s1 = any [ br0 -> {_18 = false} (! bb10) | br1 -> {_18} (! bb9) ] ] + | bb9 = s0 [ s0 = overflowing_add {[%#schecked_ops'5] (127: Int8.t)} {a'0} (fun (_ret: tuple) -> [ &res <- _ret ] s1) - | s1 = bb14 ] - | bb14 = s0 - [ s0 = Int8.sub {a'0} {[%#schecked_ops'6] (127: Int8.t)} (fun (_ret: Int8.t) -> [ &_29 <- _ret ] s1) - | s1 = Int8.sub {_29} {[%#schecked_ops'7] (2: Int8.t)} (fun (_ret: Int8.t) -> [ &_28 <- _ret ] s2) - | s2 = [ &_26 <- res._p0 = _28 ] s3 - | s3 = any [ br0 -> {_26 = false} (! bb16) | br1 -> {_26} (! bb15) ] ] - | bb15 = s0 [ s0 = [ &_25 <- res._p1 ] s1 | s1 = bb17 ] - | bb16 = s0 [ s0 = [ &_25 <- [%#schecked_ops'9] false ] s1 | s1 = bb17 ] - | bb17 = any [ br0 -> {_25 = false} (! bb18) | br1 -> {_25} (! bb20) ] - | bb20 = return''0 {_0} - | bb18 = {[%#schecked_ops'10] false} any - | bb11 = {[%#schecked_ops'11] false} any - | bb7 = {[%#schecked_ops'12] false} any - | bb3 = {[%#schecked_ops'13] false} any ] + | s1 = bb11 ] + | bb11 = s0 + [ s0 = Int8.sub {a'0} {[%#schecked_ops'6] (127: Int8.t)} (fun (_ret: Int8.t) -> [ &_28 <- _ret ] s1) + | s1 = Int8.sub {_28} {[%#schecked_ops'7] (2: Int8.t)} (fun (_ret: Int8.t) -> [ &_27 <- _ret ] s2) + | s2 = [ &_25 <- res._p0 = _27 ] s3 + | s3 = any [ br0 -> {_25 = false} (! bb16) | br1 -> {_25} (! bb12) ] ] + | bb12 = s0 [ s0 = [ &_30 <- res._p1 ] s1 | s1 = any [ br0 -> {_30 = false} (! bb16) | br1 -> {_30} (! bb13) ] ] + | bb13 = return''0 {_0} + | bb16 = {[%#schecked_ops'9] false} any + | bb10 = {[%#schecked_ops'10] false} any + | bb7 = {[%#schecked_ops'11] false} any + | bb4 = {[%#schecked_ops'12] false} any ] [ & _0: () = Any.any_l () | & a'0: Int8.t = a | & _4: bool = Any.any_l () @@ -1956,9 +1925,9 @@ module M_checked_ops__test_i8_add_overflow_pos [#"checked_ops.rs" 165 0 165 38] | & _19: Int8.t = Any.any_l () | & res: tuple = Any.any_l () | & _25: bool = Any.any_l () - | & _26: bool = Any.any_l () + | & _27: Int8.t = Any.any_l () | & _28: Int8.t = Any.any_l () - | & _29: Int8.t = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] + | & _30: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end module M_checked_ops__test_i8_add_overflow_neg [#"checked_ops.rs" 175 0 175 38] let%span schecked_ops = "checked_ops.rs" 176 12 176 20 @@ -1971,12 +1940,11 @@ module M_checked_ops__test_i8_add_overflow_neg [#"checked_ops.rs" 175 0 175 38] let%span schecked_ops'6 = "checked_ops.rs" 180 25 180 28 let%span schecked_ops'7 = "checked_ops.rs" 180 31 180 32 let%span schecked_ops'8 = "checked_ops.rs" 180 45 180 49 - let%span schecked_ops'9 = "checked_ops.rs" 180 12 180 49 - let%span schecked_ops'10 = "checked_ops.rs" 180 12 180 49 - let%span schecked_ops'11 = "checked_ops.rs" 178 12 178 46 - let%span schecked_ops'12 = "checked_ops.rs" 177 12 177 51 - let%span schecked_ops'13 = "checked_ops.rs" 176 12 176 45 - let%span schecked_ops'14 = "checked_ops.rs" 174 11 174 17 + let%span schecked_ops'9 = "checked_ops.rs" 180 4 180 50 + let%span schecked_ops'10 = "checked_ops.rs" 178 4 178 47 + let%span schecked_ops'11 = "checked_ops.rs" 177 4 177 52 + let%span schecked_ops'12 = "checked_ops.rs" 176 4 176 46 + let%span schecked_ops'13 = "checked_ops.rs" 174 11 174 17 let%span snum = "../../creusot-contracts/src/std/num.rs" 223 20 224 89 let%span snum'0 = "../../creusot-contracts/src/std/num.rs" 227 26 227 87 let%span snum'1 = "../../creusot-contracts/src/std/num.rs" 233 26 233 48 @@ -2039,43 +2007,41 @@ module M_checked_ops__test_i8_add_overflow_neg [#"checked_ops.rs" 175 0 175 38] meta "select_lsinst" "all" let rec test_i8_add_overflow_neg [#"checked_ops.rs" 175 0 175 38] (a: Int8.t) (return' (x: ())) = - {[@expl:test_i8_add_overflow_neg requires] [%#schecked_ops'14] Int8.to_int a < 0} + {[@expl:test_i8_add_overflow_neg requires] [%#schecked_ops'13] Int8.to_int a < 0} (! bb0 [ bb0 = s0 [ s0 = checked_add {[%#schecked_ops] (-128: Int8.t)} {a'0} (fun (_ret: t_Option) -> [ &_6 <- _ret ] s1) | s1 = bb1 ] | bb1 = s0 [ s0 = is_none {_6} (fun (_ret: bool) -> [ &_4 <- _ret ] s1) | s1 = bb2 ] - | bb2 = any [ br0 -> {_4 = false} (! bb3) | br1 -> {_4} (! bb5) ] - | bb5 = s0 + | bb2 = any [ br0 -> {_4 = false} (! bb4) | br1 -> {_4} (! bb3) ] + | bb3 = s0 [ s0 = wrapping_add {[%#schecked_ops'0] (-128: Int8.t)} {a'0} (fun (_ret: Int8.t) -> [ &_11 <- _ret ] s1) - | s1 = bb6 ] - | bb6 = s0 + | s1 = bb5 ] + | bb5 = s0 [ s0 = Int8.add {a'0} {[%#schecked_ops'1] (127: Int8.t)} (fun (_ret: Int8.t) -> [ &_14 <- _ret ] s1) | s1 = Int8.add {_14} {[%#schecked_ops'2] (1: Int8.t)} (fun (_ret: Int8.t) -> [ &_13 <- _ret ] s2) | s2 = [ &_10 <- _11 = _13 ] s3 - | s3 = any [ br0 -> {_10 = false} (! bb7) | br1 -> {_10} (! bb9) ] ] - | bb9 = s0 + | s3 = any [ br0 -> {_10 = false} (! bb7) | br1 -> {_10} (! bb6) ] ] + | bb6 = s0 [ s0 = saturating_add {[%#schecked_ops'3] (-128: Int8.t)} {a'0} (fun (_ret: Int8.t) -> [ &_19 <- _ret ] s1) - | s1 = bb10 ] - | bb10 = s0 + | s1 = bb8 ] + | bb8 = s0 [ s0 = [ &_18 <- _19 = ([%#schecked_ops'4] (-128: Int8.t)) ] s1 - | s1 = any [ br0 -> {_18 = false} (! bb11) | br1 -> {_18} (! bb13) ] ] - | bb13 = s0 + | s1 = any [ br0 -> {_18 = false} (! bb10) | br1 -> {_18} (! bb9) ] ] + | bb9 = s0 [ s0 = overflowing_add {[%#schecked_ops'5] (-128: Int8.t)} {a'0} (fun (_ret: tuple) -> [ &res <- _ret ] s1) - | s1 = bb14 ] - | bb14 = s0 - [ s0 = Int8.add {a'0} {[%#schecked_ops'6] (127: Int8.t)} (fun (_ret: Int8.t) -> [ &_29 <- _ret ] s1) - | s1 = Int8.add {_29} {[%#schecked_ops'7] (1: Int8.t)} (fun (_ret: Int8.t) -> [ &_28 <- _ret ] s2) - | s2 = [ &_26 <- res._p0 = _28 ] s3 - | s3 = any [ br0 -> {_26 = false} (! bb16) | br1 -> {_26} (! bb15) ] ] - | bb15 = s0 [ s0 = [ &_25 <- res._p1 ] s1 | s1 = bb17 ] - | bb16 = s0 [ s0 = [ &_25 <- [%#schecked_ops'9] false ] s1 | s1 = bb17 ] - | bb17 = any [ br0 -> {_25 = false} (! bb18) | br1 -> {_25} (! bb20) ] - | bb20 = return''0 {_0} - | bb18 = {[%#schecked_ops'10] false} any - | bb11 = {[%#schecked_ops'11] false} any - | bb7 = {[%#schecked_ops'12] false} any - | bb3 = {[%#schecked_ops'13] false} any ] + | s1 = bb11 ] + | bb11 = s0 + [ s0 = Int8.add {a'0} {[%#schecked_ops'6] (127: Int8.t)} (fun (_ret: Int8.t) -> [ &_28 <- _ret ] s1) + | s1 = Int8.add {_28} {[%#schecked_ops'7] (1: Int8.t)} (fun (_ret: Int8.t) -> [ &_27 <- _ret ] s2) + | s2 = [ &_25 <- res._p0 = _27 ] s3 + | s3 = any [ br0 -> {_25 = false} (! bb16) | br1 -> {_25} (! bb12) ] ] + | bb12 = s0 [ s0 = [ &_30 <- res._p1 ] s1 | s1 = any [ br0 -> {_30 = false} (! bb16) | br1 -> {_30} (! bb13) ] ] + | bb13 = return''0 {_0} + | bb16 = {[%#schecked_ops'9] false} any + | bb10 = {[%#schecked_ops'10] false} any + | bb7 = {[%#schecked_ops'11] false} any + | bb4 = {[%#schecked_ops'12] false} any ] [ & _0: () = Any.any_l () | & a'0: Int8.t = a | & _4: bool = Any.any_l () @@ -2088,9 +2054,9 @@ module M_checked_ops__test_i8_add_overflow_neg [#"checked_ops.rs" 175 0 175 38] | & _19: Int8.t = Any.any_l () | & res: tuple = Any.any_l () | & _25: bool = Any.any_l () - | & _26: bool = Any.any_l () + | & _27: Int8.t = Any.any_l () | & _28: Int8.t = Any.any_l () - | & _29: Int8.t = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] + | & _30: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end module M_checked_ops__test_i8_wrapping_add [#"checked_ops.rs" 186 0 186 47] let%span schecked_ops = "checked_ops.rs" 185 10 185 84 @@ -2117,8 +2083,8 @@ module M_checked_ops__test_i8_wrapping_add [#"checked_ops.rs" 186 0 186 47] (! return' {result}) ] end module M_checked_ops__test_i8_overflowing_add [#"checked_ops.rs" 191 0 191 44] - let%span schecked_ops = "checked_ops.rs" 193 12 193 64 - let%span schecked_ops'0 = "checked_ops.rs" 192 12 192 55 + let%span schecked_ops = "checked_ops.rs" 193 4 193 65 + let%span schecked_ops'0 = "checked_ops.rs" 192 4 192 56 let%span snum = "../../creusot-contracts/src/std/num.rs" 256 20 257 53 let%span snum'0 = "../../creusot-contracts/src/std/num.rs" 263 20 263 102 let%span snum'1 = "../../creusot-contracts/src/std/num.rs" 267 20 267 98 @@ -2170,14 +2136,14 @@ module M_checked_ops__test_i8_overflowing_add [#"checked_ops.rs" 191 0 191 44] let rec test_i8_overflowing_add [#"checked_ops.rs" 191 0 191 44] (a: Int8.t) (b: Int8.t) (return' (x: ())) = (! bb0 [ bb0 = s0 [ s0 = overflowing_add {a'0} {b'0} (fun (_ret: tuple) -> [ &_6 <- _ret ] s1) | s1 = bb1 ] | bb1 = s0 [ s0 = wrapping_add {a'0} {b'0} (fun (_ret: Int8.t) -> [ &_9 <- _ret ] s1) | s1 = bb2 ] - | bb2 = s0 [ s0 = [ &_4 <- _6._p0 = _9 ] s1 | s1 = any [ br0 -> {_4 = false} (! bb3) | br1 -> {_4} (! bb5) ] ] - | bb5 = s0 [ s0 = overflowing_add {a'0} {b'0} (fun (_ret: tuple) -> [ &_16 <- _ret ] s1) | s1 = bb6 ] - | bb6 = s0 [ s0 = checked_add {a'0} {b'0} (fun (_ret: t_Option) -> [ &_21 <- _ret ] s1) | s1 = bb7 ] - | bb7 = s0 [ s0 = is_none {_21} (fun (_ret: bool) -> [ &_19 <- _ret ] s1) | s1 = bb8 ] - | bb8 = s0 [ s0 = [ &_14 <- _16._p1 = _19 ] s1 | s1 = any [ br0 -> {_14 = false} (! bb9) | br1 -> {_14} (! bb11) ] ] - | bb11 = return''0 {_0} + | bb2 = s0 [ s0 = [ &_4 <- _6._p0 = _9 ] s1 | s1 = any [ br0 -> {_4 = false} (! bb4) | br1 -> {_4} (! bb3) ] ] + | bb3 = s0 [ s0 = overflowing_add {a'0} {b'0} (fun (_ret: tuple) -> [ &_16 <- _ret ] s1) | s1 = bb5 ] + | bb5 = s0 [ s0 = checked_add {a'0} {b'0} (fun (_ret: t_Option) -> [ &_21 <- _ret ] s1) | s1 = bb6 ] + | bb6 = s0 [ s0 = is_none {_21} (fun (_ret: bool) -> [ &_19 <- _ret ] s1) | s1 = bb7 ] + | bb7 = s0 [ s0 = [ &_14 <- _16._p1 = _19 ] s1 | s1 = any [ br0 -> {_14 = false} (! bb9) | br1 -> {_14} (! bb8) ] ] + | bb8 = return''0 {_0} | bb9 = {[%#schecked_ops] false} any - | bb3 = {[%#schecked_ops'0] false} any ] + | bb4 = {[%#schecked_ops'0] false} any ] [ & _0: () = Any.any_l () | & a'0: Int8.t = a | & b'0: Int8.t = b @@ -2220,29 +2186,26 @@ module M_checked_ops__test_i8_sub_example [#"checked_ops.rs" 197 0 197 28] let%span schecked_ops'26 = "checked_ops.rs" 210 34 210 36 let%span schecked_ops'27 = "checked_ops.rs" 211 21 211 23 let%span schecked_ops'28 = "checked_ops.rs" 211 36 211 41 - let%span schecked_ops'29 = "checked_ops.rs" 211 12 211 41 - let%span schecked_ops'30 = "checked_ops.rs" 212 14 212 19 - let%span schecked_ops'31 = "checked_ops.rs" 212 36 212 38 - let%span schecked_ops'32 = "checked_ops.rs" 213 21 213 24 - let%span schecked_ops'33 = "checked_ops.rs" 213 37 213 42 - let%span schecked_ops'34 = "checked_ops.rs" 213 12 213 42 - let%span schecked_ops'35 = "checked_ops.rs" 214 14 214 22 - let%span schecked_ops'36 = "checked_ops.rs" 214 39 214 41 - let%span schecked_ops'37 = "checked_ops.rs" 215 21 215 24 - let%span schecked_ops'38 = "checked_ops.rs" 215 37 215 41 - let%span schecked_ops'39 = "checked_ops.rs" 215 12 215 41 - let%span schecked_ops'40 = "checked_ops.rs" 215 12 215 41 - let%span schecked_ops'41 = "checked_ops.rs" 213 12 213 42 - let%span schecked_ops'42 = "checked_ops.rs" 211 12 211 41 - let%span schecked_ops'43 = "checked_ops.rs" 208 12 208 47 - let%span schecked_ops'44 = "checked_ops.rs" 207 12 207 43 - let%span schecked_ops'45 = "checked_ops.rs" 206 12 206 40 - let%span schecked_ops'46 = "checked_ops.rs" 204 12 204 44 - let%span schecked_ops'47 = "checked_ops.rs" 203 12 203 41 - let%span schecked_ops'48 = "checked_ops.rs" 202 12 202 38 - let%span schecked_ops'49 = "checked_ops.rs" 200 12 200 46 - let%span schecked_ops'50 = "checked_ops.rs" 199 12 199 49 - let%span schecked_ops'51 = "checked_ops.rs" 198 12 198 46 + let%span schecked_ops'29 = "checked_ops.rs" 212 14 212 19 + let%span schecked_ops'30 = "checked_ops.rs" 212 36 212 38 + let%span schecked_ops'31 = "checked_ops.rs" 213 21 213 24 + let%span schecked_ops'32 = "checked_ops.rs" 213 37 213 42 + let%span schecked_ops'33 = "checked_ops.rs" 214 14 214 22 + let%span schecked_ops'34 = "checked_ops.rs" 214 39 214 41 + let%span schecked_ops'35 = "checked_ops.rs" 215 21 215 24 + let%span schecked_ops'36 = "checked_ops.rs" 215 37 215 41 + let%span schecked_ops'37 = "checked_ops.rs" 215 4 215 42 + let%span schecked_ops'38 = "checked_ops.rs" 213 4 213 43 + let%span schecked_ops'39 = "checked_ops.rs" 211 4 211 42 + let%span schecked_ops'40 = "checked_ops.rs" 208 4 208 48 + let%span schecked_ops'41 = "checked_ops.rs" 207 4 207 44 + let%span schecked_ops'42 = "checked_ops.rs" 206 4 206 41 + let%span schecked_ops'43 = "checked_ops.rs" 204 4 204 45 + let%span schecked_ops'44 = "checked_ops.rs" 203 4 203 42 + let%span schecked_ops'45 = "checked_ops.rs" 202 4 202 39 + let%span schecked_ops'46 = "checked_ops.rs" 200 4 200 47 + let%span schecked_ops'47 = "checked_ops.rs" 199 4 199 50 + let%span schecked_ops'48 = "checked_ops.rs" 198 4 198 47 let%span snum = "../../creusot-contracts/src/std/num.rs" 223 20 224 89 let%span snum'0 = "../../creusot-contracts/src/std/num.rs" 227 26 227 87 let%span snum'1 = "../../creusot-contracts/src/std/num.rs" 233 26 233 48 @@ -2317,106 +2280,104 @@ module M_checked_ops__test_i8_sub_example [#"checked_ops.rs" 197 0 197 28] | bb1 = s0 [ s0 = unwrap {_4} (fun (_ret: Int8.t) -> [ &_3 <- _ret ] s1) | s1 = bb2 ] | bb2 = s0 [ s0 = [ &_2 <- _3 = ([%#schecked_ops'1] (-5: Int8.t)) ] s1 - | s1 = any [ br0 -> {_2 = false} (! bb3) | br1 -> {_2} (! bb5) ] ] - | bb5 = s0 + | s1 = any [ br0 -> {_2 = false} (! bb4) | br1 -> {_2} (! bb3) ] ] + | bb3 = s0 [ s0 = checked_sub {[%#schecked_ops'2] (120: Int8.t)} {[%#schecked_ops'3] (10: Int8.t)} (fun (_ret: t_Option) -> [ &_9 <- _ret ] s1) - | s1 = bb6 ] - | bb6 = s0 [ s0 = unwrap {_9} (fun (_ret: Int8.t) -> [ &_8 <- _ret ] s1) | s1 = bb7 ] - | bb7 = s0 + | s1 = bb5 ] + | bb5 = s0 [ s0 = unwrap {_9} (fun (_ret: Int8.t) -> [ &_8 <- _ret ] s1) | s1 = bb6 ] + | bb6 = s0 [ s0 = [ &_7 <- _8 = ([%#schecked_ops'4] (110: Int8.t)) ] s1 - | s1 = any [ br0 -> {_7 = false} (! bb8) | br1 -> {_7} (! bb10) ] ] - | bb10 = s0 + | s1 = any [ br0 -> {_7 = false} (! bb8) | br1 -> {_7} (! bb7) ] ] + | bb7 = s0 [ s0 = checked_sub {[%#schecked_ops'5] (-120: Int8.t)} {[%#schecked_ops'6] (10: Int8.t)} (fun (_ret: t_Option) -> [ &_14 <- _ret ] s1) - | s1 = bb11 ] - | bb11 = s0 [ s0 = is_none {_14} (fun (_ret: bool) -> [ &_12 <- _ret ] s1) | s1 = bb12 ] - | bb12 = any [ br0 -> {_12 = false} (! bb13) | br1 -> {_12} (! bb15) ] - | bb15 = s0 + | s1 = bb9 ] + | bb9 = s0 [ s0 = is_none {_14} (fun (_ret: bool) -> [ &_12 <- _ret ] s1) | s1 = bb10 ] + | bb10 = any [ br0 -> {_12 = false} (! bb12) | br1 -> {_12} (! bb11) ] + | bb11 = s0 [ s0 = wrapping_sub {[%#schecked_ops'7] (5: Int8.t)} {[%#schecked_ops'8] (10: Int8.t)} (fun (_ret: Int8.t) -> [ &_18 <- _ret ] s1) - | s1 = bb16 ] - | bb16 = s0 + | s1 = bb13 ] + | bb13 = s0 [ s0 = [ &_17 <- _18 = ([%#schecked_ops'9] (-5: Int8.t)) ] s1 - | s1 = any [ br0 -> {_17 = false} (! bb17) | br1 -> {_17} (! bb19) ] ] - | bb19 = s0 + | s1 = any [ br0 -> {_17 = false} (! bb15) | br1 -> {_17} (! bb14) ] ] + | bb14 = s0 [ s0 = wrapping_sub {[%#schecked_ops'10] (120: Int8.t)} {[%#schecked_ops'11] (10: Int8.t)} (fun (_ret: Int8.t) -> [ &_22 <- _ret ] s1) - | s1 = bb20 ] - | bb20 = s0 + | s1 = bb16 ] + | bb16 = s0 [ s0 = [ &_21 <- _22 = ([%#schecked_ops'12] (110: Int8.t)) ] s1 - | s1 = any [ br0 -> {_21 = false} (! bb21) | br1 -> {_21} (! bb23) ] ] - | bb23 = s0 + | s1 = any [ br0 -> {_21 = false} (! bb18) | br1 -> {_21} (! bb17) ] ] + | bb17 = s0 [ s0 = wrapping_sub {[%#schecked_ops'13] (-120: Int8.t)} {[%#schecked_ops'14] (10: Int8.t)} (fun (_ret: Int8.t) -> [ &_26 <- _ret ] s1) - | s1 = bb24 ] - | bb24 = s0 + | s1 = bb19 ] + | bb19 = s0 [ s0 = [ &_25 <- _26 = ([%#schecked_ops'15] (126: Int8.t)) ] s1 - | s1 = any [ br0 -> {_25 = false} (! bb25) | br1 -> {_25} (! bb27) ] ] - | bb27 = s0 + | s1 = any [ br0 -> {_25 = false} (! bb21) | br1 -> {_25} (! bb20) ] ] + | bb20 = s0 [ s0 = saturating_sub {[%#schecked_ops'16] (5: Int8.t)} {[%#schecked_ops'17] (10: Int8.t)} (fun (_ret: Int8.t) -> [ &_30 <- _ret ] s1) - | s1 = bb28 ] - | bb28 = s0 + | s1 = bb22 ] + | bb22 = s0 [ s0 = [ &_29 <- _30 = ([%#schecked_ops'18] (-5: Int8.t)) ] s1 - | s1 = any [ br0 -> {_29 = false} (! bb29) | br1 -> {_29} (! bb31) ] ] - | bb31 = s0 + | s1 = any [ br0 -> {_29 = false} (! bb24) | br1 -> {_29} (! bb23) ] ] + | bb23 = s0 [ s0 = saturating_sub {[%#schecked_ops'19] (120: Int8.t)} {[%#schecked_ops'20] (10: Int8.t)} (fun (_ret: Int8.t) -> [ &_34 <- _ret ] s1) - | s1 = bb32 ] - | bb32 = s0 + | s1 = bb25 ] + | bb25 = s0 [ s0 = [ &_33 <- _34 = ([%#schecked_ops'21] (110: Int8.t)) ] s1 - | s1 = any [ br0 -> {_33 = false} (! bb33) | br1 -> {_33} (! bb35) ] ] - | bb35 = s0 + | s1 = any [ br0 -> {_33 = false} (! bb27) | br1 -> {_33} (! bb26) ] ] + | bb26 = s0 [ s0 = saturating_sub {[%#schecked_ops'22] (-120: Int8.t)} {[%#schecked_ops'23] (10: Int8.t)} (fun (_ret: Int8.t) -> [ &_38 <- _ret ] s1) - | s1 = bb36 ] - | bb36 = s0 + | s1 = bb28 ] + | bb28 = s0 [ s0 = [ &_37 <- _38 = ([%#schecked_ops'24] (-128: Int8.t)) ] s1 - | s1 = any [ br0 -> {_37 = false} (! bb37) | br1 -> {_37} (! bb39) ] ] - | bb39 = s0 + | s1 = any [ br0 -> {_37 = false} (! bb30) | br1 -> {_37} (! bb29) ] ] + | bb29 = s0 [ s0 = overflowing_sub {[%#schecked_ops'25] (5: Int8.t)} {[%#schecked_ops'26] (10: Int8.t)} (fun (_ret: tuple) -> [ &res <- _ret ] s1) - | s1 = bb40 ] - | bb40 = s0 - [ s0 = [ &_43 <- res._p0 = ([%#schecked_ops'27] (-5: Int8.t)) ] s1 - | s1 = any [ br0 -> {_43 = false} (! bb42) | br1 -> {_43} (! bb41) ] ] - | bb41 = s0 [ s0 = [ &_42 <- res._p1 = ([%#schecked_ops'28] false) ] s1 | s1 = bb43 ] - | bb42 = s0 [ s0 = [ &_42 <- [%#schecked_ops'29] false ] s1 | s1 = bb43 ] - | bb43 = any [ br0 -> {_42 = false} (! bb44) | br1 -> {_42} (! bb46) ] - | bb46 = s0 - [ s0 = overflowing_sub {[%#schecked_ops'30] (120: Int8.t)} {[%#schecked_ops'31] (10: Int8.t)} + | s1 = bb31 ] + | bb31 = s0 + [ s0 = [ &_42 <- res._p0 = ([%#schecked_ops'27] (-5: Int8.t)) ] s1 + | s1 = any [ br0 -> {_42 = false} (! bb36) | br1 -> {_42} (! bb32) ] ] + | bb32 = s0 + [ s0 = [ &_44 <- res._p1 = ([%#schecked_ops'28] false) ] s1 + | s1 = any [ br0 -> {_44 = false} (! bb36) | br1 -> {_44} (! bb33) ] ] + | bb33 = s0 + [ s0 = overflowing_sub {[%#schecked_ops'29] (120: Int8.t)} {[%#schecked_ops'30] (10: Int8.t)} (fun (_ret: tuple) -> [ &res'0 <- _ret ] s1) - | s1 = bb47 ] - | bb47 = s0 - [ s0 = [ &_50 <- res'0._p0 = ([%#schecked_ops'32] (110: Int8.t)) ] s1 - | s1 = any [ br0 -> {_50 = false} (! bb49) | br1 -> {_50} (! bb48) ] ] - | bb48 = s0 [ s0 = [ &_49 <- res'0._p1 = ([%#schecked_ops'33] false) ] s1 | s1 = bb50 ] - | bb49 = s0 [ s0 = [ &_49 <- [%#schecked_ops'34] false ] s1 | s1 = bb50 ] - | bb50 = any [ br0 -> {_49 = false} (! bb51) | br1 -> {_49} (! bb53) ] - | bb53 = s0 - [ s0 = overflowing_sub {[%#schecked_ops'35] (-120: Int8.t)} {[%#schecked_ops'36] (10: Int8.t)} + | s1 = bb37 ] + | bb37 = s0 + [ s0 = [ &_49 <- res'0._p0 = ([%#schecked_ops'31] (110: Int8.t)) ] s1 + | s1 = any [ br0 -> {_49 = false} (! bb42) | br1 -> {_49} (! bb38) ] ] + | bb38 = s0 + [ s0 = [ &_51 <- res'0._p1 = ([%#schecked_ops'32] false) ] s1 + | s1 = any [ br0 -> {_51 = false} (! bb42) | br1 -> {_51} (! bb39) ] ] + | bb39 = s0 + [ s0 = overflowing_sub {[%#schecked_ops'33] (-120: Int8.t)} {[%#schecked_ops'34] (10: Int8.t)} (fun (_ret: tuple) -> [ &res'1 <- _ret ] s1) - | s1 = bb54 ] - | bb54 = s0 - [ s0 = [ &_57 <- res'1._p0 = ([%#schecked_ops'37] (126: Int8.t)) ] s1 - | s1 = any [ br0 -> {_57 = false} (! bb56) | br1 -> {_57} (! bb55) ] ] - | bb55 = s0 [ s0 = [ &_56 <- res'1._p1 ] s1 | s1 = bb57 ] - | bb56 = s0 [ s0 = [ &_56 <- [%#schecked_ops'39] false ] s1 | s1 = bb57 ] - | bb57 = any [ br0 -> {_56 = false} (! bb58) | br1 -> {_56} (! bb60) ] - | bb60 = return''0 {_0} - | bb58 = {[%#schecked_ops'40] false} any - | bb51 = {[%#schecked_ops'41] false} any - | bb44 = {[%#schecked_ops'42] false} any - | bb37 = {[%#schecked_ops'43] false} any - | bb33 = {[%#schecked_ops'44] false} any - | bb29 = {[%#schecked_ops'45] false} any - | bb25 = {[%#schecked_ops'46] false} any - | bb21 = {[%#schecked_ops'47] false} any - | bb17 = {[%#schecked_ops'48] false} any - | bb13 = {[%#schecked_ops'49] false} any - | bb8 = {[%#schecked_ops'50] false} any - | bb3 = {[%#schecked_ops'51] false} any ] + | s1 = bb43 ] + | bb43 = s0 + [ s0 = [ &_56 <- res'1._p0 = ([%#schecked_ops'35] (126: Int8.t)) ] s1 + | s1 = any [ br0 -> {_56 = false} (! bb48) | br1 -> {_56} (! bb44) ] ] + | bb44 = s0 [ s0 = [ &_58 <- res'1._p1 ] s1 | s1 = any [ br0 -> {_58 = false} (! bb48) | br1 -> {_58} (! bb45) ] ] + | bb45 = return''0 {_0} + | bb48 = {[%#schecked_ops'37] false} any + | bb42 = {[%#schecked_ops'38] false} any + | bb36 = {[%#schecked_ops'39] false} any + | bb30 = {[%#schecked_ops'40] false} any + | bb27 = {[%#schecked_ops'41] false} any + | bb24 = {[%#schecked_ops'42] false} any + | bb21 = {[%#schecked_ops'43] false} any + | bb18 = {[%#schecked_ops'44] false} any + | bb15 = {[%#schecked_ops'45] false} any + | bb12 = {[%#schecked_ops'46] false} any + | bb8 = {[%#schecked_ops'47] false} any + | bb4 = {[%#schecked_ops'48] false} any ] [ & _0: () = Any.any_l () | & _2: bool = Any.any_l () | & _3: Int8.t = Any.any_l () @@ -2440,13 +2401,13 @@ module M_checked_ops__test_i8_sub_example [#"checked_ops.rs" 197 0 197 28] | & _38: Int8.t = Any.any_l () | & res: tuple = Any.any_l () | & _42: bool = Any.any_l () - | & _43: bool = Any.any_l () + | & _44: bool = Any.any_l () | & res'0: tuple = Any.any_l () | & _49: bool = Any.any_l () - | & _50: bool = Any.any_l () + | & _51: bool = Any.any_l () | & res'1: tuple = Any.any_l () | & _56: bool = Any.any_l () - | & _57: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] + | & _58: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end module M_checked_ops__test_i8_sub_overflow_pos [#"checked_ops.rs" 220 0 220 38] let%span schecked_ops = "checked_ops.rs" 221 12 221 20 @@ -2459,12 +2420,11 @@ module M_checked_ops__test_i8_sub_overflow_pos [#"checked_ops.rs" 220 0 220 38] let%span schecked_ops'6 = "checked_ops.rs" 225 21 225 24 let%span schecked_ops'7 = "checked_ops.rs" 225 31 225 32 let%span schecked_ops'8 = "checked_ops.rs" 225 45 225 49 - let%span schecked_ops'9 = "checked_ops.rs" 225 12 225 49 - let%span schecked_ops'10 = "checked_ops.rs" 225 12 225 49 - let%span schecked_ops'11 = "checked_ops.rs" 223 12 223 46 - let%span schecked_ops'12 = "checked_ops.rs" 222 12 222 51 - let%span schecked_ops'13 = "checked_ops.rs" 221 12 221 45 - let%span schecked_ops'14 = "checked_ops.rs" 219 11 219 17 + let%span schecked_ops'9 = "checked_ops.rs" 225 4 225 50 + let%span schecked_ops'10 = "checked_ops.rs" 223 4 223 47 + let%span schecked_ops'11 = "checked_ops.rs" 222 4 222 52 + let%span schecked_ops'12 = "checked_ops.rs" 221 4 221 46 + let%span schecked_ops'13 = "checked_ops.rs" 219 11 219 17 let%span snum = "../../creusot-contracts/src/std/num.rs" 223 20 224 89 let%span snum'0 = "../../creusot-contracts/src/std/num.rs" 227 26 227 87 let%span snum'1 = "../../creusot-contracts/src/std/num.rs" 233 26 233 48 @@ -2527,43 +2487,41 @@ module M_checked_ops__test_i8_sub_overflow_pos [#"checked_ops.rs" 220 0 220 38] meta "select_lsinst" "all" let rec test_i8_sub_overflow_pos [#"checked_ops.rs" 220 0 220 38] (a: Int8.t) (return' (x: ())) = - {[@expl:test_i8_sub_overflow_pos requires] [%#schecked_ops'14] Int8.to_int a > 0} + {[@expl:test_i8_sub_overflow_pos requires] [%#schecked_ops'13] Int8.to_int a > 0} (! bb0 [ bb0 = s0 [ s0 = checked_sub {[%#schecked_ops] (-128: Int8.t)} {a'0} (fun (_ret: t_Option) -> [ &_6 <- _ret ] s1) | s1 = bb1 ] | bb1 = s0 [ s0 = is_none {_6} (fun (_ret: bool) -> [ &_4 <- _ret ] s1) | s1 = bb2 ] - | bb2 = any [ br0 -> {_4 = false} (! bb3) | br1 -> {_4} (! bb5) ] - | bb5 = s0 + | bb2 = any [ br0 -> {_4 = false} (! bb4) | br1 -> {_4} (! bb3) ] + | bb3 = s0 [ s0 = wrapping_sub {[%#schecked_ops'0] (-128: Int8.t)} {a'0} (fun (_ret: Int8.t) -> [ &_11 <- _ret ] s1) - | s1 = bb6 ] - | bb6 = s0 + | s1 = bb5 ] + | bb5 = s0 [ s0 = Int8.sub {[%#schecked_ops'1] (127: Int8.t)} {a'0} (fun (_ret: Int8.t) -> [ &_14 <- _ret ] s1) | s1 = Int8.add {_14} {[%#schecked_ops'2] (1: Int8.t)} (fun (_ret: Int8.t) -> [ &_13 <- _ret ] s2) | s2 = [ &_10 <- _11 = _13 ] s3 - | s3 = any [ br0 -> {_10 = false} (! bb7) | br1 -> {_10} (! bb9) ] ] - | bb9 = s0 + | s3 = any [ br0 -> {_10 = false} (! bb7) | br1 -> {_10} (! bb6) ] ] + | bb6 = s0 [ s0 = saturating_sub {[%#schecked_ops'3] (-128: Int8.t)} {a'0} (fun (_ret: Int8.t) -> [ &_19 <- _ret ] s1) - | s1 = bb10 ] - | bb10 = s0 + | s1 = bb8 ] + | bb8 = s0 [ s0 = [ &_18 <- _19 = ([%#schecked_ops'4] (-128: Int8.t)) ] s1 - | s1 = any [ br0 -> {_18 = false} (! bb11) | br1 -> {_18} (! bb13) ] ] - | bb13 = s0 + | s1 = any [ br0 -> {_18 = false} (! bb10) | br1 -> {_18} (! bb9) ] ] + | bb9 = s0 [ s0 = overflowing_sub {[%#schecked_ops'5] (-128: Int8.t)} {a'0} (fun (_ret: tuple) -> [ &res <- _ret ] s1) - | s1 = bb14 ] - | bb14 = s0 - [ s0 = Int8.sub {[%#schecked_ops'6] (127: Int8.t)} {a'0} (fun (_ret: Int8.t) -> [ &_29 <- _ret ] s1) - | s1 = Int8.add {_29} {[%#schecked_ops'7] (1: Int8.t)} (fun (_ret: Int8.t) -> [ &_28 <- _ret ] s2) - | s2 = [ &_26 <- res._p0 = _28 ] s3 - | s3 = any [ br0 -> {_26 = false} (! bb16) | br1 -> {_26} (! bb15) ] ] - | bb15 = s0 [ s0 = [ &_25 <- res._p1 ] s1 | s1 = bb17 ] - | bb16 = s0 [ s0 = [ &_25 <- [%#schecked_ops'9] false ] s1 | s1 = bb17 ] - | bb17 = any [ br0 -> {_25 = false} (! bb18) | br1 -> {_25} (! bb20) ] - | bb20 = return''0 {_0} - | bb18 = {[%#schecked_ops'10] false} any - | bb11 = {[%#schecked_ops'11] false} any - | bb7 = {[%#schecked_ops'12] false} any - | bb3 = {[%#schecked_ops'13] false} any ] + | s1 = bb11 ] + | bb11 = s0 + [ s0 = Int8.sub {[%#schecked_ops'6] (127: Int8.t)} {a'0} (fun (_ret: Int8.t) -> [ &_28 <- _ret ] s1) + | s1 = Int8.add {_28} {[%#schecked_ops'7] (1: Int8.t)} (fun (_ret: Int8.t) -> [ &_27 <- _ret ] s2) + | s2 = [ &_25 <- res._p0 = _27 ] s3 + | s3 = any [ br0 -> {_25 = false} (! bb16) | br1 -> {_25} (! bb12) ] ] + | bb12 = s0 [ s0 = [ &_30 <- res._p1 ] s1 | s1 = any [ br0 -> {_30 = false} (! bb16) | br1 -> {_30} (! bb13) ] ] + | bb13 = return''0 {_0} + | bb16 = {[%#schecked_ops'9] false} any + | bb10 = {[%#schecked_ops'10] false} any + | bb7 = {[%#schecked_ops'11] false} any + | bb4 = {[%#schecked_ops'12] false} any ] [ & _0: () = Any.any_l () | & a'0: Int8.t = a | & _4: bool = Any.any_l () @@ -2576,9 +2534,9 @@ module M_checked_ops__test_i8_sub_overflow_pos [#"checked_ops.rs" 220 0 220 38] | & _19: Int8.t = Any.any_l () | & res: tuple = Any.any_l () | & _25: bool = Any.any_l () - | & _26: bool = Any.any_l () + | & _27: Int8.t = Any.any_l () | & _28: Int8.t = Any.any_l () - | & _29: Int8.t = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] + | & _30: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end module M_checked_ops__test_i8_sub_overflow_neg [#"checked_ops.rs" 230 0 230 38] let%span schecked_ops = "checked_ops.rs" 231 12 231 17 @@ -2591,12 +2549,11 @@ module M_checked_ops__test_i8_sub_overflow_neg [#"checked_ops.rs" 230 0 230 38] let%span schecked_ops'6 = "checked_ops.rs" 235 23 235 24 let%span schecked_ops'7 = "checked_ops.rs" 235 32 235 35 let%span schecked_ops'8 = "checked_ops.rs" 235 48 235 52 - let%span schecked_ops'9 = "checked_ops.rs" 235 12 235 52 - let%span schecked_ops'10 = "checked_ops.rs" 235 12 235 52 - let%span schecked_ops'11 = "checked_ops.rs" 233 12 233 42 - let%span schecked_ops'12 = "checked_ops.rs" 232 12 232 51 - let%span schecked_ops'13 = "checked_ops.rs" 231 12 231 42 - let%span schecked_ops'14 = "checked_ops.rs" 229 11 229 17 + let%span schecked_ops'9 = "checked_ops.rs" 235 4 235 53 + let%span schecked_ops'10 = "checked_ops.rs" 233 4 233 43 + let%span schecked_ops'11 = "checked_ops.rs" 232 4 232 52 + let%span schecked_ops'12 = "checked_ops.rs" 231 4 231 43 + let%span schecked_ops'13 = "checked_ops.rs" 229 11 229 17 let%span snum = "../../creusot-contracts/src/std/num.rs" 223 20 224 89 let%span snum'0 = "../../creusot-contracts/src/std/num.rs" 227 26 227 87 let%span snum'1 = "../../creusot-contracts/src/std/num.rs" 233 26 233 48 @@ -2659,45 +2616,43 @@ module M_checked_ops__test_i8_sub_overflow_neg [#"checked_ops.rs" 230 0 230 38] meta "select_lsinst" "all" let rec test_i8_sub_overflow_neg [#"checked_ops.rs" 230 0 230 38] (a: Int8.t) (return' (x: ())) = - {[@expl:test_i8_sub_overflow_neg requires] [%#schecked_ops'14] Int8.to_int a < 0} + {[@expl:test_i8_sub_overflow_neg requires] [%#schecked_ops'13] Int8.to_int a < 0} (! bb0 [ bb0 = s0 [ s0 = checked_sub {[%#schecked_ops] (127: Int8.t)} {a'0} (fun (_ret: t_Option) -> [ &_6 <- _ret ] s1) | s1 = bb1 ] | bb1 = s0 [ s0 = is_none {_6} (fun (_ret: bool) -> [ &_4 <- _ret ] s1) | s1 = bb2 ] - | bb2 = any [ br0 -> {_4 = false} (! bb3) | br1 -> {_4} (! bb5) ] - | bb5 = s0 + | bb2 = any [ br0 -> {_4 = false} (! bb4) | br1 -> {_4} (! bb3) ] + | bb3 = s0 [ s0 = wrapping_sub {[%#schecked_ops'0] (127: Int8.t)} {a'0} (fun (_ret: Int8.t) -> [ &_11 <- _ret ] s1) - | s1 = bb6 ] - | bb6 = s0 + | s1 = bb5 ] + | bb5 = s0 [ s0 = Int8.add {[%#schecked_ops'1] (2: Int8.t)} {a'0} (fun (_ret: Int8.t) -> [ &_15 <- _ret ] s1) | s1 = Int8.neg {_15} (fun (_ret: Int8.t) -> [ &_14 <- _ret ] s2) | s2 = Int8.sub {_14} {[%#schecked_ops'2] (127: Int8.t)} (fun (_ret: Int8.t) -> [ &_13 <- _ret ] s3) | s3 = [ &_10 <- _11 = _13 ] s4 - | s4 = any [ br0 -> {_10 = false} (! bb7) | br1 -> {_10} (! bb9) ] ] - | bb9 = s0 + | s4 = any [ br0 -> {_10 = false} (! bb7) | br1 -> {_10} (! bb6) ] ] + | bb6 = s0 [ s0 = saturating_sub {[%#schecked_ops'3] (127: Int8.t)} {a'0} (fun (_ret: Int8.t) -> [ &_20 <- _ret ] s1) - | s1 = bb10 ] - | bb10 = s0 + | s1 = bb8 ] + | bb8 = s0 [ s0 = [ &_19 <- _20 = ([%#schecked_ops'4] (127: Int8.t)) ] s1 - | s1 = any [ br0 -> {_19 = false} (! bb11) | br1 -> {_19} (! bb13) ] ] - | bb13 = s0 + | s1 = any [ br0 -> {_19 = false} (! bb10) | br1 -> {_19} (! bb9) ] ] + | bb9 = s0 [ s0 = overflowing_sub {[%#schecked_ops'5] (127: Int8.t)} {a'0} (fun (_ret: tuple) -> [ &res <- _ret ] s1) - | s1 = bb14 ] - | bb14 = s0 - [ s0 = Int8.add {[%#schecked_ops'6] (2: Int8.t)} {a'0} (fun (_ret: Int8.t) -> [ &_31 <- _ret ] s1) - | s1 = Int8.neg {_31} (fun (_ret: Int8.t) -> [ &_30 <- _ret ] s2) - | s2 = Int8.sub {_30} {[%#schecked_ops'7] (127: Int8.t)} (fun (_ret: Int8.t) -> [ &_29 <- _ret ] s3) - | s3 = [ &_27 <- res._p0 = _29 ] s4 - | s4 = any [ br0 -> {_27 = false} (! bb16) | br1 -> {_27} (! bb15) ] ] - | bb15 = s0 [ s0 = [ &_26 <- res._p1 ] s1 | s1 = bb17 ] - | bb16 = s0 [ s0 = [ &_26 <- [%#schecked_ops'9] false ] s1 | s1 = bb17 ] - | bb17 = any [ br0 -> {_26 = false} (! bb18) | br1 -> {_26} (! bb20) ] - | bb20 = return''0 {_0} - | bb18 = {[%#schecked_ops'10] false} any - | bb11 = {[%#schecked_ops'11] false} any - | bb7 = {[%#schecked_ops'12] false} any - | bb3 = {[%#schecked_ops'13] false} any ] + | s1 = bb11 ] + | bb11 = s0 + [ s0 = Int8.add {[%#schecked_ops'6] (2: Int8.t)} {a'0} (fun (_ret: Int8.t) -> [ &_30 <- _ret ] s1) + | s1 = Int8.neg {_30} (fun (_ret: Int8.t) -> [ &_29 <- _ret ] s2) + | s2 = Int8.sub {_29} {[%#schecked_ops'7] (127: Int8.t)} (fun (_ret: Int8.t) -> [ &_28 <- _ret ] s3) + | s3 = [ &_26 <- res._p0 = _28 ] s4 + | s4 = any [ br0 -> {_26 = false} (! bb16) | br1 -> {_26} (! bb12) ] ] + | bb12 = s0 [ s0 = [ &_32 <- res._p1 ] s1 | s1 = any [ br0 -> {_32 = false} (! bb16) | br1 -> {_32} (! bb13) ] ] + | bb13 = return''0 {_0} + | bb16 = {[%#schecked_ops'9] false} any + | bb10 = {[%#schecked_ops'10] false} any + | bb7 = {[%#schecked_ops'11] false} any + | bb4 = {[%#schecked_ops'12] false} any ] [ & _0: () = Any.any_l () | & a'0: Int8.t = a | & _4: bool = Any.any_l () @@ -2711,10 +2666,10 @@ module M_checked_ops__test_i8_sub_overflow_neg [#"checked_ops.rs" 230 0 230 38] | & _20: Int8.t = Any.any_l () | & res: tuple = Any.any_l () | & _26: bool = Any.any_l () - | & _27: bool = Any.any_l () + | & _28: Int8.t = Any.any_l () | & _29: Int8.t = Any.any_l () | & _30: Int8.t = Any.any_l () - | & _31: Int8.t = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] + | & _32: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end module M_checked_ops__test_i8_wrapping_sub [#"checked_ops.rs" 241 0 241 47] let%span schecked_ops = "checked_ops.rs" 240 10 240 84 @@ -2741,8 +2696,8 @@ module M_checked_ops__test_i8_wrapping_sub [#"checked_ops.rs" 241 0 241 47] (! return' {result}) ] end module M_checked_ops__test_i8_overflowing_sub [#"checked_ops.rs" 246 0 246 44] - let%span schecked_ops = "checked_ops.rs" 248 12 248 64 - let%span schecked_ops'0 = "checked_ops.rs" 247 12 247 55 + let%span schecked_ops = "checked_ops.rs" 248 4 248 65 + let%span schecked_ops'0 = "checked_ops.rs" 247 4 247 56 let%span snum = "../../creusot-contracts/src/std/num.rs" 256 20 257 53 let%span snum'0 = "../../creusot-contracts/src/std/num.rs" 263 20 263 102 let%span snum'1 = "../../creusot-contracts/src/std/num.rs" 267 20 267 98 @@ -2794,14 +2749,14 @@ module M_checked_ops__test_i8_overflowing_sub [#"checked_ops.rs" 246 0 246 44] let rec test_i8_overflowing_sub [#"checked_ops.rs" 246 0 246 44] (a: Int8.t) (b: Int8.t) (return' (x: ())) = (! bb0 [ bb0 = s0 [ s0 = overflowing_sub {a'0} {b'0} (fun (_ret: tuple) -> [ &_6 <- _ret ] s1) | s1 = bb1 ] | bb1 = s0 [ s0 = wrapping_sub {a'0} {b'0} (fun (_ret: Int8.t) -> [ &_9 <- _ret ] s1) | s1 = bb2 ] - | bb2 = s0 [ s0 = [ &_4 <- _6._p0 = _9 ] s1 | s1 = any [ br0 -> {_4 = false} (! bb3) | br1 -> {_4} (! bb5) ] ] - | bb5 = s0 [ s0 = overflowing_sub {a'0} {b'0} (fun (_ret: tuple) -> [ &_16 <- _ret ] s1) | s1 = bb6 ] - | bb6 = s0 [ s0 = checked_sub {a'0} {b'0} (fun (_ret: t_Option) -> [ &_21 <- _ret ] s1) | s1 = bb7 ] - | bb7 = s0 [ s0 = is_none {_21} (fun (_ret: bool) -> [ &_19 <- _ret ] s1) | s1 = bb8 ] - | bb8 = s0 [ s0 = [ &_14 <- _16._p1 = _19 ] s1 | s1 = any [ br0 -> {_14 = false} (! bb9) | br1 -> {_14} (! bb11) ] ] - | bb11 = return''0 {_0} + | bb2 = s0 [ s0 = [ &_4 <- _6._p0 = _9 ] s1 | s1 = any [ br0 -> {_4 = false} (! bb4) | br1 -> {_4} (! bb3) ] ] + | bb3 = s0 [ s0 = overflowing_sub {a'0} {b'0} (fun (_ret: tuple) -> [ &_16 <- _ret ] s1) | s1 = bb5 ] + | bb5 = s0 [ s0 = checked_sub {a'0} {b'0} (fun (_ret: t_Option) -> [ &_21 <- _ret ] s1) | s1 = bb6 ] + | bb6 = s0 [ s0 = is_none {_21} (fun (_ret: bool) -> [ &_19 <- _ret ] s1) | s1 = bb7 ] + | bb7 = s0 [ s0 = [ &_14 <- _16._p1 = _19 ] s1 | s1 = any [ br0 -> {_14 = false} (! bb9) | br1 -> {_14} (! bb8) ] ] + | bb8 = return''0 {_0} | bb9 = {[%#schecked_ops] false} any - | bb3 = {[%#schecked_ops'0] false} any ] + | bb4 = {[%#schecked_ops'0] false} any ] [ & _0: () = Any.any_l () | & a'0: Int8.t = a | & b'0: Int8.t = b @@ -2843,29 +2798,26 @@ module M_checked_ops__test_i8_mul_example [#"checked_ops.rs" 252 0 252 28] let%span schecked_ops'25 = "checked_ops.rs" 265 34 265 36 let%span schecked_ops'26 = "checked_ops.rs" 266 21 266 23 let%span schecked_ops'27 = "checked_ops.rs" 266 36 266 41 - let%span schecked_ops'28 = "checked_ops.rs" 266 12 266 41 - let%span schecked_ops'29 = "checked_ops.rs" 267 14 267 18 - let%span schecked_ops'30 = "checked_ops.rs" 267 35 267 37 - let%span schecked_ops'31 = "checked_ops.rs" 268 21 268 24 - let%span schecked_ops'32 = "checked_ops.rs" 268 37 268 41 - let%span schecked_ops'33 = "checked_ops.rs" 268 12 268 41 - let%span schecked_ops'34 = "checked_ops.rs" 269 14 269 18 - let%span schecked_ops'35 = "checked_ops.rs" 269 35 269 38 - let%span schecked_ops'36 = "checked_ops.rs" 270 21 270 23 - let%span schecked_ops'37 = "checked_ops.rs" 270 36 270 40 - let%span schecked_ops'38 = "checked_ops.rs" 270 12 270 40 - let%span schecked_ops'39 = "checked_ops.rs" 270 12 270 40 - let%span schecked_ops'40 = "checked_ops.rs" 268 12 268 41 - let%span schecked_ops'41 = "checked_ops.rs" 266 12 266 41 - let%span schecked_ops'42 = "checked_ops.rs" 263 12 263 44 - let%span schecked_ops'43 = "checked_ops.rs" 262 12 262 42 - let%span schecked_ops'44 = "checked_ops.rs" 261 12 261 40 - let%span schecked_ops'45 = "checked_ops.rs" 259 12 259 40 - let%span schecked_ops'46 = "checked_ops.rs" 258 12 258 40 - let%span schecked_ops'47 = "checked_ops.rs" 257 12 257 38 - let%span schecked_ops'48 = "checked_ops.rs" 255 12 255 43 - let%span schecked_ops'49 = "checked_ops.rs" 254 12 254 42 - let%span schecked_ops'50 = "checked_ops.rs" 253 12 253 46 + let%span schecked_ops'28 = "checked_ops.rs" 267 14 267 18 + let%span schecked_ops'29 = "checked_ops.rs" 267 35 267 37 + let%span schecked_ops'30 = "checked_ops.rs" 268 21 268 24 + let%span schecked_ops'31 = "checked_ops.rs" 268 37 268 41 + let%span schecked_ops'32 = "checked_ops.rs" 269 14 269 18 + let%span schecked_ops'33 = "checked_ops.rs" 269 35 269 38 + let%span schecked_ops'34 = "checked_ops.rs" 270 21 270 23 + let%span schecked_ops'35 = "checked_ops.rs" 270 36 270 40 + let%span schecked_ops'36 = "checked_ops.rs" 270 4 270 41 + let%span schecked_ops'37 = "checked_ops.rs" 268 4 268 42 + let%span schecked_ops'38 = "checked_ops.rs" 266 4 266 42 + let%span schecked_ops'39 = "checked_ops.rs" 263 4 263 45 + let%span schecked_ops'40 = "checked_ops.rs" 262 4 262 43 + let%span schecked_ops'41 = "checked_ops.rs" 261 4 261 41 + let%span schecked_ops'42 = "checked_ops.rs" 259 4 259 41 + let%span schecked_ops'43 = "checked_ops.rs" 258 4 258 41 + let%span schecked_ops'44 = "checked_ops.rs" 257 4 257 39 + let%span schecked_ops'45 = "checked_ops.rs" 255 4 255 44 + let%span schecked_ops'46 = "checked_ops.rs" 254 4 254 43 + let%span schecked_ops'47 = "checked_ops.rs" 253 4 253 47 let%span snum = "../../creusot-contracts/src/std/num.rs" 223 20 224 89 let%span snum'0 = "../../creusot-contracts/src/std/num.rs" 227 26 227 87 let%span snum'1 = "../../creusot-contracts/src/std/num.rs" 233 26 233 48 @@ -2940,104 +2892,100 @@ module M_checked_ops__test_i8_mul_example [#"checked_ops.rs" 252 0 252 28] | bb1 = s0 [ s0 = unwrap {_4} (fun (_ret: Int8.t) -> [ &_3 <- _ret ] s1) | s1 = bb2 ] | bb2 = s0 [ s0 = [ &_2 <- _3 = ([%#schecked_ops'1] (50: Int8.t)) ] s1 - | s1 = any [ br0 -> {_2 = false} (! bb3) | br1 -> {_2} (! bb5) ] ] - | bb5 = s0 + | s1 = any [ br0 -> {_2 = false} (! bb4) | br1 -> {_2} (! bb3) ] ] + | bb3 = s0 [ s0 = checked_mul {[%#schecked_ops'2] (50: Int8.t)} {[%#schecked_ops'3] (10: Int8.t)} (fun (_ret: t_Option) -> [ &_9 <- _ret ] s1) - | s1 = bb6 ] - | bb6 = s0 [ s0 = is_none {_9} (fun (_ret: bool) -> [ &_7 <- _ret ] s1) | s1 = bb7 ] - | bb7 = any [ br0 -> {_7 = false} (! bb8) | br1 -> {_7} (! bb10) ] - | bb10 = s0 + | s1 = bb5 ] + | bb5 = s0 [ s0 = is_none {_9} (fun (_ret: bool) -> [ &_7 <- _ret ] s1) | s1 = bb6 ] + | bb6 = any [ br0 -> {_7 = false} (! bb8) | br1 -> {_7} (! bb7) ] + | bb7 = s0 [ s0 = checked_mul {[%#schecked_ops'4] (50: Int8.t)} {[%#schecked_ops'5] (-10: Int8.t)} (fun (_ret: t_Option) -> [ &_14 <- _ret ] s1) - | s1 = bb11 ] - | bb11 = s0 [ s0 = is_none {_14} (fun (_ret: bool) -> [ &_12 <- _ret ] s1) | s1 = bb12 ] - | bb12 = any [ br0 -> {_12 = false} (! bb13) | br1 -> {_12} (! bb15) ] - | bb15 = s0 + | s1 = bb9 ] + | bb9 = s0 [ s0 = is_none {_14} (fun (_ret: bool) -> [ &_12 <- _ret ] s1) | s1 = bb10 ] + | bb10 = any [ br0 -> {_12 = false} (! bb12) | br1 -> {_12} (! bb11) ] + | bb11 = s0 [ s0 = wrapping_mul {[%#schecked_ops'6] (5: Int8.t)} {[%#schecked_ops'7] (10: Int8.t)} (fun (_ret: Int8.t) -> [ &_18 <- _ret ] s1) - | s1 = bb16 ] - | bb16 = s0 + | s1 = bb13 ] + | bb13 = s0 [ s0 = [ &_17 <- _18 = ([%#schecked_ops'8] (50: Int8.t)) ] s1 - | s1 = any [ br0 -> {_17 = false} (! bb17) | br1 -> {_17} (! bb19) ] ] - | bb19 = s0 + | s1 = any [ br0 -> {_17 = false} (! bb15) | br1 -> {_17} (! bb14) ] ] + | bb14 = s0 [ s0 = wrapping_mul {[%#schecked_ops'9] (50: Int8.t)} {[%#schecked_ops'10] (10: Int8.t)} (fun (_ret: Int8.t) -> [ &_22 <- _ret ] s1) - | s1 = bb20 ] - | bb20 = s0 + | s1 = bb16 ] + | bb16 = s0 [ s0 = [ &_21 <- _22 = ([%#schecked_ops'11] (-12: Int8.t)) ] s1 - | s1 = any [ br0 -> {_21 = false} (! bb21) | br1 -> {_21} (! bb23) ] ] - | bb23 = s0 + | s1 = any [ br0 -> {_21 = false} (! bb18) | br1 -> {_21} (! bb17) ] ] + | bb17 = s0 [ s0 = wrapping_mul {[%#schecked_ops'12] (50: Int8.t)} {[%#schecked_ops'13] (-10: Int8.t)} (fun (_ret: Int8.t) -> [ &_26 <- _ret ] s1) - | s1 = bb24 ] - | bb24 = s0 + | s1 = bb19 ] + | bb19 = s0 [ s0 = [ &_25 <- _26 = ([%#schecked_ops'14] (12: Int8.t)) ] s1 - | s1 = any [ br0 -> {_25 = false} (! bb25) | br1 -> {_25} (! bb27) ] ] - | bb27 = s0 + | s1 = any [ br0 -> {_25 = false} (! bb21) | br1 -> {_25} (! bb20) ] ] + | bb20 = s0 [ s0 = saturating_mul {[%#schecked_ops'15] (5: Int8.t)} {[%#schecked_ops'16] (10: Int8.t)} (fun (_ret: Int8.t) -> [ &_30 <- _ret ] s1) - | s1 = bb28 ] - | bb28 = s0 + | s1 = bb22 ] + | bb22 = s0 [ s0 = [ &_29 <- _30 = ([%#schecked_ops'17] (50: Int8.t)) ] s1 - | s1 = any [ br0 -> {_29 = false} (! bb29) | br1 -> {_29} (! bb31) ] ] - | bb31 = s0 + | s1 = any [ br0 -> {_29 = false} (! bb24) | br1 -> {_29} (! bb23) ] ] + | bb23 = s0 [ s0 = saturating_mul {[%#schecked_ops'18] (50: Int8.t)} {[%#schecked_ops'19] (10: Int8.t)} (fun (_ret: Int8.t) -> [ &_34 <- _ret ] s1) - | s1 = bb32 ] - | bb32 = s0 + | s1 = bb25 ] + | bb25 = s0 [ s0 = [ &_33 <- _34 = ([%#schecked_ops'20] (127: Int8.t)) ] s1 - | s1 = any [ br0 -> {_33 = false} (! bb33) | br1 -> {_33} (! bb35) ] ] - | bb35 = s0 + | s1 = any [ br0 -> {_33 = false} (! bb27) | br1 -> {_33} (! bb26) ] ] + | bb26 = s0 [ s0 = saturating_mul {[%#schecked_ops'21] (50: Int8.t)} {[%#schecked_ops'22] (-10: Int8.t)} (fun (_ret: Int8.t) -> [ &_38 <- _ret ] s1) - | s1 = bb36 ] - | bb36 = s0 + | s1 = bb28 ] + | bb28 = s0 [ s0 = [ &_37 <- _38 = ([%#schecked_ops'23] (-128: Int8.t)) ] s1 - | s1 = any [ br0 -> {_37 = false} (! bb37) | br1 -> {_37} (! bb39) ] ] - | bb39 = s0 + | s1 = any [ br0 -> {_37 = false} (! bb30) | br1 -> {_37} (! bb29) ] ] + | bb29 = s0 [ s0 = overflowing_mul {[%#schecked_ops'24] (5: Int8.t)} {[%#schecked_ops'25] (10: Int8.t)} (fun (_ret: tuple) -> [ &res <- _ret ] s1) - | s1 = bb40 ] - | bb40 = s0 - [ s0 = [ &_43 <- res._p0 = ([%#schecked_ops'26] (50: Int8.t)) ] s1 - | s1 = any [ br0 -> {_43 = false} (! bb42) | br1 -> {_43} (! bb41) ] ] - | bb41 = s0 [ s0 = [ &_42 <- res._p1 = ([%#schecked_ops'27] false) ] s1 | s1 = bb43 ] - | bb42 = s0 [ s0 = [ &_42 <- [%#schecked_ops'28] false ] s1 | s1 = bb43 ] - | bb43 = any [ br0 -> {_42 = false} (! bb44) | br1 -> {_42} (! bb46) ] - | bb46 = s0 - [ s0 = overflowing_mul {[%#schecked_ops'29] (50: Int8.t)} {[%#schecked_ops'30] (10: Int8.t)} + | s1 = bb31 ] + | bb31 = s0 + [ s0 = [ &_42 <- res._p0 = ([%#schecked_ops'26] (50: Int8.t)) ] s1 + | s1 = any [ br0 -> {_42 = false} (! bb36) | br1 -> {_42} (! bb32) ] ] + | bb32 = s0 + [ s0 = [ &_44 <- res._p1 = ([%#schecked_ops'27] false) ] s1 + | s1 = any [ br0 -> {_44 = false} (! bb36) | br1 -> {_44} (! bb33) ] ] + | bb33 = s0 + [ s0 = overflowing_mul {[%#schecked_ops'28] (50: Int8.t)} {[%#schecked_ops'29] (10: Int8.t)} (fun (_ret: tuple) -> [ &res'0 <- _ret ] s1) - | s1 = bb47 ] - | bb47 = s0 - [ s0 = [ &_50 <- res'0._p0 = ([%#schecked_ops'31] (-12: Int8.t)) ] s1 - | s1 = any [ br0 -> {_50 = false} (! bb49) | br1 -> {_50} (! bb48) ] ] - | bb48 = s0 [ s0 = [ &_49 <- res'0._p1 ] s1 | s1 = bb50 ] - | bb49 = s0 [ s0 = [ &_49 <- [%#schecked_ops'33] false ] s1 | s1 = bb50 ] - | bb50 = any [ br0 -> {_49 = false} (! bb51) | br1 -> {_49} (! bb53) ] - | bb53 = s0 - [ s0 = overflowing_mul {[%#schecked_ops'34] (50: Int8.t)} {[%#schecked_ops'35] (-10: Int8.t)} + | s1 = bb37 ] + | bb37 = s0 + [ s0 = [ &_49 <- res'0._p0 = ([%#schecked_ops'30] (-12: Int8.t)) ] s1 + | s1 = any [ br0 -> {_49 = false} (! bb42) | br1 -> {_49} (! bb38) ] ] + | bb38 = s0 [ s0 = [ &_51 <- res'0._p1 ] s1 | s1 = any [ br0 -> {_51 = false} (! bb42) | br1 -> {_51} (! bb39) ] ] + | bb39 = s0 + [ s0 = overflowing_mul {[%#schecked_ops'32] (50: Int8.t)} {[%#schecked_ops'33] (-10: Int8.t)} (fun (_ret: tuple) -> [ &res'1 <- _ret ] s1) - | s1 = bb54 ] - | bb54 = s0 - [ s0 = [ &_57 <- res'1._p0 = ([%#schecked_ops'36] (12: Int8.t)) ] s1 - | s1 = any [ br0 -> {_57 = false} (! bb56) | br1 -> {_57} (! bb55) ] ] - | bb55 = s0 [ s0 = [ &_56 <- res'1._p1 ] s1 | s1 = bb57 ] - | bb56 = s0 [ s0 = [ &_56 <- [%#schecked_ops'38] false ] s1 | s1 = bb57 ] - | bb57 = any [ br0 -> {_56 = false} (! bb58) | br1 -> {_56} (! bb60) ] - | bb60 = return''0 {_0} - | bb58 = {[%#schecked_ops'39] false} any - | bb51 = {[%#schecked_ops'40] false} any - | bb44 = {[%#schecked_ops'41] false} any - | bb37 = {[%#schecked_ops'42] false} any - | bb33 = {[%#schecked_ops'43] false} any - | bb29 = {[%#schecked_ops'44] false} any - | bb25 = {[%#schecked_ops'45] false} any - | bb21 = {[%#schecked_ops'46] false} any - | bb17 = {[%#schecked_ops'47] false} any - | bb13 = {[%#schecked_ops'48] false} any - | bb8 = {[%#schecked_ops'49] false} any - | bb3 = {[%#schecked_ops'50] false} any ] + | s1 = bb43 ] + | bb43 = s0 + [ s0 = [ &_56 <- res'1._p0 = ([%#schecked_ops'34] (12: Int8.t)) ] s1 + | s1 = any [ br0 -> {_56 = false} (! bb48) | br1 -> {_56} (! bb44) ] ] + | bb44 = s0 [ s0 = [ &_58 <- res'1._p1 ] s1 | s1 = any [ br0 -> {_58 = false} (! bb48) | br1 -> {_58} (! bb45) ] ] + | bb45 = return''0 {_0} + | bb48 = {[%#schecked_ops'36] false} any + | bb42 = {[%#schecked_ops'37] false} any + | bb36 = {[%#schecked_ops'38] false} any + | bb30 = {[%#schecked_ops'39] false} any + | bb27 = {[%#schecked_ops'40] false} any + | bb24 = {[%#schecked_ops'41] false} any + | bb21 = {[%#schecked_ops'42] false} any + | bb18 = {[%#schecked_ops'43] false} any + | bb15 = {[%#schecked_ops'44] false} any + | bb12 = {[%#schecked_ops'45] false} any + | bb8 = {[%#schecked_ops'46] false} any + | bb4 = {[%#schecked_ops'47] false} any ] [ & _0: () = Any.any_l () | & _2: bool = Any.any_l () | & _3: Int8.t = Any.any_l () @@ -3060,13 +3008,13 @@ module M_checked_ops__test_i8_mul_example [#"checked_ops.rs" 252 0 252 28] | & _38: Int8.t = Any.any_l () | & res: tuple = Any.any_l () | & _42: bool = Any.any_l () - | & _43: bool = Any.any_l () + | & _44: bool = Any.any_l () | & res'0: tuple = Any.any_l () | & _49: bool = Any.any_l () - | & _50: bool = Any.any_l () + | & _51: bool = Any.any_l () | & res'1: tuple = Any.any_l () | & _56: bool = Any.any_l () - | & _57: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] + | & _58: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end module M_checked_ops__test_i8_mul_zero [#"checked_ops.rs" 274 0 274 30] let%span schecked_ops = "checked_ops.rs" 275 12 275 15 @@ -3078,11 +3026,10 @@ module M_checked_ops__test_i8_mul_zero [#"checked_ops.rs" 274 0 274 30] let%span schecked_ops'5 = "checked_ops.rs" 278 14 278 17 let%span schecked_ops'6 = "checked_ops.rs" 279 21 279 22 let%span schecked_ops'7 = "checked_ops.rs" 279 35 279 40 - let%span schecked_ops'8 = "checked_ops.rs" 279 12 279 40 - let%span schecked_ops'9 = "checked_ops.rs" 279 12 279 40 - let%span schecked_ops'10 = "checked_ops.rs" 277 12 277 38 - let%span schecked_ops'11 = "checked_ops.rs" 276 12 276 36 - let%span schecked_ops'12 = "checked_ops.rs" 275 12 275 44 + let%span schecked_ops'8 = "checked_ops.rs" 279 4 279 41 + let%span schecked_ops'9 = "checked_ops.rs" 277 4 277 39 + let%span schecked_ops'10 = "checked_ops.rs" 276 4 276 37 + let%span schecked_ops'11 = "checked_ops.rs" 275 4 275 45 let%span snum = "../../creusot-contracts/src/std/num.rs" 223 20 224 89 let%span snum'0 = "../../creusot-contracts/src/std/num.rs" 227 26 227 87 let%span snum'1 = "../../creusot-contracts/src/std/num.rs" 233 26 233 48 @@ -3151,33 +3098,33 @@ module M_checked_ops__test_i8_mul_zero [#"checked_ops.rs" 274 0 274 30] | bb1 = s0 [ s0 = unwrap {_5} (fun (_ret: Int8.t) -> [ &_4 <- _ret ] s1) | s1 = bb2 ] | bb2 = s0 [ s0 = [ &_3 <- _4 = ([%#schecked_ops'0] (0: Int8.t)) ] s1 - | s1 = any [ br0 -> {_3 = false} (! bb3) | br1 -> {_3} (! bb5) ] ] - | bb5 = s0 + | s1 = any [ br0 -> {_3 = false} (! bb4) | br1 -> {_3} (! bb3) ] ] + | bb3 = s0 [ s0 = wrapping_mul {[%#schecked_ops'1] (0: Int8.t)} {a'0} (fun (_ret: Int8.t) -> [ &_10 <- _ret ] s1) - | s1 = bb6 ] - | bb6 = s0 + | s1 = bb5 ] + | bb5 = s0 [ s0 = [ &_9 <- _10 = ([%#schecked_ops'2] (0: Int8.t)) ] s1 - | s1 = any [ br0 -> {_9 = false} (! bb7) | br1 -> {_9} (! bb9) ] ] - | bb9 = s0 + | s1 = any [ br0 -> {_9 = false} (! bb7) | br1 -> {_9} (! bb6) ] ] + | bb6 = s0 [ s0 = saturating_mul {[%#schecked_ops'3] (0: Int8.t)} {a'0} (fun (_ret: Int8.t) -> [ &_15 <- _ret ] s1) - | s1 = bb10 ] - | bb10 = s0 + | s1 = bb8 ] + | bb8 = s0 [ s0 = [ &_14 <- _15 = ([%#schecked_ops'4] (0: Int8.t)) ] s1 - | s1 = any [ br0 -> {_14 = false} (! bb11) | br1 -> {_14} (! bb13) ] ] - | bb13 = s0 + | s1 = any [ br0 -> {_14 = false} (! bb10) | br1 -> {_14} (! bb9) ] ] + | bb9 = s0 [ s0 = overflowing_mul {[%#schecked_ops'5] (0: Int8.t)} {a'0} (fun (_ret: tuple) -> [ &res <- _ret ] s1) - | s1 = bb14 ] - | bb14 = s0 - [ s0 = [ &_22 <- res._p0 = ([%#schecked_ops'6] (0: Int8.t)) ] s1 - | s1 = any [ br0 -> {_22 = false} (! bb16) | br1 -> {_22} (! bb15) ] ] - | bb15 = s0 [ s0 = [ &_21 <- res._p1 = ([%#schecked_ops'7] false) ] s1 | s1 = bb17 ] - | bb16 = s0 [ s0 = [ &_21 <- [%#schecked_ops'8] false ] s1 | s1 = bb17 ] - | bb17 = any [ br0 -> {_21 = false} (! bb18) | br1 -> {_21} (! bb20) ] - | bb20 = return''0 {_0} - | bb18 = {[%#schecked_ops'9] false} any - | bb11 = {[%#schecked_ops'10] false} any - | bb7 = {[%#schecked_ops'11] false} any - | bb3 = {[%#schecked_ops'12] false} any ] + | s1 = bb11 ] + | bb11 = s0 + [ s0 = [ &_21 <- res._p0 = ([%#schecked_ops'6] (0: Int8.t)) ] s1 + | s1 = any [ br0 -> {_21 = false} (! bb16) | br1 -> {_21} (! bb12) ] ] + | bb12 = s0 + [ s0 = [ &_23 <- res._p1 = ([%#schecked_ops'7] false) ] s1 + | s1 = any [ br0 -> {_23 = false} (! bb16) | br1 -> {_23} (! bb13) ] ] + | bb13 = return''0 {_0} + | bb16 = {[%#schecked_ops'8] false} any + | bb10 = {[%#schecked_ops'9] false} any + | bb7 = {[%#schecked_ops'10] false} any + | bb4 = {[%#schecked_ops'11] false} any ] [ & _0: () = Any.any_l () | & a'0: Int8.t = a | & _3: bool = Any.any_l () @@ -3189,11 +3136,11 @@ module M_checked_ops__test_i8_mul_zero [#"checked_ops.rs" 274 0 274 30] | & _15: Int8.t = Any.any_l () | & res: tuple = Any.any_l () | & _21: bool = Any.any_l () - | & _22: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] + | & _23: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end module M_checked_ops__test_i8_overflowing_mul [#"checked_ops.rs" 283 0 283 44] - let%span schecked_ops = "checked_ops.rs" 285 12 285 64 - let%span schecked_ops'0 = "checked_ops.rs" 284 12 284 55 + let%span schecked_ops = "checked_ops.rs" 285 4 285 65 + let%span schecked_ops'0 = "checked_ops.rs" 284 4 284 56 let%span snum = "../../creusot-contracts/src/std/num.rs" 256 20 257 53 let%span snum'0 = "../../creusot-contracts/src/std/num.rs" 263 20 263 102 let%span snum'1 = "../../creusot-contracts/src/std/num.rs" 267 20 267 98 @@ -3245,14 +3192,14 @@ module M_checked_ops__test_i8_overflowing_mul [#"checked_ops.rs" 283 0 283 44] let rec test_i8_overflowing_mul [#"checked_ops.rs" 283 0 283 44] (a: Int8.t) (b: Int8.t) (return' (x: ())) = (! bb0 [ bb0 = s0 [ s0 = overflowing_mul {a'0} {b'0} (fun (_ret: tuple) -> [ &_6 <- _ret ] s1) | s1 = bb1 ] | bb1 = s0 [ s0 = wrapping_mul {a'0} {b'0} (fun (_ret: Int8.t) -> [ &_9 <- _ret ] s1) | s1 = bb2 ] - | bb2 = s0 [ s0 = [ &_4 <- _6._p0 = _9 ] s1 | s1 = any [ br0 -> {_4 = false} (! bb3) | br1 -> {_4} (! bb5) ] ] - | bb5 = s0 [ s0 = overflowing_mul {a'0} {b'0} (fun (_ret: tuple) -> [ &_16 <- _ret ] s1) | s1 = bb6 ] - | bb6 = s0 [ s0 = checked_mul {a'0} {b'0} (fun (_ret: t_Option) -> [ &_21 <- _ret ] s1) | s1 = bb7 ] - | bb7 = s0 [ s0 = is_none {_21} (fun (_ret: bool) -> [ &_19 <- _ret ] s1) | s1 = bb8 ] - | bb8 = s0 [ s0 = [ &_14 <- _16._p1 = _19 ] s1 | s1 = any [ br0 -> {_14 = false} (! bb9) | br1 -> {_14} (! bb11) ] ] - | bb11 = return''0 {_0} + | bb2 = s0 [ s0 = [ &_4 <- _6._p0 = _9 ] s1 | s1 = any [ br0 -> {_4 = false} (! bb4) | br1 -> {_4} (! bb3) ] ] + | bb3 = s0 [ s0 = overflowing_mul {a'0} {b'0} (fun (_ret: tuple) -> [ &_16 <- _ret ] s1) | s1 = bb5 ] + | bb5 = s0 [ s0 = checked_mul {a'0} {b'0} (fun (_ret: t_Option) -> [ &_21 <- _ret ] s1) | s1 = bb6 ] + | bb6 = s0 [ s0 = is_none {_21} (fun (_ret: bool) -> [ &_19 <- _ret ] s1) | s1 = bb7 ] + | bb7 = s0 [ s0 = [ &_14 <- _16._p1 = _19 ] s1 | s1 = any [ br0 -> {_14 = false} (! bb9) | br1 -> {_14} (! bb8) ] ] + | bb8 = return''0 {_0} | bb9 = {[%#schecked_ops] false} any - | bb3 = {[%#schecked_ops'0] false} any ] + | bb4 = {[%#schecked_ops'0] false} any ] [ & _0: () = Any.any_l () | & a'0: Int8.t = a | & b'0: Int8.t = b @@ -3297,30 +3244,27 @@ module M_checked_ops__test_i8_div_example [#"checked_ops.rs" 289 0 289 28] let%span schecked_ops'28 = "checked_ops.rs" 303 34 303 35 let%span schecked_ops'29 = "checked_ops.rs" 304 21 304 22 let%span schecked_ops'30 = "checked_ops.rs" 304 35 304 40 - let%span schecked_ops'31 = "checked_ops.rs" 304 12 304 40 - let%span schecked_ops'32 = "checked_ops.rs" 305 14 305 17 - let%span schecked_ops'33 = "checked_ops.rs" 305 34 305 36 - let%span schecked_ops'34 = "checked_ops.rs" 306 21 306 23 - let%span schecked_ops'35 = "checked_ops.rs" 306 36 306 41 - let%span schecked_ops'36 = "checked_ops.rs" 306 12 306 41 - let%span schecked_ops'37 = "checked_ops.rs" 307 14 307 22 - let%span schecked_ops'38 = "checked_ops.rs" 307 39 307 41 - let%span schecked_ops'39 = "checked_ops.rs" 308 21 308 25 - let%span schecked_ops'40 = "checked_ops.rs" 308 38 308 42 - let%span schecked_ops'41 = "checked_ops.rs" 308 12 308 42 - let%span schecked_ops'42 = "checked_ops.rs" 308 12 308 42 - let%span schecked_ops'43 = "checked_ops.rs" 306 12 306 41 - let%span schecked_ops'44 = "checked_ops.rs" 304 12 304 40 - let%span schecked_ops'45 = "checked_ops.rs" 301 12 301 47 - let%span schecked_ops'46 = "checked_ops.rs" 300 12 300 40 - let%span schecked_ops'47 = "checked_ops.rs" 299 12 299 38 - let%span schecked_ops'48 = "checked_ops.rs" 297 12 297 45 - let%span schecked_ops'49 = "checked_ops.rs" 296 12 296 38 - let%span schecked_ops'50 = "checked_ops.rs" 295 12 295 36 - let%span schecked_ops'51 = "checked_ops.rs" 293 12 293 46 - let%span schecked_ops'52 = "checked_ops.rs" 292 12 292 46 - let%span schecked_ops'53 = "checked_ops.rs" 291 12 291 44 - let%span schecked_ops'54 = "checked_ops.rs" 290 12 290 40 + let%span schecked_ops'31 = "checked_ops.rs" 305 14 305 17 + let%span schecked_ops'32 = "checked_ops.rs" 305 34 305 36 + let%span schecked_ops'33 = "checked_ops.rs" 306 21 306 23 + let%span schecked_ops'34 = "checked_ops.rs" 306 36 306 41 + let%span schecked_ops'35 = "checked_ops.rs" 307 14 307 22 + let%span schecked_ops'36 = "checked_ops.rs" 307 39 307 41 + let%span schecked_ops'37 = "checked_ops.rs" 308 21 308 25 + let%span schecked_ops'38 = "checked_ops.rs" 308 38 308 42 + let%span schecked_ops'39 = "checked_ops.rs" 308 4 308 43 + let%span schecked_ops'40 = "checked_ops.rs" 306 4 306 42 + let%span schecked_ops'41 = "checked_ops.rs" 304 4 304 41 + let%span schecked_ops'42 = "checked_ops.rs" 301 4 301 48 + let%span schecked_ops'43 = "checked_ops.rs" 300 4 300 41 + let%span schecked_ops'44 = "checked_ops.rs" 299 4 299 39 + let%span schecked_ops'45 = "checked_ops.rs" 297 4 297 46 + let%span schecked_ops'46 = "checked_ops.rs" 296 4 296 39 + let%span schecked_ops'47 = "checked_ops.rs" 295 4 295 37 + let%span schecked_ops'48 = "checked_ops.rs" 293 4 293 47 + let%span schecked_ops'49 = "checked_ops.rs" 292 4 292 47 + let%span schecked_ops'50 = "checked_ops.rs" 291 4 291 45 + let%span schecked_ops'51 = "checked_ops.rs" 290 4 290 41 let%span snum = "../../creusot-contracts/src/std/num.rs" 146 26 146 97 let%span snum'0 = "../../creusot-contracts/src/std/num.rs" 148 26 148 83 let%span snum'1 = "../../creusot-contracts/src/std/num.rs" 154 27 154 36 @@ -3397,115 +3341,113 @@ module M_checked_ops__test_i8_div_example [#"checked_ops.rs" 289 0 289 28] (fun (_ret: t_Option) -> [ &_4 <- _ret ] s1) | s1 = bb1 ] | bb1 = s0 [ s0 = is_none {_4} (fun (_ret: bool) -> [ &_2 <- _ret ] s1) | s1 = bb2 ] - | bb2 = any [ br0 -> {_2 = false} (! bb3) | br1 -> {_2} (! bb5) ] - | bb5 = s0 + | bb2 = any [ br0 -> {_2 = false} (! bb4) | br1 -> {_2} (! bb3) ] + | bb3 = s0 [ s0 = checked_div {[%#schecked_ops'1] (5: Int8.t)} {[%#schecked_ops'2] (2: Int8.t)} (fun (_ret: t_Option) -> [ &_9 <- _ret ] s1) - | s1 = bb6 ] - | bb6 = s0 [ s0 = unwrap {_9} (fun (_ret: Int8.t) -> [ &_8 <- _ret ] s1) | s1 = bb7 ] - | bb7 = s0 + | s1 = bb5 ] + | bb5 = s0 [ s0 = unwrap {_9} (fun (_ret: Int8.t) -> [ &_8 <- _ret ] s1) | s1 = bb6 ] + | bb6 = s0 [ s0 = [ &_7 <- _8 = ([%#schecked_ops'3] (2: Int8.t)) ] s1 - | s1 = any [ br0 -> {_7 = false} (! bb8) | br1 -> {_7} (! bb10) ] ] - | bb10 = s0 + | s1 = any [ br0 -> {_7 = false} (! bb8) | br1 -> {_7} (! bb7) ] ] + | bb7 = s0 [ s0 = checked_div {[%#schecked_ops'4] (5: Int8.t)} {[%#schecked_ops'5] (-2: Int8.t)} (fun (_ret: t_Option) -> [ &_14 <- _ret ] s1) - | s1 = bb11 ] - | bb11 = s0 [ s0 = unwrap {_14} (fun (_ret: Int8.t) -> [ &_13 <- _ret ] s1) | s1 = bb12 ] - | bb12 = s0 + | s1 = bb9 ] + | bb9 = s0 [ s0 = unwrap {_14} (fun (_ret: Int8.t) -> [ &_13 <- _ret ] s1) | s1 = bb10 ] + | bb10 = s0 [ s0 = [ &_12 <- _13 = ([%#schecked_ops'6] (-2: Int8.t)) ] s1 - | s1 = any [ br0 -> {_12 = false} (! bb13) | br1 -> {_12} (! bb15) ] ] - | bb15 = s0 + | s1 = any [ br0 -> {_12 = false} (! bb12) | br1 -> {_12} (! bb11) ] ] + | bb11 = s0 [ s0 = checked_div {[%#schecked_ops'7] (-128: Int8.t)} {[%#schecked_ops'8] (-1: Int8.t)} (fun (_ret: t_Option) -> [ &_19 <- _ret ] s1) - | s1 = bb16 ] - | bb16 = s0 [ s0 = is_none {_19} (fun (_ret: bool) -> [ &_17 <- _ret ] s1) | s1 = bb17 ] - | bb17 = any [ br0 -> {_17 = false} (! bb18) | br1 -> {_17} (! bb20) ] - | bb20 = s0 + | s1 = bb13 ] + | bb13 = s0 [ s0 = is_none {_19} (fun (_ret: bool) -> [ &_17 <- _ret ] s1) | s1 = bb14 ] + | bb14 = any [ br0 -> {_17 = false} (! bb16) | br1 -> {_17} (! bb15) ] + | bb15 = s0 [ s0 = wrapping_div {[%#schecked_ops'9] (5: Int8.t)} {[%#schecked_ops'10] (2: Int8.t)} (fun (_ret: Int8.t) -> [ &_23 <- _ret ] s1) - | s1 = bb21 ] - | bb21 = s0 + | s1 = bb17 ] + | bb17 = s0 [ s0 = [ &_22 <- _23 = ([%#schecked_ops'11] (2: Int8.t)) ] s1 - | s1 = any [ br0 -> {_22 = false} (! bb22) | br1 -> {_22} (! bb24) ] ] - | bb24 = s0 + | s1 = any [ br0 -> {_22 = false} (! bb19) | br1 -> {_22} (! bb18) ] ] + | bb18 = s0 [ s0 = wrapping_div {[%#schecked_ops'12] (5: Int8.t)} {[%#schecked_ops'13] (-2: Int8.t)} (fun (_ret: Int8.t) -> [ &_27 <- _ret ] s1) - | s1 = bb25 ] - | bb25 = s0 + | s1 = bb20 ] + | bb20 = s0 [ s0 = [ &_26 <- _27 = ([%#schecked_ops'14] (-2: Int8.t)) ] s1 - | s1 = any [ br0 -> {_26 = false} (! bb26) | br1 -> {_26} (! bb28) ] ] - | bb28 = s0 + | s1 = any [ br0 -> {_26 = false} (! bb22) | br1 -> {_26} (! bb21) ] ] + | bb21 = s0 [ s0 = wrapping_div {[%#schecked_ops'15] (-128: Int8.t)} {[%#schecked_ops'16] (-1: Int8.t)} (fun (_ret: Int8.t) -> [ &_31 <- _ret ] s1) - | s1 = bb29 ] - | bb29 = s0 + | s1 = bb23 ] + | bb23 = s0 [ s0 = [ &_30 <- _31 = ([%#schecked_ops'17] (-128: Int8.t)) ] s1 - | s1 = any [ br0 -> {_30 = false} (! bb30) | br1 -> {_30} (! bb32) ] ] - | bb32 = s0 + | s1 = any [ br0 -> {_30 = false} (! bb25) | br1 -> {_30} (! bb24) ] ] + | bb24 = s0 [ s0 = saturating_div {[%#schecked_ops'18] (5: Int8.t)} {[%#schecked_ops'19] (2: Int8.t)} (fun (_ret: Int8.t) -> [ &_35 <- _ret ] s1) - | s1 = bb33 ] - | bb33 = s0 + | s1 = bb26 ] + | bb26 = s0 [ s0 = [ &_34 <- _35 = ([%#schecked_ops'20] (2: Int8.t)) ] s1 - | s1 = any [ br0 -> {_34 = false} (! bb34) | br1 -> {_34} (! bb36) ] ] - | bb36 = s0 + | s1 = any [ br0 -> {_34 = false} (! bb28) | br1 -> {_34} (! bb27) ] ] + | bb27 = s0 [ s0 = saturating_div {[%#schecked_ops'21] (5: Int8.t)} {[%#schecked_ops'22] (-2: Int8.t)} (fun (_ret: Int8.t) -> [ &_39 <- _ret ] s1) - | s1 = bb37 ] - | bb37 = s0 + | s1 = bb29 ] + | bb29 = s0 [ s0 = [ &_38 <- _39 = ([%#schecked_ops'23] (-2: Int8.t)) ] s1 - | s1 = any [ br0 -> {_38 = false} (! bb38) | br1 -> {_38} (! bb40) ] ] - | bb40 = s0 + | s1 = any [ br0 -> {_38 = false} (! bb31) | br1 -> {_38} (! bb30) ] ] + | bb30 = s0 [ s0 = saturating_div {[%#schecked_ops'24] (-128: Int8.t)} {[%#schecked_ops'25] (-1: Int8.t)} (fun (_ret: Int8.t) -> [ &_43 <- _ret ] s1) - | s1 = bb41 ] - | bb41 = s0 + | s1 = bb32 ] + | bb32 = s0 [ s0 = [ &_42 <- _43 = ([%#schecked_ops'26] (-128: Int8.t)) ] s1 - | s1 = any [ br0 -> {_42 = false} (! bb42) | br1 -> {_42} (! bb44) ] ] - | bb44 = s0 + | s1 = any [ br0 -> {_42 = false} (! bb34) | br1 -> {_42} (! bb33) ] ] + | bb33 = s0 [ s0 = overflowing_div {[%#schecked_ops'27] (5: Int8.t)} {[%#schecked_ops'28] (2: Int8.t)} (fun (_ret: tuple) -> [ &res <- _ret ] s1) - | s1 = bb45 ] - | bb45 = s0 - [ s0 = [ &_48 <- res._p0 = ([%#schecked_ops'29] (2: Int8.t)) ] s1 - | s1 = any [ br0 -> {_48 = false} (! bb47) | br1 -> {_48} (! bb46) ] ] - | bb46 = s0 [ s0 = [ &_47 <- res._p1 = ([%#schecked_ops'30] false) ] s1 | s1 = bb48 ] - | bb47 = s0 [ s0 = [ &_47 <- [%#schecked_ops'31] false ] s1 | s1 = bb48 ] - | bb48 = any [ br0 -> {_47 = false} (! bb49) | br1 -> {_47} (! bb51) ] - | bb51 = s0 - [ s0 = overflowing_div {[%#schecked_ops'32] (5: Int8.t)} {[%#schecked_ops'33] (-2: Int8.t)} + | s1 = bb35 ] + | bb35 = s0 + [ s0 = [ &_47 <- res._p0 = ([%#schecked_ops'29] (2: Int8.t)) ] s1 + | s1 = any [ br0 -> {_47 = false} (! bb40) | br1 -> {_47} (! bb36) ] ] + | bb36 = s0 + [ s0 = [ &_49 <- res._p1 = ([%#schecked_ops'30] false) ] s1 + | s1 = any [ br0 -> {_49 = false} (! bb40) | br1 -> {_49} (! bb37) ] ] + | bb37 = s0 + [ s0 = overflowing_div {[%#schecked_ops'31] (5: Int8.t)} {[%#schecked_ops'32] (-2: Int8.t)} (fun (_ret: tuple) -> [ &res'0 <- _ret ] s1) - | s1 = bb52 ] - | bb52 = s0 - [ s0 = [ &_55 <- res'0._p0 = ([%#schecked_ops'34] (-2: Int8.t)) ] s1 - | s1 = any [ br0 -> {_55 = false} (! bb54) | br1 -> {_55} (! bb53) ] ] - | bb53 = s0 [ s0 = [ &_54 <- res'0._p1 = ([%#schecked_ops'35] false) ] s1 | s1 = bb55 ] - | bb54 = s0 [ s0 = [ &_54 <- [%#schecked_ops'36] false ] s1 | s1 = bb55 ] - | bb55 = any [ br0 -> {_54 = false} (! bb56) | br1 -> {_54} (! bb58) ] - | bb58 = s0 - [ s0 = overflowing_div {[%#schecked_ops'37] (-128: Int8.t)} {[%#schecked_ops'38] (-1: Int8.t)} + | s1 = bb41 ] + | bb41 = s0 + [ s0 = [ &_54 <- res'0._p0 = ([%#schecked_ops'33] (-2: Int8.t)) ] s1 + | s1 = any [ br0 -> {_54 = false} (! bb46) | br1 -> {_54} (! bb42) ] ] + | bb42 = s0 + [ s0 = [ &_56 <- res'0._p1 = ([%#schecked_ops'34] false) ] s1 + | s1 = any [ br0 -> {_56 = false} (! bb46) | br1 -> {_56} (! bb43) ] ] + | bb43 = s0 + [ s0 = overflowing_div {[%#schecked_ops'35] (-128: Int8.t)} {[%#schecked_ops'36] (-1: Int8.t)} (fun (_ret: tuple) -> [ &res'1 <- _ret ] s1) - | s1 = bb59 ] - | bb59 = s0 - [ s0 = [ &_62 <- res'1._p0 = ([%#schecked_ops'39] (-128: Int8.t)) ] s1 - | s1 = any [ br0 -> {_62 = false} (! bb61) | br1 -> {_62} (! bb60) ] ] - | bb60 = s0 [ s0 = [ &_61 <- res'1._p1 ] s1 | s1 = bb62 ] - | bb61 = s0 [ s0 = [ &_61 <- [%#schecked_ops'41] false ] s1 | s1 = bb62 ] - | bb62 = any [ br0 -> {_61 = false} (! bb63) | br1 -> {_61} (! bb65) ] - | bb65 = return''0 {_0} - | bb63 = {[%#schecked_ops'42] false} any - | bb56 = {[%#schecked_ops'43] false} any - | bb49 = {[%#schecked_ops'44] false} any - | bb42 = {[%#schecked_ops'45] false} any - | bb38 = {[%#schecked_ops'46] false} any - | bb34 = {[%#schecked_ops'47] false} any - | bb30 = {[%#schecked_ops'48] false} any - | bb26 = {[%#schecked_ops'49] false} any - | bb22 = {[%#schecked_ops'50] false} any - | bb18 = {[%#schecked_ops'51] false} any - | bb13 = {[%#schecked_ops'52] false} any - | bb8 = {[%#schecked_ops'53] false} any - | bb3 = {[%#schecked_ops'54] false} any ] + | s1 = bb47 ] + | bb47 = s0 + [ s0 = [ &_61 <- res'1._p0 = ([%#schecked_ops'37] (-128: Int8.t)) ] s1 + | s1 = any [ br0 -> {_61 = false} (! bb52) | br1 -> {_61} (! bb48) ] ] + | bb48 = s0 [ s0 = [ &_63 <- res'1._p1 ] s1 | s1 = any [ br0 -> {_63 = false} (! bb52) | br1 -> {_63} (! bb49) ] ] + | bb49 = return''0 {_0} + | bb52 = {[%#schecked_ops'39] false} any + | bb46 = {[%#schecked_ops'40] false} any + | bb40 = {[%#schecked_ops'41] false} any + | bb34 = {[%#schecked_ops'42] false} any + | bb31 = {[%#schecked_ops'43] false} any + | bb28 = {[%#schecked_ops'44] false} any + | bb25 = {[%#schecked_ops'45] false} any + | bb22 = {[%#schecked_ops'46] false} any + | bb19 = {[%#schecked_ops'47] false} any + | bb16 = {[%#schecked_ops'48] false} any + | bb12 = {[%#schecked_ops'49] false} any + | bb8 = {[%#schecked_ops'50] false} any + | bb4 = {[%#schecked_ops'51] false} any ] [ & _0: () = Any.any_l () | & _2: bool = Any.any_l () | & _4: t_Option = Any.any_l () @@ -3531,13 +3473,13 @@ module M_checked_ops__test_i8_div_example [#"checked_ops.rs" 289 0 289 28] | & _43: Int8.t = Any.any_l () | & res: tuple = Any.any_l () | & _47: bool = Any.any_l () - | & _48: bool = Any.any_l () + | & _49: bool = Any.any_l () | & res'0: tuple = Any.any_l () | & _54: bool = Any.any_l () - | & _55: bool = Any.any_l () + | & _56: bool = Any.any_l () | & res'1: tuple = Any.any_l () | & _61: bool = Any.any_l () - | & _62: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] + | & _63: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end module M_checked_ops__test_i8_div_no_overflow [#"checked_ops.rs" 313 0 313 44] let%span schecked_ops = "checked_ops.rs" 314 41 314 46 @@ -3545,12 +3487,11 @@ module M_checked_ops__test_i8_div_no_overflow [#"checked_ops.rs" 313 0 313 44] let%span schecked_ops'1 = "checked_ops.rs" 316 35 316 40 let%span schecked_ops'2 = "checked_ops.rs" 318 21 318 26 let%span schecked_ops'3 = "checked_ops.rs" 318 39 318 44 - let%span schecked_ops'4 = "checked_ops.rs" 318 12 318 44 - let%span schecked_ops'5 = "checked_ops.rs" 318 12 318 44 - let%span schecked_ops'6 = "checked_ops.rs" 316 12 316 40 - let%span schecked_ops'7 = "checked_ops.rs" 315 12 315 38 - let%span schecked_ops'8 = "checked_ops.rs" 314 12 314 46 - let%span schecked_ops'9 = "checked_ops.rs" 312 11 312 46 + let%span schecked_ops'4 = "checked_ops.rs" 318 4 318 45 + let%span schecked_ops'5 = "checked_ops.rs" 316 4 316 41 + let%span schecked_ops'6 = "checked_ops.rs" 315 4 315 39 + let%span schecked_ops'7 = "checked_ops.rs" 314 4 314 47 + let%span schecked_ops'8 = "checked_ops.rs" 312 11 312 46 let%span snum = "../../creusot-contracts/src/std/num.rs" 146 26 146 97 let%span snum'0 = "../../creusot-contracts/src/std/num.rs" 148 26 148 83 let%span snum'1 = "../../creusot-contracts/src/std/num.rs" 154 27 154 36 @@ -3619,7 +3560,7 @@ module M_checked_ops__test_i8_div_no_overflow [#"checked_ops.rs" 313 0 313 44] meta "select_lsinst" "all" let rec test_i8_div_no_overflow [#"checked_ops.rs" 313 0 313 44] (a: Int8.t) (b: Int8.t) (return' (x: ())) = - {[@expl:test_i8_div_no_overflow requires] [%#schecked_ops'9] Int8.to_int b <> 0 + {[@expl:test_i8_div_no_overflow requires] [%#schecked_ops'8] Int8.to_int b <> 0 /\ (Int8.to_int a <> - 128 \/ Int8.to_int b <> - 1)} (! bb0 [ bb0 = s0 [ s0 = checked_div {a'0} {b'0} (fun (_ret: t_Option) -> [ &_7 <- _ret ] s1) | s1 = bb1 ] @@ -3639,66 +3580,66 @@ module M_checked_ops__test_i8_div_no_overflow [#"checked_ops.rs" 313 0 313 44] | bb4 = s0 [ s0 = Int8.div {_11} {_12} (fun (_ret: Int8.t) -> [ &_10 <- _ret ] s1) | s1 = [ &_5 <- _6 = _10 ] s2 - | s2 = any [ br0 -> {_5 = false} (! bb5) | br1 -> {_5} (! bb7) ] ] - | bb7 = s0 [ s0 = wrapping_div {a'0} {b'0} (fun (_ret: Int8.t) -> [ &_20 <- _ret ] s1) | s1 = bb8 ] - | bb8 = s0 + | s2 = any [ br0 -> {_5 = false} (! bb6) | br1 -> {_5} (! bb5) ] ] + | bb5 = s0 [ s0 = wrapping_div {a'0} {b'0} (fun (_ret: Int8.t) -> [ &_20 <- _ret ] s1) | s1 = bb7 ] + | bb7 = s0 [ s0 = [ &_24 <- a'0 ] s1 | s1 = [ &_25 <- b'0 ] s2 | s2 = [ &_26 <- _25 = ([%#schecked_ops'0] (0: Int8.t)) ] s3 | s3 = {[@expl:division by zero] [%#schecked_ops'0] not _26} s4 - | s4 = bb9 ] - | bb9 = s0 + | s4 = bb8 ] + | bb8 = s0 [ s0 = [ &_27 <- _25 = ([%#schecked_ops'0] (-1: Int8.t)) ] s1 | s1 = [ &_28 <- _24 = ([%#schecked_ops'0] (-128: Int8.t)) ] s2 | s2 = [ &_29 <- Bool.bw_and _27 _28 ] s3 | s3 = {[@expl:Div overflow] [%#schecked_ops'0] not _29} s4 - | s4 = bb10 ] - | bb10 = s0 + | s4 = bb9 ] + | bb9 = s0 [ s0 = Int8.div {_24} {_25} (fun (_ret: Int8.t) -> [ &_23 <- _ret ] s1) | s1 = [ &_19 <- _20 = _23 ] s2 - | s2 = any [ br0 -> {_19 = false} (! bb11) | br1 -> {_19} (! bb13) ] ] - | bb13 = s0 [ s0 = saturating_div {a'0} {b'0} (fun (_ret: Int8.t) -> [ &_33 <- _ret ] s1) | s1 = bb14 ] - | bb14 = s0 + | s2 = any [ br0 -> {_19 = false} (! bb11) | br1 -> {_19} (! bb10) ] ] + | bb10 = s0 [ s0 = saturating_div {a'0} {b'0} (fun (_ret: Int8.t) -> [ &_33 <- _ret ] s1) | s1 = bb12 ] + | bb12 = s0 [ s0 = [ &_37 <- a'0 ] s1 | s1 = [ &_38 <- b'0 ] s2 | s2 = [ &_39 <- _38 = ([%#schecked_ops'1] (0: Int8.t)) ] s3 | s3 = {[@expl:division by zero] [%#schecked_ops'1] not _39} s4 - | s4 = bb15 ] - | bb15 = s0 + | s4 = bb13 ] + | bb13 = s0 [ s0 = [ &_40 <- _38 = ([%#schecked_ops'1] (-1: Int8.t)) ] s1 | s1 = [ &_41 <- _37 = ([%#schecked_ops'1] (-128: Int8.t)) ] s2 | s2 = [ &_42 <- Bool.bw_and _40 _41 ] s3 | s3 = {[@expl:Div overflow] [%#schecked_ops'1] not _42} s4 - | s4 = bb16 ] - | bb16 = s0 + | s4 = bb14 ] + | bb14 = s0 [ s0 = Int8.div {_37} {_38} (fun (_ret: Int8.t) -> [ &_36 <- _ret ] s1) | s1 = [ &_32 <- _33 = _36 ] s2 - | s2 = any [ br0 -> {_32 = false} (! bb17) | br1 -> {_32} (! bb19) ] ] - | bb19 = s0 [ s0 = overflowing_div {a'0} {b'0} (fun (_ret: tuple) -> [ &res <- _ret ] s1) | s1 = bb20 ] + | s2 = any [ br0 -> {_32 = false} (! bb16) | br1 -> {_32} (! bb15) ] ] + | bb15 = s0 [ s0 = overflowing_div {a'0} {b'0} (fun (_ret: tuple) -> [ &res <- _ret ] s1) | s1 = bb17 ] + | bb17 = s0 + [ s0 = [ &_51 <- a'0 ] s1 + | s1 = [ &_52 <- b'0 ] s2 + | s2 = [ &_53 <- _52 = ([%#schecked_ops'2] (0: Int8.t)) ] s3 + | s3 = {[@expl:division by zero] [%#schecked_ops'2] not _53} s4 + | s4 = bb18 ] + | bb18 = s0 + [ s0 = [ &_54 <- _52 = ([%#schecked_ops'2] (-1: Int8.t)) ] s1 + | s1 = [ &_55 <- _51 = ([%#schecked_ops'2] (-128: Int8.t)) ] s2 + | s2 = [ &_56 <- Bool.bw_and _54 _55 ] s3 + | s3 = {[@expl:Div overflow] [%#schecked_ops'2] not _56} s4 + | s4 = bb19 ] + | bb19 = s0 + [ s0 = Int8.div {_51} {_52} (fun (_ret: Int8.t) -> [ &_50 <- _ret ] s1) + | s1 = [ &_48 <- res._p0 = _50 ] s2 + | s2 = any [ br0 -> {_48 = false} (! bb24) | br1 -> {_48} (! bb20) ] ] | bb20 = s0 - [ s0 = [ &_52 <- a'0 ] s1 - | s1 = [ &_53 <- b'0 ] s2 - | s2 = [ &_54 <- _53 = ([%#schecked_ops'2] (0: Int8.t)) ] s3 - | s3 = {[@expl:division by zero] [%#schecked_ops'2] not _54} s4 - | s4 = bb21 ] - | bb21 = s0 - [ s0 = [ &_55 <- _53 = ([%#schecked_ops'2] (-1: Int8.t)) ] s1 - | s1 = [ &_56 <- _52 = ([%#schecked_ops'2] (-128: Int8.t)) ] s2 - | s2 = [ &_57 <- Bool.bw_and _55 _56 ] s3 - | s3 = {[@expl:Div overflow] [%#schecked_ops'2] not _57} s4 - | s4 = bb22 ] - | bb22 = s0 - [ s0 = Int8.div {_52} {_53} (fun (_ret: Int8.t) -> [ &_51 <- _ret ] s1) - | s1 = [ &_49 <- res._p0 = _51 ] s2 - | s2 = any [ br0 -> {_49 = false} (! bb24) | br1 -> {_49} (! bb23) ] ] - | bb23 = s0 [ s0 = [ &_48 <- res._p1 = ([%#schecked_ops'3] false) ] s1 | s1 = bb25 ] - | bb24 = s0 [ s0 = [ &_48 <- [%#schecked_ops'4] false ] s1 | s1 = bb25 ] - | bb25 = any [ br0 -> {_48 = false} (! bb26) | br1 -> {_48} (! bb28) ] - | bb28 = return''0 {_0} - | bb26 = {[%#schecked_ops'5] false} any - | bb17 = {[%#schecked_ops'6] false} any - | bb11 = {[%#schecked_ops'7] false} any - | bb5 = {[%#schecked_ops'8] false} any ] + [ s0 = [ &_57 <- res._p1 = ([%#schecked_ops'3] false) ] s1 + | s1 = any [ br0 -> {_57 = false} (! bb24) | br1 -> {_57} (! bb21) ] ] + | bb21 = return''0 {_0} + | bb24 = {[%#schecked_ops'4] false} any + | bb16 = {[%#schecked_ops'5] false} any + | bb11 = {[%#schecked_ops'6] false} any + | bb6 = {[%#schecked_ops'7] false} any ] [ & _0: () = Any.any_l () | & a'0: Int8.t = a | & b'0: Int8.t = b @@ -3732,10 +3673,10 @@ module M_checked_ops__test_i8_div_no_overflow [#"checked_ops.rs" 313 0 313 44] | & _42: bool = Any.any_l () | & res: tuple = Any.any_l () | & _48: bool = Any.any_l () - | & _49: bool = Any.any_l () + | & _50: Int8.t = Any.any_l () | & _51: Int8.t = Any.any_l () | & _52: Int8.t = Any.any_l () - | & _53: Int8.t = Any.any_l () + | & _53: bool = Any.any_l () | & _54: bool = Any.any_l () | & _55: bool = Any.any_l () | & _56: bool = Any.any_l () @@ -3743,7 +3684,7 @@ module M_checked_ops__test_i8_div_no_overflow [#"checked_ops.rs" 313 0 313 44] end module M_checked_ops__test_i8_div_zero [#"checked_ops.rs" 322 0 322 30] let%span schecked_ops = "checked_ops.rs" 323 26 323 27 - let%span schecked_ops'0 = "checked_ops.rs" 323 12 323 38 + let%span schecked_ops'0 = "checked_ops.rs" 323 4 323 39 let%span snum = "../../creusot-contracts/src/std/num.rs" 146 26 146 97 let%span snum'0 = "../../creusot-contracts/src/std/num.rs" 148 26 148 83 let%span soption = "../../creusot-contracts/src/std/option.rs" 79 26 79 51 @@ -3773,9 +3714,9 @@ module M_checked_ops__test_i8_div_zero [#"checked_ops.rs" 322 0 322 30] [ bb0 = s0 [ s0 = checked_div {a'0} {[%#schecked_ops] (0: Int8.t)} (fun (_ret: t_Option) -> [ &_5 <- _ret ] s1) | s1 = bb1 ] | bb1 = s0 [ s0 = is_none {_5} (fun (_ret: bool) -> [ &_3 <- _ret ] s1) | s1 = bb2 ] - | bb2 = any [ br0 -> {_3 = false} (! bb3) | br1 -> {_3} (! bb5) ] - | bb5 = return''0 {_0} - | bb3 = {[%#schecked_ops'0] false} any ] + | bb2 = any [ br0 -> {_3 = false} (! bb4) | br1 -> {_3} (! bb3) ] + | bb3 = return''0 {_0} + | bb4 = {[%#schecked_ops'0] false} any ] [ & _0: () = Any.any_l () | & a'0: Int8.t = a | & _3: bool = Any.any_l () | & _5: t_Option = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end diff --git a/tests/should_succeed/closures/inference.coma b/tests/should_succeed/closures/inference.coma index a20ff7f0b6..1b2731c790 100644 --- a/tests/should_succeed/closures/inference.coma +++ b/tests/should_succeed/closures/inference.coma @@ -255,9 +255,9 @@ module M_inference__closure_fn [#"inference.rs" 22 0 22 19] let%span sinference = "inference.rs" 25 32 25 33 let%span sinference'0 = "inference.rs" 26 41 26 42 let%span sinference'1 = "inference.rs" 27 37 27 38 - let%span sinference'2 = "inference.rs" 27 12 27 38 - let%span sinference'3 = "inference.rs" 26 12 26 42 - let%span sinference'4 = "inference.rs" 25 12 25 33 + let%span sinference'2 = "inference.rs" 27 4 27 39 + let%span sinference'3 = "inference.rs" 26 4 26 43 + let%span sinference'4 = "inference.rs" 25 4 25 34 let%span sinference'5 = "inference.rs" 23 29 23 30 let%span sinference'6 = "inference.rs" 4 0 4 36 let%span sinference'7 = "inference.rs" 5 0 5 44 @@ -385,25 +385,25 @@ module M_inference__closure_fn [#"inference.rs" 22 0 22 19] [ bb0 = s0 [ s0 = [ &f <- () ] s1 | s1 = call_with_one {f} (fun (_ret: Int32.t) -> [ &_4 <- _ret ] s2) | s2 = bb1 ] | bb1 = s0 [ s0 = [ &_3 <- _4 = ([%#sinference] (2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_3 = false} (! bb2) | br1 -> {_3} (! bb4) ] ] - | bb4 = s0 + | s1 = any [ br0 -> {_3 = false} (! bb3) | br1 -> {_3} (! bb2) ] ] + | bb2 = s0 [ s0 = MutBorrow.borrow_mut <()> {f} (fun (_ret: MutBorrow.t ()) -> [ &_11 <- _ret ] [ &f <- _ret.final ] s1) | s1 = MutBorrow.borrow_final <()> {_11.current} {MutBorrow.get_id _11} (fun (_ret: MutBorrow.t ()) -> [ &_10 <- _ret ] [ &_11 <- { _11 with current = _ret.final } ] s2) | s2 = call_with_one_mut {_10} (fun (_ret: Int32.t) -> [ &_9 <- _ret ] s3) - | s3 = bb5 ] - | bb5 = s0 + | s3 = bb4 ] + | bb4 = s0 [ s0 = -{resolve'1 _11}- s1 | s1 = [ &_8 <- _9 = ([%#sinference'0] (2: Int32.t)) ] s2 - | s2 = any [ br0 -> {_8 = false} (! bb6) | br1 -> {_8} (! bb8) ] ] - | bb8 = s0 [ s0 = call_with_one_once {f} (fun (_ret: Int32.t) -> [ &_15 <- _ret ] s1) | s1 = bb9 ] - | bb9 = s0 + | s2 = any [ br0 -> {_8 = false} (! bb6) | br1 -> {_8} (! bb5) ] ] + | bb5 = s0 [ s0 = call_with_one_once {f} (fun (_ret: Int32.t) -> [ &_15 <- _ret ] s1) | s1 = bb7 ] + | bb7 = s0 [ s0 = [ &_14 <- _15 = ([%#sinference'1] (2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_14 = false} (! bb10) | br1 -> {_14} (! bb12) ] ] - | bb12 = return''0 {_0} - | bb10 = {[%#sinference'2] false} any + | s1 = any [ br0 -> {_14 = false} (! bb9) | br1 -> {_14} (! bb8) ] ] + | bb8 = return''0 {_0} + | bb9 = {[%#sinference'2] false} any | bb6 = {[%#sinference'3] false} any - | bb2 = {[%#sinference'4] false} any ] + | bb3 = {[%#sinference'4] false} any ] [ & _0: () = Any.any_l () | & f: () = Any.any_l () | & _3: bool = Any.any_l () @@ -420,9 +420,9 @@ module M_inference__closure_fn_mut [#"inference.rs" 30 0 30 23] let%span sinference'0 = "inference.rs" 37 41 37 42 let%span sinference'1 = "inference.rs" 38 37 38 38 let%span sinference'2 = "inference.rs" 39 17 39 18 - let%span sinference'3 = "inference.rs" 39 12 39 18 - let%span sinference'4 = "inference.rs" 38 12 38 38 - let%span sinference'5 = "inference.rs" 37 12 37 42 + let%span sinference'3 = "inference.rs" 39 4 39 19 + let%span sinference'4 = "inference.rs" 38 4 38 39 + let%span sinference'5 = "inference.rs" 37 4 37 43 let%span sinference'6 = "inference.rs" 10 11 10 37 let%span sinference'7 = "inference.rs" 11 10 11 53 let%span sinference'8 = "inference.rs" 16 0 16 36 @@ -553,18 +553,18 @@ module M_inference__closure_fn_mut [#"inference.rs" 30 0 30 23] | bb1 = s0 [ s0 = -{resolve'0 _8}- s1 | s1 = [ &_5 <- _6 = ([%#sinference'0] (1: Int32.t)) ] s2 - | s2 = any [ br0 -> {_5 = false} (! bb2) | br1 -> {_5} (! bb4) ] ] - | bb4 = s0 [ s0 = call_with_one_once {f} (fun (_ret: Int32.t) -> [ &_12 <- _ret ] s1) | s1 = bb5 ] - | bb5 = s0 + | s2 = any [ br0 -> {_5 = false} (! bb3) | br1 -> {_5} (! bb2) ] ] + | bb2 = s0 [ s0 = call_with_one_once {f} (fun (_ret: Int32.t) -> [ &_12 <- _ret ] s1) | s1 = bb4 ] + | bb4 = s0 [ s0 = [ &_11 <- _12 = ([%#sinference'1] (2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_11 = false} (! bb6) | br1 -> {_11} (! bb8) ] ] - | bb8 = s0 + | s1 = any [ br0 -> {_11 = false} (! bb6) | br1 -> {_11} (! bb5) ] ] + | bb5 = s0 [ s0 = [ &_16 <- y = ([%#sinference'2] (2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_16 = false} (! bb9) | br1 -> {_16} (! bb11) ] ] - | bb11 = return''0 {_0'0} - | bb9 = {[%#sinference'3] false} any + | s1 = any [ br0 -> {_16 = false} (! bb8) | br1 -> {_16} (! bb7) ] ] + | bb7 = return''0 {_0'0} + | bb8 = {[%#sinference'3] false} any | bb6 = {[%#sinference'4] false} any - | bb2 = s0 [ s0 = -{resolve'3 f}- s1 | s1 = {[%#sinference'5] false} any ] ] + | bb3 = s0 [ s0 = -{resolve'3 f}- s1 | s1 = {[%#sinference'5] false} any ] ] [ & _0'0: () = Any.any_l () | & y: Int32.t = Any.any_l () | & f: closure0 = Any.any_l () @@ -582,8 +582,8 @@ module M_inference__closure_fn_once [#"inference.rs" 42 0 42 24] let%span sinference'0 = "inference.rs" 44 16 44 17 let%span sinference'1 = "inference.rs" 51 37 51 38 let%span sinference'2 = "inference.rs" 52 17 52 18 - let%span sinference'3 = "inference.rs" 52 12 52 18 - let%span sinference'4 = "inference.rs" 51 12 51 38 + let%span sinference'3 = "inference.rs" 52 4 52 19 + let%span sinference'4 = "inference.rs" 51 4 51 39 let%span sinference'5 = "inference.rs" 16 0 16 36 let%span sinference'6 = "inference.rs" 17 0 17 49 let%span sinference'7 = "inference.rs" 45 12 45 25 @@ -640,13 +640,13 @@ module M_inference__closure_fn_once [#"inference.rs" 42 0 42 24] | s3 = bb2 ] | bb2 = s0 [ s0 = [ &_5 <- _6 = ([%#sinference'1] (3: Int32.t)) ] s1 - | s1 = any [ br0 -> {_5 = false} (! bb3) | br1 -> {_5} (! bb5) ] ] - | bb5 = s0 + | s1 = any [ br0 -> {_5 = false} (! bb4) | br1 -> {_5} (! bb3) ] ] + | bb3 = s0 [ s0 = [ &_10 <- z = ([%#sinference'2] (0: Int32.t)) ] s1 - | s1 = any [ br0 -> {_10 = false} (! bb6) | br1 -> {_10} (! bb10) ] ] - | bb10 = return''0 {_0'0} + | s1 = any [ br0 -> {_10 = false} (! bb6) | br1 -> {_10} (! bb8) ] ] + | bb8 = return''0 {_0'0} | bb6 = {[%#sinference'3] false} any - | bb3 = {[%#sinference'4] false} any ] + | bb4 = {[%#sinference'4] false} any ] [ & _0'0: () = Any.any_l () | & y: Int32.t = Any.any_l () | & z: Int32.t = Any.any_l () diff --git a/tests/should_succeed/duration.coma b/tests/should_succeed/duration.coma index 5318743dcd..ba05f2b5e5 100644 --- a/tests/should_succeed/duration.coma +++ b/tests/should_succeed/duration.coma @@ -13,34 +13,34 @@ module M_duration__test_duration [#"duration.rs" 7 0 7 22] let%span sduration'10 = "duration.rs" 21 18 21 36 let%span sduration'11 = "duration.rs" 23 39 23 40 let%span sduration'12 = "duration.rs" 24 18 24 31 - let%span sduration'13 = "duration.rs" 29 12 29 13 - let%span sduration'14 = "duration.rs" 30 12 30 13 - let%span sduration'15 = "duration.rs" 31 12 31 13 - let%span sduration'16 = "duration.rs" 32 12 32 13 - let%span sduration'17 = "duration.rs" 44 28 44 29 - let%span sduration'18 = "duration.rs" 45 31 45 33 - let%span sduration'19 = "duration.rs" 47 31 47 32 - let%span sduration'20 = "duration.rs" 48 31 48 33 - let%span sduration'21 = "duration.rs" 52 18 52 35 - let%span sduration'22 = "duration.rs" 53 18 53 39 - let%span sduration'23 = "duration.rs" 48 12 48 44 - let%span sduration'24 = "duration.rs" 47 12 47 43 - let%span sduration'25 = "duration.rs" 45 12 45 44 - let%span sduration'26 = "duration.rs" 44 12 44 40 - let%span sduration'27 = "duration.rs" 42 12 42 50 - let%span sduration'28 = "duration.rs" 41 12 41 45 - let%span sduration'29 = "duration.rs" 39 12 39 48 - let%span sduration'30 = "duration.rs" 38 12 38 45 - let%span sduration'31 = "duration.rs" 36 12 36 64 - let%span sduration'32 = "duration.rs" 35 12 35 68 - let%span sduration'33 = "duration.rs" 34 12 34 68 - let%span sduration'34 = "duration.rs" 32 12 32 38 - let%span sduration'35 = "duration.rs" 31 12 31 39 - let%span sduration'36 = "duration.rs" 30 12 30 39 - let%span sduration'37 = "duration.rs" 29 12 29 33 - let%span sduration'38 = "duration.rs" 27 12 27 29 - let%span sduration'39 = "duration.rs" 26 12 26 26 - let%span sduration'40 = "duration.rs" 10 12 10 32 + let%span sduration'13 = "duration.rs" 27 4 27 30 + let%span sduration'14 = "duration.rs" 29 12 29 13 + let%span sduration'15 = "duration.rs" 30 12 30 13 + let%span sduration'16 = "duration.rs" 31 12 31 13 + let%span sduration'17 = "duration.rs" 32 12 32 13 + let%span sduration'18 = "duration.rs" 44 28 44 29 + let%span sduration'19 = "duration.rs" 45 31 45 33 + let%span sduration'20 = "duration.rs" 47 31 47 32 + let%span sduration'21 = "duration.rs" 48 31 48 33 + let%span sduration'22 = "duration.rs" 52 18 52 35 + let%span sduration'23 = "duration.rs" 53 18 53 39 + let%span sduration'24 = "duration.rs" 48 4 48 45 + let%span sduration'25 = "duration.rs" 47 4 47 44 + let%span sduration'26 = "duration.rs" 45 4 45 45 + let%span sduration'27 = "duration.rs" 44 4 44 41 + let%span sduration'28 = "duration.rs" 42 4 42 51 + let%span sduration'29 = "duration.rs" 41 4 41 46 + let%span sduration'30 = "duration.rs" 39 4 39 49 + let%span sduration'31 = "duration.rs" 38 4 38 46 + let%span sduration'32 = "duration.rs" 36 4 36 65 + let%span sduration'33 = "duration.rs" 35 4 35 69 + let%span sduration'34 = "duration.rs" 34 4 34 69 + let%span sduration'35 = "duration.rs" 32 4 32 39 + let%span sduration'36 = "duration.rs" 31 4 31 40 + let%span sduration'37 = "duration.rs" 30 4 30 40 + let%span sduration'38 = "duration.rs" 29 4 29 34 + let%span sduration'39 = "duration.rs" 26 4 26 27 + let%span sduration'40 = "duration.rs" 10 4 10 33 let%span stime = "../../creusot-contracts/src/std/time.rs" 71 27 71 69 let%span stime'0 = "../../creusot-contracts/src/std/time.rs" 72 26 72 66 let%span stime'1 = "../../creusot-contracts/src/std/time.rs" 12 14 12 77 @@ -299,122 +299,122 @@ module M_duration__test_duration [#"duration.rs" 7 0 7 22] | s2 = bb2 ] | bb2 = s0 [ s0 = [ &_5 <- _6 = ([%#sduration'2] (0: UInt128.t)) ] s1 - | s1 = any [ br0 -> {_5 = false} (! bb3) | br1 -> {_5} (! bb5) ] ] - | bb5 = s0 + | s1 = any [ br0 -> {_5 = false} (! bb4) | br1 -> {_5} (! bb3) ] ] + | bb3 = s0 [ s0 = new {[%#sduration'3] const_MAX} {[%#sduration'4] (999999999: UInt32.t)} (fun (_ret: t_Duration) -> [ &max <- _ret ] s1) - | s1 = bb6 ] + | s1 = bb5 ] + | bb5 = s0 + [ s0 = from_secs {[%#sduration'5] (1: UInt64.t)} (fun (_ret: t_Duration) -> [ &d_secs <- _ret ] s1) | s1 = bb6 ] | bb6 = s0 - [ s0 = from_secs {[%#sduration'5] (1: UInt64.t)} (fun (_ret: t_Duration) -> [ &d_secs <- _ret ] s1) | s1 = bb7 ] - | bb7 = s0 [ s0 = {[@expl:assertion] [%#sduration'6] view d_secs = 1000000000} s1 | s1 = from_millis {[%#sduration'7] (1: UInt64.t)} (fun (_ret: t_Duration) -> [ &d_millis <- _ret ] s2) - | s2 = bb8 ] - | bb8 = s0 + | s2 = bb7 ] + | bb7 = s0 [ s0 = {[@expl:assertion] [%#sduration'8] view d_millis = 1000000} s1 | s1 = from_micros {[%#sduration'9] (1: UInt64.t)} (fun (_ret: t_Duration) -> [ &d_micros <- _ret ] s2) - | s2 = bb9 ] - | bb9 = s0 + | s2 = bb8 ] + | bb8 = s0 [ s0 = {[@expl:assertion] [%#sduration'10] view d_micros = 1000} s1 | s1 = from_nanos {[%#sduration'11] (1: UInt64.t)} (fun (_ret: t_Duration) -> [ &d_nanos <- _ret ] s2) - | s2 = bb10 ] - | bb10 = s0 + | s2 = bb9 ] + | bb9 = s0 [ s0 = {[@expl:assertion] [%#sduration'12] view d_nanos = 1} s1 | s1 = is_zero {zero} (fun (_ret: bool) -> [ &_23 <- _ret ] s2) - | s2 = bb11 ] - | bb11 = any [ br0 -> {_23 = false} (! bb12) | br1 -> {_23} (! bb14) ] - | bb14 = s0 [ s0 = is_zero {d_secs} (fun (_ret: bool) -> [ &_28 <- _ret ] s1) | s1 = bb15 ] - | bb15 = s0 [ s0 = [ &_27 <- not _28 ] s1 | s1 = any [ br0 -> {_27 = false} (! bb16) | br1 -> {_27} (! bb18) ] ] - | bb18 = s0 [ s0 = as_secs {d_secs} (fun (_ret: UInt64.t) -> [ &_33 <- _ret ] s1) | s1 = bb19 ] + | s2 = bb10 ] + | bb10 = any [ br0 -> {_23 = false} (! bb12) | br1 -> {_23} (! bb11) ] + | bb11 = s0 [ s0 = is_zero {d_secs} (fun (_ret: bool) -> [ &_27 <- _ret ] s1) | s1 = bb13 ] + | bb13 = any [ br0 -> {_27 = false} (! bb15) | br1 -> {_27} (! bb14) ] + | bb14 = {[%#sduration'13] false} any + | bb15 = s0 [ s0 = as_secs {d_secs} (fun (_ret: UInt64.t) -> [ &_32 <- _ret ] s1) | s1 = bb16 ] + | bb16 = s0 + [ s0 = [ &_31 <- ([%#sduration'14] (1: UInt64.t)) = _32 ] s1 + | s1 = any [ br0 -> {_31 = false} (! bb18) | br1 -> {_31} (! bb17) ] ] + | bb17 = s0 [ s0 = subsec_millis {d_secs} (fun (_ret: UInt32.t) -> [ &_37 <- _ret ] s1) | s1 = bb19 ] | bb19 = s0 - [ s0 = [ &_32 <- ([%#sduration'13] (1: UInt64.t)) = _33 ] s1 - | s1 = any [ br0 -> {_32 = false} (! bb20) | br1 -> {_32} (! bb22) ] ] - | bb22 = s0 [ s0 = subsec_millis {d_secs} (fun (_ret: UInt32.t) -> [ &_38 <- _ret ] s1) | s1 = bb23 ] - | bb23 = s0 - [ s0 = [ &_37 <- ([%#sduration'14] (0: UInt32.t)) = _38 ] s1 - | s1 = any [ br0 -> {_37 = false} (! bb24) | br1 -> {_37} (! bb26) ] ] - | bb26 = s0 [ s0 = subsec_micros {d_secs} (fun (_ret: UInt32.t) -> [ &_43 <- _ret ] s1) | s1 = bb27 ] - | bb27 = s0 - [ s0 = [ &_42 <- ([%#sduration'15] (0: UInt32.t)) = _43 ] s1 - | s1 = any [ br0 -> {_42 = false} (! bb28) | br1 -> {_42} (! bb30) ] ] - | bb30 = s0 [ s0 = subsec_nanos {d_secs} (fun (_ret: UInt32.t) -> [ &_48 <- _ret ] s1) | s1 = bb31 ] - | bb31 = s0 - [ s0 = [ &_47 <- ([%#sduration'16] (0: UInt32.t)) = _48 ] s1 - | s1 = any [ br0 -> {_47 = false} (! bb32) | br1 -> {_47} (! bb34) ] ] - | bb34 = s0 [ s0 = subsec_millis {d_millis} (fun (_ret: UInt32.t) -> [ &_54 <- _ret ] s1) | s1 = bb35 ] - | bb35 = s0 - [ s0 = UInt128.of_int {UInt32.t'int _54} (fun (_ret_from: UInt128.t) -> [ &_53 <- _ret_from ] s1) - | s1 = as_millis {d_millis} (fun (_ret: UInt128.t) -> [ &_56 <- _ret ] s2) - | s2 = bb36 ] - | bb36 = s0 [ s0 = [ &_52 <- _53 = _56 ] s1 | s1 = any [ br0 -> {_52 = false} (! bb37) | br1 -> {_52} (! bb39) ] ] - | bb39 = s0 [ s0 = subsec_micros {d_micros} (fun (_ret: UInt32.t) -> [ &_62 <- _ret ] s1) | s1 = bb40 ] - | bb40 = s0 - [ s0 = UInt128.of_int {UInt32.t'int _62} (fun (_ret_from: UInt128.t) -> [ &_61 <- _ret_from ] s1) - | s1 = as_micros {d_micros} (fun (_ret: UInt128.t) -> [ &_64 <- _ret ] s2) - | s2 = bb41 ] - | bb41 = s0 [ s0 = [ &_60 <- _61 = _64 ] s1 | s1 = any [ br0 -> {_60 = false} (! bb42) | br1 -> {_60} (! bb44) ] ] - | bb44 = s0 [ s0 = subsec_nanos {d_nanos} (fun (_ret: UInt32.t) -> [ &_70 <- _ret ] s1) | s1 = bb45 ] - | bb45 = s0 - [ s0 = UInt128.of_int {UInt32.t'int _70} (fun (_ret_from: UInt128.t) -> [ &_69 <- _ret_from ] s1) - | s1 = as_nanos {d_nanos} (fun (_ret: UInt128.t) -> [ &_72 <- _ret ] s2) - | s2 = bb46 ] - | bb46 = s0 [ s0 = [ &_68 <- _69 = _72 ] s1 | s1 = any [ br0 -> {_68 = false} (! bb47) | br1 -> {_68} (! bb49) ] ] - | bb49 = s0 [ s0 = checked_add {d_secs} {max} (fun (_ret: t_Option) -> [ &_78 <- _ret ] s1) | s1 = bb50 ] - | bb50 = s0 [ s0 = is_none {_78} (fun (_ret: bool) -> [ &_76 <- _ret ] s1) | s1 = bb51 ] - | bb51 = any [ br0 -> {_76 = false} (! bb52) | br1 -> {_76} (! bb54) ] - | bb54 = s0 [ s0 = checked_add {d_secs} {d_secs} (fun (_ret: t_Option) -> [ &_85 <- _ret ] s1) | s1 = bb55 ] - | bb55 = s0 [ s0 = is_some {_85} (fun (_ret: bool) -> [ &_83 <- _ret ] s1) | s1 = bb56 ] - | bb56 = any [ br0 -> {_83 = false} (! bb57) | br1 -> {_83} (! bb59) ] - | bb59 = s0 [ s0 = checked_sub {d_secs} {max} (fun (_ret: t_Option) -> [ &_92 <- _ret ] s1) | s1 = bb60 ] - | bb60 = s0 [ s0 = is_none {_92} (fun (_ret: bool) -> [ &_90 <- _ret ] s1) | s1 = bb61 ] - | bb61 = any [ br0 -> {_90 = false} (! bb62) | br1 -> {_90} (! bb64) ] - | bb64 = s0 [ s0 = checked_sub {d_secs} {d_millis} (fun (_ret: t_Option) -> [ &_99 <- _ret ] s1) | s1 = bb65 ] - | bb65 = s0 [ s0 = is_some {_99} (fun (_ret: bool) -> [ &_97 <- _ret ] s1) | s1 = bb66 ] - | bb66 = any [ br0 -> {_97 = false} (! bb67) | br1 -> {_97} (! bb69) ] - | bb69 = s0 - [ s0 = checked_mul {max} {[%#sduration'17] (2: UInt32.t)} (fun (_ret: t_Option) -> [ &_106 <- _ret ] s1) - | s1 = bb70 ] - | bb70 = s0 [ s0 = is_none {_106} (fun (_ret: bool) -> [ &_104 <- _ret ] s1) | s1 = bb71 ] - | bb71 = any [ br0 -> {_104 = false} (! bb72) | br1 -> {_104} (! bb74) ] - | bb74 = s0 - [ s0 = checked_mul {d_secs} {[%#sduration'18] (10: UInt32.t)} (fun (_ret: t_Option) -> [ &_112 <- _ret ] s1) - | s1 = bb75 ] - | bb75 = s0 [ s0 = is_some {_112} (fun (_ret: bool) -> [ &_110 <- _ret ] s1) | s1 = bb76 ] - | bb76 = any [ br0 -> {_110 = false} (! bb77) | br1 -> {_110} (! bb79) ] - | bb79 = s0 - [ s0 = checked_div {d_secs} {[%#sduration'19] (0: UInt32.t)} (fun (_ret: t_Option) -> [ &_118 <- _ret ] s1) - | s1 = bb80 ] - | bb80 = s0 [ s0 = is_none {_118} (fun (_ret: bool) -> [ &_116 <- _ret ] s1) | s1 = bb81 ] - | bb81 = any [ br0 -> {_116 = false} (! bb82) | br1 -> {_116} (! bb84) ] - | bb84 = s0 - [ s0 = checked_div {d_secs} {[%#sduration'20] (10: UInt32.t)} (fun (_ret: t_Option) -> [ &_124 <- _ret ] s1) - | s1 = bb85 ] - | bb85 = s0 [ s0 = is_some {_124} (fun (_ret: bool) -> [ &_122 <- _ret ] s1) | s1 = bb86 ] - | bb86 = any [ br0 -> {_122 = false} (! bb87) | br1 -> {_122} (! bb89) ] - | bb89 = s0 [ s0 = add {d_millis} {d_micros} (fun (_ret: t_Duration) -> [ &sum <- _ret ] s1) | s1 = bb90 ] - | bb90 = s0 [ s0 = sub {d_millis} {d_micros} (fun (_ret: t_Duration) -> [ &difference <- _ret ] s1) | s1 = bb91 ] - | bb91 = s0 - [ s0 = {[@expl:assertion] [%#sduration'21] view sum = 1001000} s1 - | s1 = {[@expl:assertion] [%#sduration'22] view difference = 999000} s2 + [ s0 = [ &_36 <- ([%#sduration'15] (0: UInt32.t)) = _37 ] s1 + | s1 = any [ br0 -> {_36 = false} (! bb21) | br1 -> {_36} (! bb20) ] ] + | bb20 = s0 [ s0 = subsec_micros {d_secs} (fun (_ret: UInt32.t) -> [ &_42 <- _ret ] s1) | s1 = bb22 ] + | bb22 = s0 + [ s0 = [ &_41 <- ([%#sduration'16] (0: UInt32.t)) = _42 ] s1 + | s1 = any [ br0 -> {_41 = false} (! bb24) | br1 -> {_41} (! bb23) ] ] + | bb23 = s0 [ s0 = subsec_nanos {d_secs} (fun (_ret: UInt32.t) -> [ &_47 <- _ret ] s1) | s1 = bb25 ] + | bb25 = s0 + [ s0 = [ &_46 <- ([%#sduration'17] (0: UInt32.t)) = _47 ] s1 + | s1 = any [ br0 -> {_46 = false} (! bb27) | br1 -> {_46} (! bb26) ] ] + | bb26 = s0 [ s0 = subsec_millis {d_millis} (fun (_ret: UInt32.t) -> [ &_53 <- _ret ] s1) | s1 = bb28 ] + | bb28 = s0 + [ s0 = UInt128.of_int {UInt32.t'int _53} (fun (_ret_from: UInt128.t) -> [ &_52 <- _ret_from ] s1) + | s1 = as_millis {d_millis} (fun (_ret: UInt128.t) -> [ &_55 <- _ret ] s2) + | s2 = bb29 ] + | bb29 = s0 [ s0 = [ &_51 <- _52 = _55 ] s1 | s1 = any [ br0 -> {_51 = false} (! bb31) | br1 -> {_51} (! bb30) ] ] + | bb30 = s0 [ s0 = subsec_micros {d_micros} (fun (_ret: UInt32.t) -> [ &_61 <- _ret ] s1) | s1 = bb32 ] + | bb32 = s0 + [ s0 = UInt128.of_int {UInt32.t'int _61} (fun (_ret_from: UInt128.t) -> [ &_60 <- _ret_from ] s1) + | s1 = as_micros {d_micros} (fun (_ret: UInt128.t) -> [ &_63 <- _ret ] s2) + | s2 = bb33 ] + | bb33 = s0 [ s0 = [ &_59 <- _60 = _63 ] s1 | s1 = any [ br0 -> {_59 = false} (! bb35) | br1 -> {_59} (! bb34) ] ] + | bb34 = s0 [ s0 = subsec_nanos {d_nanos} (fun (_ret: UInt32.t) -> [ &_69 <- _ret ] s1) | s1 = bb36 ] + | bb36 = s0 + [ s0 = UInt128.of_int {UInt32.t'int _69} (fun (_ret_from: UInt128.t) -> [ &_68 <- _ret_from ] s1) + | s1 = as_nanos {d_nanos} (fun (_ret: UInt128.t) -> [ &_71 <- _ret ] s2) + | s2 = bb37 ] + | bb37 = s0 [ s0 = [ &_67 <- _68 = _71 ] s1 | s1 = any [ br0 -> {_67 = false} (! bb39) | br1 -> {_67} (! bb38) ] ] + | bb38 = s0 [ s0 = checked_add {d_secs} {max} (fun (_ret: t_Option) -> [ &_77 <- _ret ] s1) | s1 = bb40 ] + | bb40 = s0 [ s0 = is_none {_77} (fun (_ret: bool) -> [ &_75 <- _ret ] s1) | s1 = bb41 ] + | bb41 = any [ br0 -> {_75 = false} (! bb43) | br1 -> {_75} (! bb42) ] + | bb42 = s0 [ s0 = checked_add {d_secs} {d_secs} (fun (_ret: t_Option) -> [ &_84 <- _ret ] s1) | s1 = bb44 ] + | bb44 = s0 [ s0 = is_some {_84} (fun (_ret: bool) -> [ &_82 <- _ret ] s1) | s1 = bb45 ] + | bb45 = any [ br0 -> {_82 = false} (! bb47) | br1 -> {_82} (! bb46) ] + | bb46 = s0 [ s0 = checked_sub {d_secs} {max} (fun (_ret: t_Option) -> [ &_91 <- _ret ] s1) | s1 = bb48 ] + | bb48 = s0 [ s0 = is_none {_91} (fun (_ret: bool) -> [ &_89 <- _ret ] s1) | s1 = bb49 ] + | bb49 = any [ br0 -> {_89 = false} (! bb51) | br1 -> {_89} (! bb50) ] + | bb50 = s0 [ s0 = checked_sub {d_secs} {d_millis} (fun (_ret: t_Option) -> [ &_98 <- _ret ] s1) | s1 = bb52 ] + | bb52 = s0 [ s0 = is_some {_98} (fun (_ret: bool) -> [ &_96 <- _ret ] s1) | s1 = bb53 ] + | bb53 = any [ br0 -> {_96 = false} (! bb55) | br1 -> {_96} (! bb54) ] + | bb54 = s0 + [ s0 = checked_mul {max} {[%#sduration'18] (2: UInt32.t)} (fun (_ret: t_Option) -> [ &_105 <- _ret ] s1) + | s1 = bb56 ] + | bb56 = s0 [ s0 = is_none {_105} (fun (_ret: bool) -> [ &_103 <- _ret ] s1) | s1 = bb57 ] + | bb57 = any [ br0 -> {_103 = false} (! bb59) | br1 -> {_103} (! bb58) ] + | bb58 = s0 + [ s0 = checked_mul {d_secs} {[%#sduration'19] (10: UInt32.t)} (fun (_ret: t_Option) -> [ &_111 <- _ret ] s1) + | s1 = bb60 ] + | bb60 = s0 [ s0 = is_some {_111} (fun (_ret: bool) -> [ &_109 <- _ret ] s1) | s1 = bb61 ] + | bb61 = any [ br0 -> {_109 = false} (! bb63) | br1 -> {_109} (! bb62) ] + | bb62 = s0 + [ s0 = checked_div {d_secs} {[%#sduration'20] (0: UInt32.t)} (fun (_ret: t_Option) -> [ &_117 <- _ret ] s1) + | s1 = bb64 ] + | bb64 = s0 [ s0 = is_none {_117} (fun (_ret: bool) -> [ &_115 <- _ret ] s1) | s1 = bb65 ] + | bb65 = any [ br0 -> {_115 = false} (! bb67) | br1 -> {_115} (! bb66) ] + | bb66 = s0 + [ s0 = checked_div {d_secs} {[%#sduration'21] (10: UInt32.t)} (fun (_ret: t_Option) -> [ &_123 <- _ret ] s1) + | s1 = bb68 ] + | bb68 = s0 [ s0 = is_some {_123} (fun (_ret: bool) -> [ &_121 <- _ret ] s1) | s1 = bb69 ] + | bb69 = any [ br0 -> {_121 = false} (! bb71) | br1 -> {_121} (! bb70) ] + | bb70 = s0 [ s0 = add {d_millis} {d_micros} (fun (_ret: t_Duration) -> [ &sum <- _ret ] s1) | s1 = bb72 ] + | bb72 = s0 [ s0 = sub {d_millis} {d_micros} (fun (_ret: t_Duration) -> [ &difference <- _ret ] s1) | s1 = bb73 ] + | bb73 = s0 + [ s0 = {[@expl:assertion] [%#sduration'22] view sum = 1001000} s1 + | s1 = {[@expl:assertion] [%#sduration'23] view difference = 999000} s2 | s2 = return''0 {_0} ] - | bb87 = {[%#sduration'23] false} any - | bb82 = {[%#sduration'24] false} any - | bb77 = {[%#sduration'25] false} any - | bb72 = {[%#sduration'26] false} any - | bb67 = {[%#sduration'27] false} any - | bb62 = {[%#sduration'28] false} any - | bb57 = {[%#sduration'29] false} any - | bb52 = {[%#sduration'30] false} any - | bb47 = {[%#sduration'31] false} any - | bb42 = {[%#sduration'32] false} any - | bb37 = {[%#sduration'33] false} any - | bb32 = {[%#sduration'34] false} any - | bb28 = {[%#sduration'35] false} any + | bb71 = {[%#sduration'24] false} any + | bb67 = {[%#sduration'25] false} any + | bb63 = {[%#sduration'26] false} any + | bb59 = {[%#sduration'27] false} any + | bb55 = {[%#sduration'28] false} any + | bb51 = {[%#sduration'29] false} any + | bb47 = {[%#sduration'30] false} any + | bb43 = {[%#sduration'31] false} any + | bb39 = {[%#sduration'32] false} any + | bb35 = {[%#sduration'33] false} any + | bb31 = {[%#sduration'34] false} any + | bb27 = {[%#sduration'35] false} any | bb24 = {[%#sduration'36] false} any - | bb20 = {[%#sduration'37] false} any - | bb16 = {[%#sduration'38] false} any + | bb21 = {[%#sduration'37] false} any + | bb18 = {[%#sduration'38] false} any | bb12 = {[%#sduration'39] false} any - | bb3 = {[%#sduration'40] false} any ] + | bb4 = {[%#sduration'40] false} any ] [ & _0: () = Any.any_l () | & zero: t_Duration = Any.any_l () | & _5: bool = Any.any_l () @@ -426,43 +426,42 @@ module M_duration__test_duration [#"duration.rs" 7 0 7 22] | & d_nanos: t_Duration = Any.any_l () | & _23: bool = Any.any_l () | & _27: bool = Any.any_l () - | & _28: bool = Any.any_l () - | & _32: bool = Any.any_l () - | & _33: UInt64.t = Any.any_l () - | & _37: bool = Any.any_l () - | & _38: UInt32.t = Any.any_l () - | & _42: bool = Any.any_l () - | & _43: UInt32.t = Any.any_l () - | & _47: bool = Any.any_l () - | & _48: UInt32.t = Any.any_l () - | & _52: bool = Any.any_l () - | & _53: UInt128.t = Any.any_l () - | & _54: UInt32.t = Any.any_l () - | & _56: UInt128.t = Any.any_l () - | & _60: bool = Any.any_l () - | & _61: UInt128.t = Any.any_l () - | & _62: UInt32.t = Any.any_l () - | & _64: UInt128.t = Any.any_l () - | & _68: bool = Any.any_l () - | & _69: UInt128.t = Any.any_l () - | & _70: UInt32.t = Any.any_l () - | & _72: UInt128.t = Any.any_l () - | & _76: bool = Any.any_l () - | & _78: t_Option = Any.any_l () - | & _83: bool = Any.any_l () - | & _85: t_Option = Any.any_l () - | & _90: bool = Any.any_l () - | & _92: t_Option = Any.any_l () - | & _97: bool = Any.any_l () - | & _99: t_Option = Any.any_l () - | & _104: bool = Any.any_l () - | & _106: t_Option = Any.any_l () - | & _110: bool = Any.any_l () - | & _112: t_Option = Any.any_l () - | & _116: bool = Any.any_l () - | & _118: t_Option = Any.any_l () - | & _122: bool = Any.any_l () - | & _124: t_Option = Any.any_l () + | & _31: bool = Any.any_l () + | & _32: UInt64.t = Any.any_l () + | & _36: bool = Any.any_l () + | & _37: UInt32.t = Any.any_l () + | & _41: bool = Any.any_l () + | & _42: UInt32.t = Any.any_l () + | & _46: bool = Any.any_l () + | & _47: UInt32.t = Any.any_l () + | & _51: bool = Any.any_l () + | & _52: UInt128.t = Any.any_l () + | & _53: UInt32.t = Any.any_l () + | & _55: UInt128.t = Any.any_l () + | & _59: bool = Any.any_l () + | & _60: UInt128.t = Any.any_l () + | & _61: UInt32.t = Any.any_l () + | & _63: UInt128.t = Any.any_l () + | & _67: bool = Any.any_l () + | & _68: UInt128.t = Any.any_l () + | & _69: UInt32.t = Any.any_l () + | & _71: UInt128.t = Any.any_l () + | & _75: bool = Any.any_l () + | & _77: t_Option = Any.any_l () + | & _82: bool = Any.any_l () + | & _84: t_Option = Any.any_l () + | & _89: bool = Any.any_l () + | & _91: t_Option = Any.any_l () + | & _96: bool = Any.any_l () + | & _98: t_Option = Any.any_l () + | & _103: bool = Any.any_l () + | & _105: t_Option = Any.any_l () + | & _109: bool = Any.any_l () + | & _111: t_Option = Any.any_l () + | & _115: bool = Any.any_l () + | & _117: t_Option = Any.any_l () + | & _121: bool = Any.any_l () + | & _123: t_Option = Any.any_l () | & sum: t_Duration = Any.any_l () | & difference: t_Duration = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end diff --git a/tests/should_succeed/fn_ghost.coma b/tests/should_succeed/fn_ghost.coma index bd39631473..582e2712f5 100644 --- a/tests/should_succeed/fn_ghost.coma +++ b/tests/should_succeed/fn_ghost.coma @@ -2,9 +2,9 @@ module M_fn_ghost__foo [#"fn_ghost.rs" 4 0 4 12] let%span sfn_ghost = "fn_ghost.rs" 8 22 8 23 let%span sfn_ghost'0 = "fn_ghost.rs" 10 22 10 23 let%span sfn_ghost'1 = "fn_ghost.rs" 12 22 12 23 - let%span sfn_ghost'2 = "fn_ghost.rs" 12 12 12 23 - let%span sfn_ghost'3 = "fn_ghost.rs" 10 12 10 23 - let%span sfn_ghost'4 = "fn_ghost.rs" 8 12 8 23 + let%span sfn_ghost'2 = "fn_ghost.rs" 12 4 12 24 + let%span sfn_ghost'3 = "fn_ghost.rs" 10 4 10 24 + let%span sfn_ghost'4 = "fn_ghost.rs" 8 4 8 24 let%span sfn_ghost'5 = "fn_ghost.rs" 6 17 6 18 let%span sfn_ghost'6 = "../../creusot-contracts/src/ghost/fn_ghost.rs" 76 14 76 26 let%span sfn_ghost'7 = "fn_ghost.rs" 15 0 15 36 @@ -200,19 +200,19 @@ module M_fn_ghost__foo [#"fn_ghost.rs" 4 0 4 12] | bb1 = s0 [ s0 = takes_ghost_fn {f} (fun (_ret: Int32.t) -> [ &result <- _ret ] s1) | s1 = bb2 ] | bb2 = s0 [ s0 = [ &_6 <- result = ([%#sfn_ghost] (2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_6 = false} (! bb3) | br1 -> {_6} (! bb5) ] ] - | bb5 = s0 [ s0 = takes_ghost_fnmut {f} (fun (_ret: Int32.t) -> [ &result'0 <- _ret ] s1) | s1 = bb6 ] - | bb6 = s0 + | s1 = any [ br0 -> {_6 = false} (! bb4) | br1 -> {_6} (! bb3) ] ] + | bb3 = s0 [ s0 = takes_ghost_fnmut {f} (fun (_ret: Int32.t) -> [ &result'0 <- _ret ] s1) | s1 = bb5 ] + | bb5 = s0 [ s0 = [ &_12 <- result'0 = ([%#sfn_ghost'0] (2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_12 = false} (! bb7) | br1 -> {_12} (! bb9) ] ] - | bb9 = s0 [ s0 = takes_ghost_fnonce {f} (fun (_ret: Int32.t) -> [ &result'1 <- _ret ] s1) | s1 = bb10 ] - | bb10 = s0 + | s1 = any [ br0 -> {_12 = false} (! bb7) | br1 -> {_12} (! bb6) ] ] + | bb6 = s0 [ s0 = takes_ghost_fnonce {f} (fun (_ret: Int32.t) -> [ &result'1 <- _ret ] s1) | s1 = bb8 ] + | bb8 = s0 [ s0 = [ &_18 <- result'1 = ([%#sfn_ghost'1] (2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_18 = false} (! bb11) | br1 -> {_18} (! bb13) ] ] - | bb13 = return''0 {_0} - | bb11 = {[%#sfn_ghost'2] false} any + | s1 = any [ br0 -> {_18 = false} (! bb10) | br1 -> {_18} (! bb9) ] ] + | bb9 = return''0 {_0} + | bb10 = {[%#sfn_ghost'2] false} any | bb7 = {[%#sfn_ghost'3] false} any - | bb3 = {[%#sfn_ghost'4] false} any ] + | bb4 = {[%#sfn_ghost'4] false} any ] [ & _0: () = Any.any_l () | & f: t_FnGhostWrapper = Any.any_l () | & _2: () = Any.any_l () diff --git a/tests/should_succeed/generic_deref.coma b/tests/should_succeed/generic_deref.coma index 9edd0edad2..b3e50a45df 100644 --- a/tests/should_succeed/generic_deref.coma +++ b/tests/should_succeed/generic_deref.coma @@ -3,7 +3,7 @@ module M_generic_deref__deref_wrap [#"generic_deref.rs" 7 0 7 48] let%span sgeneric_deref'0 = "generic_deref.rs" 5 11 5 38 let%span sgeneric_deref'1 = "generic_deref.rs" 7 38 7 48 let%span sgeneric_deref'2 = "generic_deref.rs" 6 10 6 46 - let%span sgeneric_deref'3 = "generic_deref.rs" 1 0 151 4 + let%span sgeneric_deref'3 = "generic_deref.rs" 1 0 150 4 let%span sops = "../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../creusot-contracts/src/std/ops.rs" 169 14 169 61 @@ -131,7 +131,7 @@ module M_generic_deref__deref_mut_wrap [#"generic_deref.rs" 17 0 17 63] let%span sgeneric_deref'0 = "generic_deref.rs" 15 11 15 73 let%span sgeneric_deref'1 = "generic_deref.rs" 17 49 17 63 let%span sgeneric_deref'2 = "generic_deref.rs" 16 10 16 50 - let%span sgeneric_deref'3 = "generic_deref.rs" 1 0 276 4 + let%span sgeneric_deref'3 = "generic_deref.rs" 1 0 274 4 let%span sops = "../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../creusot-contracts/src/std/ops.rs" 169 14 169 61 diff --git a/tests/should_succeed/ghost/ghost_vec.coma b/tests/should_succeed/ghost/ghost_vec.coma index 079e9724fb..8340d8d37c 100644 --- a/tests/should_succeed/ghost/ghost_vec.coma +++ b/tests/should_succeed/ghost/ghost_vec.coma @@ -1,33 +1,33 @@ module M_ghost_vec__ghost_vec [#"ghost_vec.rs" 4 0 4 18] let%span sghost_vec = "ghost_vec.rs" 6 18 6 44 let%span sghost_vec'0 = "ghost_vec.rs" 9 26 9 28 - let%span sghost_vec'1 = "ghost_vec.rs" 11 22 11 35 - let%span sghost_vec'2 = "ghost_vec.rs" 12 22 12 34 - let%span sghost_vec'3 = "ghost_vec.rs" 14 26 14 28 - let%span sghost_vec'4 = "ghost_vec.rs" 15 26 15 28 - let%span sghost_vec'5 = "ghost_vec.rs" 17 22 17 30 - let%span sghost_vec'6 = "ghost_vec.rs" 18 22 18 69 - let%span sghost_vec'7 = "ghost_vec.rs" 20 31 20 35 - let%span sghost_vec'8 = "ghost_vec.rs" 21 31 21 35 - let%span sghost_vec'9 = "ghost_vec.rs" 22 22 22 42 - let%span sghost_vec'10 = "ghost_vec.rs" 23 22 23 34 - let%span sghost_vec'11 = "ghost_vec.rs" 25 41 25 45 - let%span sghost_vec'12 = "ghost_vec.rs" 26 17 26 19 - let%span sghost_vec'13 = "ghost_vec.rs" 28 22 28 35 - let%span sghost_vec'14 = "ghost_vec.rs" 35 22 35 41 - let%span sghost_vec'15 = "ghost_vec.rs" 36 22 36 41 - let%span sghost_vec'16 = "ghost_vec.rs" 37 22 37 41 - let%span sghost_vec'17 = "ghost_vec.rs" 38 22 38 34 - let%span sghost_vec'18 = "ghost_vec.rs" 39 22 39 34 - let%span sghost_vec'19 = "ghost_vec.rs" 44 27 44 28 - let%span sghost_vec'20 = "ghost_vec.rs" 45 27 45 28 - let%span sghost_vec'21 = "ghost_vec.rs" 46 27 46 28 - let%span sghost_vec'22 = "ghost_vec.rs" 51 22 51 40 - let%span sghost_vec'23 = "ghost_vec.rs" 52 22 52 40 - let%span sghost_vec'24 = "ghost_vec.rs" 53 22 53 40 - let%span sghost_vec'25 = "ghost_vec.rs" 54 22 54 34 - let%span sghost_vec'26 = "ghost_vec.rs" 10 16 10 35 - let%span sghost_vec'27 = "ghost_vec.rs" 8 16 8 34 + let%span sghost_vec'1 = "ghost_vec.rs" 10 8 10 36 + let%span sghost_vec'2 = "ghost_vec.rs" 11 22 11 35 + let%span sghost_vec'3 = "ghost_vec.rs" 12 22 12 34 + let%span sghost_vec'4 = "ghost_vec.rs" 14 26 14 28 + let%span sghost_vec'5 = "ghost_vec.rs" 15 26 15 28 + let%span sghost_vec'6 = "ghost_vec.rs" 17 22 17 30 + let%span sghost_vec'7 = "ghost_vec.rs" 18 22 18 69 + let%span sghost_vec'8 = "ghost_vec.rs" 20 31 20 35 + let%span sghost_vec'9 = "ghost_vec.rs" 21 31 21 35 + let%span sghost_vec'10 = "ghost_vec.rs" 22 22 22 42 + let%span sghost_vec'11 = "ghost_vec.rs" 23 22 23 34 + let%span sghost_vec'12 = "ghost_vec.rs" 25 41 25 45 + let%span sghost_vec'13 = "ghost_vec.rs" 26 17 26 19 + let%span sghost_vec'14 = "ghost_vec.rs" 28 22 28 35 + let%span sghost_vec'15 = "ghost_vec.rs" 35 22 35 41 + let%span sghost_vec'16 = "ghost_vec.rs" 36 22 36 41 + let%span sghost_vec'17 = "ghost_vec.rs" 37 22 37 41 + let%span sghost_vec'18 = "ghost_vec.rs" 38 22 38 34 + let%span sghost_vec'19 = "ghost_vec.rs" 39 22 39 34 + let%span sghost_vec'20 = "ghost_vec.rs" 44 27 44 28 + let%span sghost_vec'21 = "ghost_vec.rs" 45 27 45 28 + let%span sghost_vec'22 = "ghost_vec.rs" 46 27 46 28 + let%span sghost_vec'23 = "ghost_vec.rs" 51 22 51 40 + let%span sghost_vec'24 = "ghost_vec.rs" 52 22 52 40 + let%span sghost_vec'25 = "ghost_vec.rs" 53 22 53 40 + let%span sghost_vec'26 = "ghost_vec.rs" 54 22 54 34 + let%span sghost_vec'27 = "ghost_vec.rs" 8 8 8 35 let%span sseq = "../../../creusot-contracts/src/logic/seq.rs" 442 14 442 38 let%span sseq'0 = "../../../creusot-contracts/src/logic/seq.rs" 74 8 74 82 let%span sseq'1 = "../../../creusot-contracts/src/logic/seq.rs" 491 14 491 41 @@ -165,258 +165,258 @@ module M_ghost_vec__ghost_vec [#"ghost_vec.rs" 4 0 4 18] | s1 = deref {v} (fun (_ret: Seq.seq Int32.t) -> [ &_9 <- _ret ] s2) | s2 = bb2 ] | bb2 = s0 [ s0 = is_empty_ghost {_9} (fun (_ret: bool) -> [ &_7 <- _ret ] s1) | s1 = bb3 ] - | bb3 = any [ br0 -> {_7 = false} (! bb4) | br1 -> {_7} (! bb6) ] - | bb6 = s0 + | bb3 = any [ br0 -> {_7 = false} (! bb5) | br1 -> {_7} (! bb4) ] + | bb4 = s0 [ s0 = MutBorrow.borrow_mut {v} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_15 <- _ret ] [ &v <- _ret.final ] s1) | s1 = deref_mut {_15} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_14 <- _ret ] s2) - | s2 = bb7 ] - | bb7 = s0 + | s2 = bb6 ] + | bb6 = s0 [ s0 = MutBorrow.borrow_final {_14.current} {MutBorrow.get_id _14} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_13 <- _ret ] [ &_14 <- { _14 with current = _ret.final } ] s1) | s1 = push_back_ghost {_13} {[%#sghost_vec'0] (21: Int32.t)} (fun (_ret: ()) -> [ &_12 <- _ret ] s2) - | s2 = bb8 ] - | bb8 = s0 - [ s0 = -{resolve'0 _14}- s1 | s1 = deref {v} (fun (_ret: Seq.seq Int32.t) -> [ &_20 <- _ret ] s2) | s2 = bb9 ] - | bb9 = s0 [ s0 = is_empty_ghost {_20} (fun (_ret: bool) -> [ &_18 <- _ret ] s1) | s1 = bb10 ] - | bb10 = s0 [ s0 = [ &_17 <- not _18 ] s1 | s1 = any [ br0 -> {_17 = false} (! bb11) | br1 -> {_17} (! bb13) ] ] - | bb13 = s0 - [ s0 = {[@expl:assertion] [%#sghost_vec'1] Seq.get v 0 = (21: Int32.t)} s1 - | s1 = {[@expl:assertion] [%#sghost_vec'2] Seq.length v = 1} s2 + | s2 = bb7 ] + | bb7 = s0 + [ s0 = -{resolve'0 _14}- s1 | s1 = deref {v} (fun (_ret: Seq.seq Int32.t) -> [ &_19 <- _ret ] s2) | s2 = bb8 ] + | bb8 = s0 [ s0 = is_empty_ghost {_19} (fun (_ret: bool) -> [ &_17 <- _ret ] s1) | s1 = bb9 ] + | bb9 = any [ br0 -> {_17 = false} (! bb11) | br1 -> {_17} (! bb10) ] + | bb10 = {[%#sghost_vec'1] false} any + | bb11 = s0 + [ s0 = {[@expl:assertion] [%#sghost_vec'2] Seq.get v 0 = (21: Int32.t)} s1 + | s1 = {[@expl:assertion] [%#sghost_vec'3] Seq.length v = 1} s2 | s2 = MutBorrow.borrow_mut {v} - (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_30 <- _ret ] [ &v <- _ret.final ] s3) - | s3 = deref_mut {_30} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_29 <- _ret ] s4) - | s4 = bb14 ] + (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_29 <- _ret ] [ &v <- _ret.final ] s3) + | s3 = deref_mut {_29} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_28 <- _ret ] s4) + | s4 = bb12 ] + | bb12 = s0 + [ s0 = MutBorrow.borrow_final {_28.current} {MutBorrow.get_id _28} + (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> + [ &_27 <- _ret ] [ &_28 <- { _28 with current = _ret.final } ] s1) + | s1 = push_back_ghost {_27} {[%#sghost_vec'4] (10: Int32.t)} (fun (_ret: ()) -> [ &_26 <- _ret ] s2) + | s2 = bb13 ] + | bb13 = s0 + [ s0 = -{resolve'0 _28}- s1 + | s1 = MutBorrow.borrow_mut {v} + (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_33 <- _ret ] [ &v <- _ret.final ] s2) + | s2 = deref_mut {_33} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_32 <- _ret ] s3) + | s3 = bb14 ] | bb14 = s0 - [ s0 = MutBorrow.borrow_final {_29.current} {MutBorrow.get_id _29} + [ s0 = MutBorrow.borrow_final {_32.current} {MutBorrow.get_id _32} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> - [ &_28 <- _ret ] [ &_29 <- { _29 with current = _ret.final } ] s1) - | s1 = push_back_ghost {_28} {[%#sghost_vec'3] (10: Int32.t)} (fun (_ret: ()) -> [ &_27 <- _ret ] s2) + [ &_31 <- _ret ] [ &_32 <- { _32 with current = _ret.final } ] s1) + | s1 = push_back_ghost {_31} {[%#sghost_vec'5] (30: Int32.t)} (fun (_ret: ()) -> [ &_30 <- _ret ] s2) | s2 = bb15 ] | bb15 = s0 - [ s0 = -{resolve'0 _29}- s1 - | s1 = MutBorrow.borrow_mut {v} - (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_34 <- _ret ] [ &v <- _ret.final ] s2) - | s2 = deref_mut {_34} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_33 <- _ret ] s3) - | s3 = bb16 ] - | bb16 = s0 - [ s0 = MutBorrow.borrow_final {_33.current} {MutBorrow.get_id _33} - (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> - [ &_32 <- _ret ] [ &_33 <- { _33 with current = _ret.final } ] s1) - | s1 = push_back_ghost {_32} {[%#sghost_vec'4] (30: Int32.t)} (fun (_ret: ()) -> [ &_31 <- _ret ] s2) - | s2 = bb17 ] + [ s0 = -{resolve'0 _32}- s1 | s1 = deref {v} (fun (_ret: Seq.seq Int32.t) -> [ &_36 <- _ret ] s2) | s2 = bb16 ] + | bb16 = s0 [ s0 = len_ghost {_36} (fun (_ret: int) -> [ &len <- _ret ] s1) | s1 = bb17 ] | bb17 = s0 - [ s0 = -{resolve'0 _33}- s1 | s1 = deref {v} (fun (_ret: Seq.seq Int32.t) -> [ &_37 <- _ret ] s2) | s2 = bb18 ] - | bb18 = s0 [ s0 = len_ghost {_37} (fun (_ret: int) -> [ &len <- _ret ] s1) | s1 = bb19 ] - | bb19 = s0 - [ s0 = {[@expl:assertion] [%#sghost_vec'5] len = 3} s1 - | s1 = {[@expl:assertion] [%#sghost_vec'6] Seq.get v 0 = (21: Int32.t) + [ s0 = {[@expl:assertion] [%#sghost_vec'6] len = 3} s1 + | s1 = {[@expl:assertion] [%#sghost_vec'7] Seq.get v 0 = (21: Int32.t) /\ Seq.get v 1 = (10: Int32.t) /\ Seq.get v 2 = (30: Int32.t)} s2 - | s2 = deref {v} (fun (_ret: Seq.seq Int32.t) -> [ &_45 <- _ret ] s3) - | s3 = bb20 ] - | bb20 = s0 [ s0 = new'0 {[%#sghost_vec'7] (1: Int128.t)} (fun (_ret: int) -> [ &_48 <- _ret ] s1) | s1 = bb21 ] - | bb21 = s0 [ s0 = into_inner {_48} (fun (_ret: int) -> [ &_47 <- _ret ] s1) | s1 = bb22 ] - | bb22 = s0 [ s0 = get_ghost {_45} {_47} (fun (_ret: t_Option'0) -> [ &get1 <- _ret ] s1) | s1 = bb23 ] - | bb23 = s0 [ s0 = deref {v} (fun (_ret: Seq.seq Int32.t) -> [ &_51 <- _ret ] s1) | s1 = bb24 ] - | bb24 = s0 [ s0 = new'0 {[%#sghost_vec'8] (3: Int128.t)} (fun (_ret: int) -> [ &_54 <- _ret ] s1) | s1 = bb25 ] - | bb25 = s0 [ s0 = into_inner {_54} (fun (_ret: int) -> [ &_53 <- _ret ] s1) | s1 = bb26 ] - | bb26 = s0 [ s0 = get_ghost {_51} {_53} (fun (_ret: t_Option'0) -> [ &get2 <- _ret ] s1) | s1 = bb27 ] - | bb27 = s0 - [ s0 = {[@expl:assertion] [%#sghost_vec'9] get1 = C_Some'0 (10: Int32.t)} s1 - | s1 = {[@expl:assertion] [%#sghost_vec'10] get2 = C_None'0} s2 + | s2 = deref {v} (fun (_ret: Seq.seq Int32.t) -> [ &_44 <- _ret ] s3) + | s3 = bb18 ] + | bb18 = s0 [ s0 = new'0 {[%#sghost_vec'8] (1: Int128.t)} (fun (_ret: int) -> [ &_47 <- _ret ] s1) | s1 = bb19 ] + | bb19 = s0 [ s0 = into_inner {_47} (fun (_ret: int) -> [ &_46 <- _ret ] s1) | s1 = bb20 ] + | bb20 = s0 [ s0 = get_ghost {_44} {_46} (fun (_ret: t_Option'0) -> [ &get1 <- _ret ] s1) | s1 = bb21 ] + | bb21 = s0 [ s0 = deref {v} (fun (_ret: Seq.seq Int32.t) -> [ &_50 <- _ret ] s1) | s1 = bb22 ] + | bb22 = s0 [ s0 = new'0 {[%#sghost_vec'9] (3: Int128.t)} (fun (_ret: int) -> [ &_53 <- _ret ] s1) | s1 = bb23 ] + | bb23 = s0 [ s0 = into_inner {_53} (fun (_ret: int) -> [ &_52 <- _ret ] s1) | s1 = bb24 ] + | bb24 = s0 [ s0 = get_ghost {_50} {_52} (fun (_ret: t_Option'0) -> [ &get2 <- _ret ] s1) | s1 = bb25 ] + | bb25 = s0 + [ s0 = {[@expl:assertion] [%#sghost_vec'10] get1 = C_Some'0 (10: Int32.t)} s1 + | s1 = {[@expl:assertion] [%#sghost_vec'11] get2 = C_None'0} s2 | s2 = MutBorrow.borrow_mut {v} - (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_63 <- _ret ] [ &v <- _ret.final ] s3) - | s3 = deref_mut {_63} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_62 <- _ret ] s4) - | s4 = bb28 ] - | bb28 = s0 [ s0 = new'0 {[%#sghost_vec'11] (0: Int128.t)} (fun (_ret: int) -> [ &_65 <- _ret ] s1) | s1 = bb29 ] - | bb29 = s0 [ s0 = into_inner {_65} (fun (_ret: int) -> [ &_64 <- _ret ] s1) | s1 = bb30 ] - | bb30 = s0 - [ s0 = MutBorrow.borrow_final {_62.current} {MutBorrow.get_id _62} + (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_62 <- _ret ] [ &v <- _ret.final ] s3) + | s3 = deref_mut {_62} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_61 <- _ret ] s4) + | s4 = bb26 ] + | bb26 = s0 [ s0 = new'0 {[%#sghost_vec'12] (0: Int128.t)} (fun (_ret: int) -> [ &_64 <- _ret ] s1) | s1 = bb27 ] + | bb27 = s0 [ s0 = into_inner {_64} (fun (_ret: int) -> [ &_63 <- _ret ] s1) | s1 = bb28 ] + | bb28 = s0 + [ s0 = MutBorrow.borrow_final {_61.current} {MutBorrow.get_id _61} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> - [ &_61 <- _ret ] [ &_62 <- { _62 with current = _ret.final } ] s1) - | s1 = get_mut_ghost {_61} {_64} (fun (_ret: t_Option'1) -> [ &_60 <- _ret ] s2) - | s2 = bb31 ] - | bb31 = any [ br0 -> {_60 = C_None'1} (! bb34) | br1 (x0: MutBorrow.t Int32.t) -> {_60 = C_Some'1 x0} (! bb33) ] - | bb34 = s0 - [ s0 = -{match _60 with + [ &_60 <- _ret ] [ &_61 <- { _61 with current = _ret.final } ] s1) + | s1 = get_mut_ghost {_60} {_63} (fun (_ret: t_Option'1) -> [ &_59 <- _ret ] s2) + | s2 = bb29 ] + | bb29 = any [ br0 -> {_59 = C_None'1} (! bb32) | br1 (x0: MutBorrow.t Int32.t) -> {_59 = C_Some'1 x0} (! bb31) ] + | bb32 = s0 + [ s0 = -{match _59 with | C_Some'1 x'0 -> resolve'2 x'0 | _ -> true end}- s1 - | s1 = -{resolve'0 _62}- s2 - | s2 = bb35 ] - | bb33 = s0 - [ s0 = v_Some {_60} (fun (r0: MutBorrow.t Int32.t) -> [ &x <- r0 ] s1) - | s1 = [ &x <- { x with current = ([%#sghost_vec'12] (42: Int32.t)) } ] s2 + | s1 = -{resolve'0 _61}- s2 + | s2 = bb33 ] + | bb31 = s0 + [ s0 = v_Some {_59} (fun (r0: MutBorrow.t Int32.t) -> [ &x <- r0 ] s1) + | s1 = [ &x <- { x with current = ([%#sghost_vec'13] (42: Int32.t)) } ] s2 | s2 = -{resolve'2 x}- s3 - | s3 = -{resolve'0 _62}- s4 - | s4 = bb35 ] + | s3 = -{resolve'0 _61}- s4 + | s4 = bb33 ] + | bb33 = s0 + [ s0 = {[@expl:assertion] [%#sghost_vec'14] Seq.get v 0 = (42: Int32.t)} s1 + | s1 = MutBorrow.borrow_mut {v} + (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_72 <- _ret ] [ &v <- _ret.final ] s2) + | s2 = deref_mut {_72} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_71 <- _ret ] s3) + | s3 = bb34 ] + | bb34 = s0 + [ s0 = MutBorrow.borrow_final {_71.current} {MutBorrow.get_id _71} + (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> + [ &_70 <- _ret ] [ &_71 <- { _71 with current = _ret.final } ] s1) + | s1 = pop_back_ghost {_70} (fun (_ret: t_Option) -> [ &pop1 <- _ret ] s2) + | s2 = bb35 ] | bb35 = s0 - [ s0 = {[@expl:assertion] [%#sghost_vec'13] Seq.get v 0 = (42: Int32.t)} s1 + [ s0 = -{resolve'0 _71}- s1 | s1 = MutBorrow.borrow_mut {v} - (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_73 <- _ret ] [ &v <- _ret.final ] s2) - | s2 = deref_mut {_73} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_72 <- _ret ] s3) + (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_76 <- _ret ] [ &v <- _ret.final ] s2) + | s2 = deref_mut {_76} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_75 <- _ret ] s3) | s3 = bb36 ] | bb36 = s0 - [ s0 = MutBorrow.borrow_final {_72.current} {MutBorrow.get_id _72} + [ s0 = MutBorrow.borrow_final {_75.current} {MutBorrow.get_id _75} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> - [ &_71 <- _ret ] [ &_72 <- { _72 with current = _ret.final } ] s1) - | s1 = pop_back_ghost {_71} (fun (_ret: t_Option) -> [ &pop1 <- _ret ] s2) + [ &_74 <- _ret ] [ &_75 <- { _75 with current = _ret.final } ] s1) + | s1 = pop_back_ghost {_74} (fun (_ret: t_Option) -> [ &pop2 <- _ret ] s2) | s2 = bb37 ] | bb37 = s0 - [ s0 = -{resolve'0 _72}- s1 + [ s0 = -{resolve'0 _75}- s1 | s1 = MutBorrow.borrow_mut {v} - (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_77 <- _ret ] [ &v <- _ret.final ] s2) - | s2 = deref_mut {_77} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_76 <- _ret ] s3) + (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_80 <- _ret ] [ &v <- _ret.final ] s2) + | s2 = deref_mut {_80} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_79 <- _ret ] s3) | s3 = bb38 ] | bb38 = s0 - [ s0 = MutBorrow.borrow_final {_76.current} {MutBorrow.get_id _76} + [ s0 = MutBorrow.borrow_final {_79.current} {MutBorrow.get_id _79} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> - [ &_75 <- _ret ] [ &_76 <- { _76 with current = _ret.final } ] s1) - | s1 = pop_back_ghost {_75} (fun (_ret: t_Option) -> [ &pop2 <- _ret ] s2) + [ &_78 <- _ret ] [ &_79 <- { _79 with current = _ret.final } ] s1) + | s1 = pop_back_ghost {_78} (fun (_ret: t_Option) -> [ &pop3 <- _ret ] s2) | s2 = bb39 ] | bb39 = s0 - [ s0 = -{resolve'0 _76}- s1 + [ s0 = -{resolve'0 _79}- s1 | s1 = MutBorrow.borrow_mut {v} - (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_81 <- _ret ] [ &v <- _ret.final ] s2) - | s2 = deref_mut {_81} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_80 <- _ret ] s3) + (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_84 <- _ret ] [ &v <- _ret.final ] s2) + | s2 = deref_mut {_84} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_83 <- _ret ] s3) | s3 = bb40 ] | bb40 = s0 - [ s0 = MutBorrow.borrow_final {_80.current} {MutBorrow.get_id _80} + [ s0 = MutBorrow.borrow_final {_83.current} {MutBorrow.get_id _83} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> - [ &_79 <- _ret ] [ &_80 <- { _80 with current = _ret.final } ] s1) - | s1 = pop_back_ghost {_79} (fun (_ret: t_Option) -> [ &pop3 <- _ret ] s2) + [ &_82 <- _ret ] [ &_83 <- { _83 with current = _ret.final } ] s1) + | s1 = pop_back_ghost {_82} (fun (_ret: t_Option) -> [ &pop4 <- _ret ] s2) | s2 = bb41 ] | bb41 = s0 - [ s0 = -{resolve'0 _80}- s1 + [ s0 = -{resolve'0 _83}- s1 | s1 = MutBorrow.borrow_mut {v} - (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_85 <- _ret ] [ &v <- _ret.final ] s2) - | s2 = deref_mut {_85} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_84 <- _ret ] s3) + (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_88 <- _ret ] [ &v <- _ret.final ] s2) + | s2 = deref_mut {_88} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_87 <- _ret ] s3) | s3 = bb42 ] | bb42 = s0 - [ s0 = MutBorrow.borrow_final {_84.current} {MutBorrow.get_id _84} + [ s0 = MutBorrow.borrow_final {_87.current} {MutBorrow.get_id _87} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> - [ &_83 <- _ret ] [ &_84 <- { _84 with current = _ret.final } ] s1) - | s1 = pop_back_ghost {_83} (fun (_ret: t_Option) -> [ &pop4 <- _ret ] s2) + [ &_86 <- _ret ] [ &_87 <- { _87 with current = _ret.final } ] s1) + | s1 = pop_back_ghost {_86} (fun (_ret: t_Option) -> [ &pop5 <- _ret ] s2) | s2 = bb43 ] | bb43 = s0 - [ s0 = -{resolve'0 _84}- s1 - | s1 = MutBorrow.borrow_mut {v} - (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_89 <- _ret ] [ &v <- _ret.final ] s2) - | s2 = deref_mut {_89} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_88 <- _ret ] s3) - | s3 = bb44 ] - | bb44 = s0 - [ s0 = MutBorrow.borrow_final {_88.current} {MutBorrow.get_id _88} - (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> - [ &_87 <- _ret ] [ &_88 <- { _88 with current = _ret.final } ] s1) - | s1 = pop_back_ghost {_87} (fun (_ret: t_Option) -> [ &pop5 <- _ret ] s2) - | s2 = bb45 ] - | bb45 = s0 - [ s0 = -{resolve'0 _88}- s1 - | s1 = {[@expl:assertion] [%#sghost_vec'14] pop1 = C_Some (30: Int32.t)} s2 - | s2 = {[@expl:assertion] [%#sghost_vec'15] pop2 = C_Some (10: Int32.t)} s3 - | s3 = {[@expl:assertion] [%#sghost_vec'16] pop3 = C_Some (42: Int32.t)} s4 - | s4 = {[@expl:assertion] [%#sghost_vec'17] pop4 = C_None} s5 - | s5 = {[@expl:assertion] [%#sghost_vec'18] pop5 = C_None} s6 + [ s0 = -{resolve'0 _87}- s1 + | s1 = {[@expl:assertion] [%#sghost_vec'15] pop1 = C_Some (30: Int32.t)} s2 + | s2 = {[@expl:assertion] [%#sghost_vec'16] pop2 = C_Some (10: Int32.t)} s3 + | s3 = {[@expl:assertion] [%#sghost_vec'17] pop3 = C_Some (42: Int32.t)} s4 + | s4 = {[@expl:assertion] [%#sghost_vec'18] pop4 = C_None} s5 + | s5 = {[@expl:assertion] [%#sghost_vec'19] pop5 = C_None} s6 | s6 = new'1 {_5} (fun (_ret: ()) -> [ &_4 <- _ret ] s7) - | s7 = bb46 ] - | bb46 = s0 [ s0 = new (fun (_ret: Seq.seq Int32.t) -> [ &v'0 <- _ret ] s1) | s1 = bb47 ] - | bb47 = s0 + | s7 = bb44 ] + | bb44 = s0 [ s0 = new (fun (_ret: Seq.seq Int32.t) -> [ &v'0 <- _ret ] s1) | s1 = bb45 ] + | bb45 = s0 [ s0 = MutBorrow.borrow_mut {v'0} - (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_106 <- _ret ] [ &v'0 <- _ret.final ] s1) - | s1 = deref_mut {_106} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_105 <- _ret ] s2) - | s2 = bb48 ] + (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_105 <- _ret ] [ &v'0 <- _ret.final ] s1) + | s1 = deref_mut {_105} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_104 <- _ret ] s2) + | s2 = bb46 ] + | bb46 = s0 + [ s0 = MutBorrow.borrow_final {_104.current} {MutBorrow.get_id _104} + (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> + [ &_103 <- _ret ] [ &_104 <- { _104 with current = _ret.final } ] s1) + | s1 = push_front_ghost {_103} {[%#sghost_vec'20] (1: Int32.t)} (fun (_ret: ()) -> [ &_102 <- _ret ] s2) + | s2 = bb47 ] + | bb47 = s0 + [ s0 = -{resolve'0 _104}- s1 + | s1 = MutBorrow.borrow_mut {v'0} + (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_109 <- _ret ] [ &v'0 <- _ret.final ] s2) + | s2 = deref_mut {_109} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_108 <- _ret ] s3) + | s3 = bb48 ] | bb48 = s0 - [ s0 = MutBorrow.borrow_final {_105.current} {MutBorrow.get_id _105} + [ s0 = MutBorrow.borrow_final {_108.current} {MutBorrow.get_id _108} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> - [ &_104 <- _ret ] [ &_105 <- { _105 with current = _ret.final } ] s1) - | s1 = push_front_ghost {_104} {[%#sghost_vec'19] (1: Int32.t)} (fun (_ret: ()) -> [ &_103 <- _ret ] s2) + [ &_107 <- _ret ] [ &_108 <- { _108 with current = _ret.final } ] s1) + | s1 = push_front_ghost {_107} {[%#sghost_vec'21] (2: Int32.t)} (fun (_ret: ()) -> [ &_106 <- _ret ] s2) | s2 = bb49 ] | bb49 = s0 - [ s0 = -{resolve'0 _105}- s1 + [ s0 = -{resolve'0 _108}- s1 | s1 = MutBorrow.borrow_mut {v'0} - (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_110 <- _ret ] [ &v'0 <- _ret.final ] s2) - | s2 = deref_mut {_110} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_109 <- _ret ] s3) + (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_113 <- _ret ] [ &v'0 <- _ret.final ] s2) + | s2 = deref_mut {_113} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_112 <- _ret ] s3) | s3 = bb50 ] | bb50 = s0 - [ s0 = MutBorrow.borrow_final {_109.current} {MutBorrow.get_id _109} + [ s0 = MutBorrow.borrow_final {_112.current} {MutBorrow.get_id _112} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> - [ &_108 <- _ret ] [ &_109 <- { _109 with current = _ret.final } ] s1) - | s1 = push_front_ghost {_108} {[%#sghost_vec'20] (2: Int32.t)} (fun (_ret: ()) -> [ &_107 <- _ret ] s2) + [ &_111 <- _ret ] [ &_112 <- { _112 with current = _ret.final } ] s1) + | s1 = push_front_ghost {_111} {[%#sghost_vec'22] (3: Int32.t)} (fun (_ret: ()) -> [ &_110 <- _ret ] s2) | s2 = bb51 ] | bb51 = s0 - [ s0 = -{resolve'0 _109}- s1 + [ s0 = -{resolve'0 _112}- s1 | s1 = MutBorrow.borrow_mut {v'0} - (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_114 <- _ret ] [ &v'0 <- _ret.final ] s2) - | s2 = deref_mut {_114} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_113 <- _ret ] s3) + (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_117 <- _ret ] [ &v'0 <- _ret.final ] s2) + | s2 = deref_mut {_117} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_116 <- _ret ] s3) | s3 = bb52 ] | bb52 = s0 - [ s0 = MutBorrow.borrow_final {_113.current} {MutBorrow.get_id _113} + [ s0 = MutBorrow.borrow_final {_116.current} {MutBorrow.get_id _116} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> - [ &_112 <- _ret ] [ &_113 <- { _113 with current = _ret.final } ] s1) - | s1 = push_front_ghost {_112} {[%#sghost_vec'21] (3: Int32.t)} (fun (_ret: ()) -> [ &_111 <- _ret ] s2) + [ &_115 <- _ret ] [ &_116 <- { _116 with current = _ret.final } ] s1) + | s1 = pop_front_ghost {_115} (fun (_ret: t_Option) -> [ &pop1'0 <- _ret ] s2) | s2 = bb53 ] | bb53 = s0 - [ s0 = -{resolve'0 _113}- s1 + [ s0 = -{resolve'0 _116}- s1 | s1 = MutBorrow.borrow_mut {v'0} - (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_118 <- _ret ] [ &v'0 <- _ret.final ] s2) - | s2 = deref_mut {_118} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_117 <- _ret ] s3) + (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_121 <- _ret ] [ &v'0 <- _ret.final ] s2) + | s2 = deref_mut {_121} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_120 <- _ret ] s3) | s3 = bb54 ] | bb54 = s0 - [ s0 = MutBorrow.borrow_final {_117.current} {MutBorrow.get_id _117} + [ s0 = MutBorrow.borrow_final {_120.current} {MutBorrow.get_id _120} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> - [ &_116 <- _ret ] [ &_117 <- { _117 with current = _ret.final } ] s1) - | s1 = pop_front_ghost {_116} (fun (_ret: t_Option) -> [ &pop1'0 <- _ret ] s2) + [ &_119 <- _ret ] [ &_120 <- { _120 with current = _ret.final } ] s1) + | s1 = pop_front_ghost {_119} (fun (_ret: t_Option) -> [ &pop2'0 <- _ret ] s2) | s2 = bb55 ] | bb55 = s0 - [ s0 = -{resolve'0 _117}- s1 + [ s0 = -{resolve'0 _120}- s1 | s1 = MutBorrow.borrow_mut {v'0} - (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_122 <- _ret ] [ &v'0 <- _ret.final ] s2) - | s2 = deref_mut {_122} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_121 <- _ret ] s3) + (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_125 <- _ret ] [ &v'0 <- _ret.final ] s2) + | s2 = deref_mut {_125} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_124 <- _ret ] s3) | s3 = bb56 ] | bb56 = s0 - [ s0 = MutBorrow.borrow_final {_121.current} {MutBorrow.get_id _121} + [ s0 = MutBorrow.borrow_final {_124.current} {MutBorrow.get_id _124} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> - [ &_120 <- _ret ] [ &_121 <- { _121 with current = _ret.final } ] s1) - | s1 = pop_front_ghost {_120} (fun (_ret: t_Option) -> [ &pop2'0 <- _ret ] s2) + [ &_123 <- _ret ] [ &_124 <- { _124 with current = _ret.final } ] s1) + | s1 = pop_front_ghost {_123} (fun (_ret: t_Option) -> [ &pop3'0 <- _ret ] s2) | s2 = bb57 ] | bb57 = s0 - [ s0 = -{resolve'0 _121}- s1 + [ s0 = -{resolve'0 _124}- s1 | s1 = MutBorrow.borrow_mut {v'0} - (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_126 <- _ret ] [ &v'0 <- _ret.final ] s2) - | s2 = deref_mut {_126} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_125 <- _ret ] s3) + (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_129 <- _ret ] [ &v'0 <- _ret.final ] s2) + | s2 = deref_mut {_129} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_128 <- _ret ] s3) | s3 = bb58 ] | bb58 = s0 - [ s0 = MutBorrow.borrow_final {_125.current} {MutBorrow.get_id _125} + [ s0 = MutBorrow.borrow_final {_128.current} {MutBorrow.get_id _128} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> - [ &_124 <- _ret ] [ &_125 <- { _125 with current = _ret.final } ] s1) - | s1 = pop_front_ghost {_124} (fun (_ret: t_Option) -> [ &pop3'0 <- _ret ] s2) + [ &_127 <- _ret ] [ &_128 <- { _128 with current = _ret.final } ] s1) + | s1 = pop_front_ghost {_127} (fun (_ret: t_Option) -> [ &pop4'0 <- _ret ] s2) | s2 = bb59 ] | bb59 = s0 - [ s0 = -{resolve'0 _125}- s1 - | s1 = MutBorrow.borrow_mut {v'0} - (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_130 <- _ret ] [ &v'0 <- _ret.final ] s2) - | s2 = deref_mut {_130} (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> [ &_129 <- _ret ] s3) - | s3 = bb60 ] - | bb60 = s0 - [ s0 = MutBorrow.borrow_final {_129.current} {MutBorrow.get_id _129} - (fun (_ret: MutBorrow.t (Seq.seq Int32.t)) -> - [ &_128 <- _ret ] [ &_129 <- { _129 with current = _ret.final } ] s1) - | s1 = pop_front_ghost {_128} (fun (_ret: t_Option) -> [ &pop4'0 <- _ret ] s2) - | s2 = bb61 ] - | bb61 = s0 - [ s0 = -{resolve'0 _129}- s1 - | s1 = {[@expl:assertion] [%#sghost_vec'22] pop1'0 = C_Some (3: Int32.t)} s2 - | s2 = {[@expl:assertion] [%#sghost_vec'23] pop2'0 = C_Some (2: Int32.t)} s3 - | s3 = {[@expl:assertion] [%#sghost_vec'24] pop3'0 = C_Some (1: Int32.t)} s4 - | s4 = {[@expl:assertion] [%#sghost_vec'25] pop4'0 = C_None} s5 - | s5 = new'1 {_102} (fun (_ret: ()) -> [ &_101 <- _ret ] s6) - | s6 = bb62 ] - | bb62 = return''0 {_0} - | bb11 = {[%#sghost_vec'26] false} any - | bb4 = {[%#sghost_vec'27] false} any ] + [ s0 = -{resolve'0 _128}- s1 + | s1 = {[@expl:assertion] [%#sghost_vec'23] pop1'0 = C_Some (3: Int32.t)} s2 + | s2 = {[@expl:assertion] [%#sghost_vec'24] pop2'0 = C_Some (2: Int32.t)} s3 + | s3 = {[@expl:assertion] [%#sghost_vec'25] pop3'0 = C_Some (1: Int32.t)} s4 + | s4 = {[@expl:assertion] [%#sghost_vec'26] pop4'0 = C_None} s5 + | s5 = new'1 {_101} (fun (_ret: ()) -> [ &_100 <- _ret ] s6) + | s6 = bb60 ] + | bb60 = return''0 {_0} + | bb5 = {[%#sghost_vec'27] false} any ] [ & _0: () = Any.any_l () | & v: Seq.seq Int32.t = Any.any_l () | & _4: () = Any.any_l () @@ -428,82 +428,81 @@ module M_ghost_vec__ghost_vec [#"ghost_vec.rs" 4 0 4 18] | & _14: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _15: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _17: bool = Any.any_l () - | & _18: bool = Any.any_l () - | & _20: Seq.seq Int32.t = Any.any_l () - | & _27: () = Any.any_l () + | & _19: Seq.seq Int32.t = Any.any_l () + | & _26: () = Any.any_l () + | & _27: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _28: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _29: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () - | & _30: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () - | & _31: () = Any.any_l () + | & _30: () = Any.any_l () + | & _31: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _32: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _33: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () - | & _34: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & len: int = Any.any_l () - | & _37: Seq.seq Int32.t = Any.any_l () + | & _36: Seq.seq Int32.t = Any.any_l () | & get1: t_Option'0 = Any.any_l () - | & _45: Seq.seq Int32.t = Any.any_l () + | & _44: Seq.seq Int32.t = Any.any_l () + | & _46: int = Any.any_l () | & _47: int = Any.any_l () - | & _48: int = Any.any_l () | & get2: t_Option'0 = Any.any_l () - | & _51: Seq.seq Int32.t = Any.any_l () + | & _50: Seq.seq Int32.t = Any.any_l () + | & _52: int = Any.any_l () | & _53: int = Any.any_l () - | & _54: int = Any.any_l () - | & _60: t_Option'1 = Any.any_l () + | & _59: t_Option'1 = Any.any_l () + | & _60: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _61: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _62: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () - | & _63: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () + | & _63: int = Any.any_l () | & _64: int = Any.any_l () - | & _65: int = Any.any_l () | & x: MutBorrow.t Int32.t = Any.any_l () | & pop1: t_Option = Any.any_l () + | & _70: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _71: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _72: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () - | & _73: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & pop2: t_Option = Any.any_l () + | & _74: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _75: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _76: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () - | & _77: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & pop3: t_Option = Any.any_l () + | & _78: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _79: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _80: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () - | & _81: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & pop4: t_Option = Any.any_l () + | & _82: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _83: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _84: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () - | & _85: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & pop5: t_Option = Any.any_l () + | & _86: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _87: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _88: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () - | & _89: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & v'0: Seq.seq Int32.t = Any.any_l () + | & _100: () = Any.any_l () | & _101: () = Any.any_l () | & _102: () = Any.any_l () - | & _103: () = Any.any_l () + | & _103: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _104: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _105: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () - | & _106: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () - | & _107: () = Any.any_l () + | & _106: () = Any.any_l () + | & _107: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _108: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _109: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () - | & _110: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () - | & _111: () = Any.any_l () + | & _110: () = Any.any_l () + | & _111: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _112: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _113: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () - | & _114: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & pop1'0: t_Option = Any.any_l () + | & _115: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _116: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _117: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () - | & _118: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & pop2'0: t_Option = Any.any_l () + | & _119: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _120: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _121: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () - | & _122: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & pop3'0: t_Option = Any.any_l () + | & _123: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _124: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _125: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () - | & _126: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & pop4'0: t_Option = Any.any_l () + | & _127: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () | & _128: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () - | & _129: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () - | & _130: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] + | & _129: MutBorrow.t (Seq.seq Int32.t) = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end diff --git a/tests/should_succeed/ghost/ghost_vec/proof.json b/tests/should_succeed/ghost/ghost_vec/proof.json index a47dc0656e..e6e229a0b2 100644 --- a/tests/should_succeed/ghost/ghost_vec/proof.json +++ b/tests/should_succeed/ghost/ghost_vec/proof.json @@ -22,10 +22,10 @@ { "prover": "cvc5@1.0.5", "time": 0.027 }, { "prover": "cvc5@1.0.5", "time": 0.025 }, { "prover": "cvc5@1.0.5", "time": 0.03 }, - { "prover": "cvc5@1.0.5", "time": 0.031 }, + { "prover": "cvc5@1.0.5", "time": 0.072 }, { "prover": "cvc5@1.0.5", "time": 0.037 }, { "prover": "cvc5@1.0.5", "time": 0.031 }, - { "prover": "cvc5@1.0.5", "time": 0.033 }, + { "prover": "cvc5@1.0.5", "time": 0.077 }, { "prover": "cvc5@1.0.5", "time": 0.035 }, { "prover": "cvc5@1.0.5", "time": 0.031 }, { "prover": "cvc5@1.0.5", "time": 0.028 }, @@ -36,16 +36,16 @@ { "prover": "cvc5@1.0.5", "time": 0.033 }, { "prover": "cvc5@1.0.5", "time": 0.03 }, { "prover": "cvc5@1.0.5", "time": 0.029 }, - { "prover": "cvc5@1.0.5", "time": 0.027 }, - { "prover": "cvc5@1.0.5", "time": 0.053 }, + { "prover": "cvc5@1.0.5", "time": 0.089 }, + { "prover": "cvc5@1.0.5", "time": 0.116 }, { "prover": "cvc5@1.0.5", "time": 0.067 }, { "prover": "cvc5@1.0.5", "time": 0.058 }, { "prover": "cvc5@1.0.5", "time": 0.054 }, { "prover": "cvc5@1.0.5", "time": 0.054 }, - { "prover": "cvc5@1.0.5", "time": 0.044 }, + { "prover": "alt-ergo@2.6.0", "time": 0.387 }, { "prover": "alt-ergo@2.6.0", "time": 0.529 }, { "prover": "alt-ergo@2.6.0", "time": 0.64 }, - { "prover": "cvc5@1.0.5", "time": 0.068 }, + { "prover": "cvc5@1.0.5", "time": 0.031 }, { "prover": "cvc5@1.0.5", "time": 0.027 } ] } @@ -54,7 +54,7 @@ "vc_into_inner": { "prover": "cvc5@1.0.5", "time": 0.018 }, "vc_is_empty_ghost": { "prover": "cvc5@1.0.5", "time": 0.019 }, "vc_len_ghost": { "prover": "cvc5@1.0.5", "time": 0.018 }, - "vc_new": { "prover": "cvc5@1.0.5", "time": 0.047 }, + "vc_new": { "prover": "cvc5@1.0.5", "time": 0.023 }, "vc_new'0": { "prover": "cvc5@1.0.5", "time": 0.018 }, "vc_new'1": { "prover": "cvc5@1.0.5", "time": 0.019 }, "vc_pop_back_ghost": { "prover": "cvc5@1.0.5", "time": 0.019 }, diff --git a/tests/should_succeed/hashmap.coma b/tests/should_succeed/hashmap.coma index 4396442b5d..f969e8be95 100644 --- a/tests/should_succeed/hashmap.coma +++ b/tests/should_succeed/hashmap.coma @@ -501,7 +501,7 @@ module M_hashmap__qyi9690720112976707081__add [#"hashmap.rs" 150 4 150 41] (* My let%span shashmap'16 = "hashmap.rs" 92 8 92 33 let%span shashmap'17 = "hashmap.rs" 1 0 65 4 let%span shashmap'18 = "hashmap.rs" 120 20 120 66 - let%span shashmap'19 = "hashmap.rs" 1 0 257 4 + let%span shashmap'19 = "hashmap.rs" 1 0 256 4 let%span shashmap'20 = "hashmap.rs" 52 12 52 58 let%span shashmap'21 = "hashmap.rs" 115 8 115 53 let%span shashmap'22 = "hashmap.rs" 135 12 136 135 @@ -1058,7 +1058,7 @@ module M_hashmap__qyi9690720112976707081__get [#"hashmap.rs" 182 4 182 43] (* My let%span shashmap'7 = "hashmap.rs" 115 8 115 53 let%span shashmap'8 = "hashmap.rs" 1 0 65 4 let%span shashmap'9 = "hashmap.rs" 120 20 120 66 - let%span shashmap'10 = "hashmap.rs" 1 0 257 4 + let%span shashmap'10 = "hashmap.rs" 1 0 256 4 let%span shashmap'11 = "hashmap.rs" 92 8 92 33 let%span shashmap'12 = "hashmap.rs" 135 12 136 135 let%span shashmap'13 = "hashmap.rs" 126 12 126 87 diff --git a/tests/should_succeed/heapsort_generic.coma b/tests/should_succeed/heapsort_generic.coma index 2a653fc5d0..a4792521e0 100644 --- a/tests/should_succeed/heapsort_generic.coma +++ b/tests/should_succeed/heapsort_generic.coma @@ -136,8 +136,8 @@ module M_heapsort_generic__sift_down [#"heapsort_generic.rs" 38 0 40 29] let%span sheapsort_generic'22 = "heapsort_generic.rs" 35 10 37 73 let%span sheapsort_generic'23 = "heapsort_generic.rs" 8 4 8 19 let%span sheapsort_generic'24 = "heapsort_generic.rs" 13 16 14 24 - let%span sheapsort_generic'25 = "heapsort_generic.rs" 1 0 1387 4 - let%span sheapsort_generic'26 = "heapsort_generic.rs" 1 0 1405 4 + let%span sheapsort_generic'25 = "heapsort_generic.rs" 1 0 1398 4 + let%span sheapsort_generic'26 = "heapsort_generic.rs" 1 0 1416 4 let%span sord = "../../creusot-contracts/src/logic/ord.rs" 28 14 28 64 let%span sord'0 = "../../creusot-contracts/src/logic/ord.rs" 38 14 38 61 let%span sord'1 = "../../creusot-contracts/src/logic/ord.rs" 48 14 48 61 diff --git a/tests/should_succeed/index_range.coma b/tests/should_succeed/index_range.coma index 96f1b55ab4..71b46eccc9 100644 --- a/tests/should_succeed/index_range.coma +++ b/tests/should_succeed/index_range.coma @@ -113,71 +113,69 @@ module M_index_range__test_range [#"index_range.rs" 27 0 27 19] let%span sindex_range'5 = "index_range.rs" 35 43 35 44 let%span sindex_range'6 = "index_range.rs" 35 41 35 45 let%span sindex_range'7 = "index_range.rs" 35 49 35 50 - let%span sindex_range'8 = "index_range.rs" 35 12 35 50 - let%span sindex_range'9 = "index_range.rs" 37 17 37 18 - let%span sindex_range'10 = "index_range.rs" 37 20 37 21 - let%span sindex_range'11 = "index_range.rs" 38 23 38 24 - let%span sindex_range'12 = "index_range.rs" 38 30 38 31 - let%span sindex_range'13 = "index_range.rs" 38 28 38 32 - let%span sindex_range'14 = "index_range.rs" 38 36 38 37 - let%span sindex_range'15 = "index_range.rs" 38 43 38 44 - let%span sindex_range'16 = "index_range.rs" 38 41 38 45 - let%span sindex_range'17 = "index_range.rs" 38 49 38 50 - let%span sindex_range'18 = "index_range.rs" 38 12 38 50 - let%span sindex_range'19 = "index_range.rs" 43 16 43 17 - let%span sindex_range'20 = "index_range.rs" 43 19 43 20 - let%span sindex_range'21 = "index_range.rs" 43 31 43 32 - let%span sindex_range'22 = "index_range.rs" 45 16 45 17 - let%span sindex_range'23 = "index_range.rs" 45 19 45 20 - let%span sindex_range'24 = "index_range.rs" 45 31 45 32 - let%span sindex_range'25 = "index_range.rs" 50 20 50 21 - let%span sindex_range'26 = "index_range.rs" 50 23 50 24 - let%span sindex_range'27 = "index_range.rs" 52 20 52 21 - let%span sindex_range'28 = "index_range.rs" 52 23 52 24 - let%span sindex_range'29 = "index_range.rs" 54 20 54 21 - let%span sindex_range'30 = "index_range.rs" 54 23 54 24 - let%span sindex_range'31 = "index_range.rs" 56 20 56 22 - let%span sindex_range'32 = "index_range.rs" 56 24 56 26 - let%span sindex_range'33 = "index_range.rs" 59 21 59 22 - let%span sindex_range'34 = "index_range.rs" 59 24 59 25 - let%span sindex_range'35 = "index_range.rs" 60 23 60 24 - let%span sindex_range'36 = "index_range.rs" 61 6 61 7 - let%span sindex_range'37 = "index_range.rs" 61 4 61 8 - let%span sindex_range'38 = "index_range.rs" 61 11 61 13 - let%span sindex_range'39 = "index_range.rs" 62 6 62 7 - let%span sindex_range'40 = "index_range.rs" 62 4 62 8 - let%span sindex_range'41 = "index_range.rs" 62 11 62 13 - let%span sindex_range'42 = "index_range.rs" 67 14 67 15 - let%span sindex_range'43 = "index_range.rs" 67 12 67 16 - let%span sindex_range'44 = "index_range.rs" 67 20 67 21 - let%span sindex_range'45 = "index_range.rs" 69 25 69 26 - let%span sindex_range'46 = "index_range.rs" 70 16 70 17 - let%span sindex_range'47 = "index_range.rs" 70 22 70 23 - let%span sindex_range'48 = "index_range.rs" 71 16 71 17 - let%span sindex_range'49 = "index_range.rs" 71 22 71 24 - let%span sindex_range'50 = "index_range.rs" 72 16 72 17 - let%span sindex_range'51 = "index_range.rs" 72 22 72 24 - let%span sindex_range'52 = "index_range.rs" 73 16 73 17 - let%span sindex_range'53 = "index_range.rs" 73 22 73 23 - let%span sindex_range'54 = "index_range.rs" 74 16 74 17 - let%span sindex_range'55 = "index_range.rs" 74 22 74 23 - let%span sindex_range'56 = "index_range.rs" 74 12 74 23 - let%span sindex_range'57 = "index_range.rs" 73 12 73 23 - let%span sindex_range'58 = "index_range.rs" 72 12 72 24 - let%span sindex_range'59 = "index_range.rs" 71 12 71 24 - let%span sindex_range'60 = "index_range.rs" 70 12 70 23 - let%span sindex_range'61 = "index_range.rs" 69 12 69 26 - let%span sindex_range'62 = "index_range.rs" 67 12 67 21 - let%span sindex_range'63 = "index_range.rs" 60 12 60 24 - let%span sindex_range'64 = "index_range.rs" 56 12 56 37 - let%span sindex_range'65 = "index_range.rs" 54 12 54 35 - let%span sindex_range'66 = "index_range.rs" 52 12 52 35 - let%span sindex_range'67 = "index_range.rs" 50 12 50 35 - let%span sindex_range'68 = "index_range.rs" 45 12 45 32 - let%span sindex_range'69 = "index_range.rs" 43 12 43 32 - let%span sindex_range'70 = "index_range.rs" 38 12 38 50 - let%span sindex_range'71 = "index_range.rs" 35 12 35 50 - let%span sindex_range'72 = "index_range.rs" 7 4 12 22 + let%span sindex_range'8 = "index_range.rs" 37 17 37 18 + let%span sindex_range'9 = "index_range.rs" 37 20 37 21 + let%span sindex_range'10 = "index_range.rs" 38 23 38 24 + let%span sindex_range'11 = "index_range.rs" 38 30 38 31 + let%span sindex_range'12 = "index_range.rs" 38 28 38 32 + let%span sindex_range'13 = "index_range.rs" 38 36 38 37 + let%span sindex_range'14 = "index_range.rs" 38 43 38 44 + let%span sindex_range'15 = "index_range.rs" 38 41 38 45 + let%span sindex_range'16 = "index_range.rs" 38 49 38 50 + let%span sindex_range'17 = "index_range.rs" 43 16 43 17 + let%span sindex_range'18 = "index_range.rs" 43 19 43 20 + let%span sindex_range'19 = "index_range.rs" 43 31 43 32 + let%span sindex_range'20 = "index_range.rs" 45 16 45 17 + let%span sindex_range'21 = "index_range.rs" 45 19 45 20 + let%span sindex_range'22 = "index_range.rs" 45 31 45 32 + let%span sindex_range'23 = "index_range.rs" 50 20 50 21 + let%span sindex_range'24 = "index_range.rs" 50 23 50 24 + let%span sindex_range'25 = "index_range.rs" 52 20 52 21 + let%span sindex_range'26 = "index_range.rs" 52 23 52 24 + let%span sindex_range'27 = "index_range.rs" 54 20 54 21 + let%span sindex_range'28 = "index_range.rs" 54 23 54 24 + let%span sindex_range'29 = "index_range.rs" 56 20 56 22 + let%span sindex_range'30 = "index_range.rs" 56 24 56 26 + let%span sindex_range'31 = "index_range.rs" 59 21 59 22 + let%span sindex_range'32 = "index_range.rs" 59 24 59 25 + let%span sindex_range'33 = "index_range.rs" 60 23 60 24 + let%span sindex_range'34 = "index_range.rs" 61 6 61 7 + let%span sindex_range'35 = "index_range.rs" 61 4 61 8 + let%span sindex_range'36 = "index_range.rs" 61 11 61 13 + let%span sindex_range'37 = "index_range.rs" 62 6 62 7 + let%span sindex_range'38 = "index_range.rs" 62 4 62 8 + let%span sindex_range'39 = "index_range.rs" 62 11 62 13 + let%span sindex_range'40 = "index_range.rs" 67 14 67 15 + let%span sindex_range'41 = "index_range.rs" 67 12 67 16 + let%span sindex_range'42 = "index_range.rs" 67 20 67 21 + let%span sindex_range'43 = "index_range.rs" 69 25 69 26 + let%span sindex_range'44 = "index_range.rs" 70 16 70 17 + let%span sindex_range'45 = "index_range.rs" 70 22 70 23 + let%span sindex_range'46 = "index_range.rs" 71 16 71 17 + let%span sindex_range'47 = "index_range.rs" 71 22 71 24 + let%span sindex_range'48 = "index_range.rs" 72 16 72 17 + let%span sindex_range'49 = "index_range.rs" 72 22 72 24 + let%span sindex_range'50 = "index_range.rs" 73 16 73 17 + let%span sindex_range'51 = "index_range.rs" 73 22 73 23 + let%span sindex_range'52 = "index_range.rs" 74 16 74 17 + let%span sindex_range'53 = "index_range.rs" 74 22 74 23 + let%span sindex_range'54 = "index_range.rs" 74 4 74 24 + let%span sindex_range'55 = "index_range.rs" 73 4 73 24 + let%span sindex_range'56 = "index_range.rs" 72 4 72 25 + let%span sindex_range'57 = "index_range.rs" 71 4 71 25 + let%span sindex_range'58 = "index_range.rs" 70 4 70 24 + let%span sindex_range'59 = "index_range.rs" 69 4 69 27 + let%span sindex_range'60 = "index_range.rs" 67 4 67 22 + let%span sindex_range'61 = "index_range.rs" 60 4 60 25 + let%span sindex_range'62 = "index_range.rs" 56 4 56 38 + let%span sindex_range'63 = "index_range.rs" 54 4 54 36 + let%span sindex_range'64 = "index_range.rs" 52 4 52 36 + let%span sindex_range'65 = "index_range.rs" 50 4 50 36 + let%span sindex_range'66 = "index_range.rs" 45 4 45 33 + let%span sindex_range'67 = "index_range.rs" 43 4 43 33 + let%span sindex_range'68 = "index_range.rs" 38 4 38 51 + let%span sindex_range'69 = "index_range.rs" 35 4 35 51 + let%span sindex_range'70 = "index_range.rs" 7 4 12 22 let%span svec = "../../creusot-contracts/src/std/vec.rs" 190 16 190 48 let%span svec'0 = "../../creusot-contracts/src/std/vec.rs" 191 16 191 56 let%span svec'1 = "../../creusot-contracts/src/std/vec.rs" 197 26 197 42 @@ -234,7 +232,7 @@ module M_index_range__test_range [#"index_range.rs" 27 0 27 19] meta "rewrite_def" function index_logic let rec create_arr (return' (x: t_Vec)) = any - [ return''0 (result: t_Vec) -> {[%#sindex_range'72] Seq.length (view result) = 5 + [ return''0 (result: t_Vec) -> {[%#sindex_range'70] Seq.length (view result) = 5 /\ Int32.to_int (index_logic result 0) = 0 /\ Int32.to_int (index_logic result 1) = 1 /\ Int32.to_int (index_logic result 2) = 2 @@ -338,223 +336,219 @@ module M_index_range__test_range [#"index_range.rs" 27 0 27 19] t_Range__end = ([%#sindex_range'0] (2: UInt64.t)) } ] s1 | s1 = index {arr} {_5} (fun (_ret: Slice64.slice Int32.t) -> [ &_3 <- _ret ] s2) | s2 = bb2 ] - | bb2 = s0 [ s0 = [ &s <- _3 ] s1 | s1 = len {s} (fun (_ret: UInt64.t) -> [ &_9 <- _ret ] s2) | s2 = bb3 ] + | bb2 = s0 [ s0 = [ &s <- _3 ] s1 | s1 = len {s} (fun (_ret: UInt64.t) -> [ &_8 <- _ret ] s2) | s2 = bb3 ] | bb3 = s0 - [ s0 = [ &_8 <- _9 = ([%#sindex_range'1] (2: UInt64.t)) ] s1 - | s1 = any [ br0 -> {_8 = false} (! bb9) | br1 -> {_8} (! bb4) ] ] + [ s0 = [ &_7 <- _8 = ([%#sindex_range'1] (2: UInt64.t)) ] s1 + | s1 = any [ br0 -> {_7 = false} (! bb12) | br1 -> {_7} (! bb4) ] ] | bb4 = s0 - [ s0 = [ &_13 <- [%#sindex_range'2] (0: UInt64.t) ] s1 - | s1 = [ &_14 <- Slice64.length s ] s2 - | s2 = [ &_15 <- UInt64.lt _13 _14 ] s3 - | s3 = {[@expl:index in bounds] [%#sindex_range'3] _15} s4 + [ s0 = [ &_12 <- [%#sindex_range'2] (0: UInt64.t) ] s1 + | s1 = [ &_13 <- Slice64.length s ] s2 + | s2 = [ &_14 <- UInt64.lt _12 _13 ] s3 + | s3 = {[@expl:index in bounds] [%#sindex_range'3] _14} s4 | s4 = bb5 ] | bb5 = s0 - [ s0 = Slice64.get {s} {_13} (fun (r: Int32.t) -> [ &_11 <- r = ([%#sindex_range'4] (0: Int32.t)) ] s1) - | s1 = any [ br0 -> {_11 = false} (! bb9) | br1 -> {_11} (! bb6) ] ] + [ s0 = Slice64.get {s} {_12} (fun (r: Int32.t) -> [ &_10 <- r = ([%#sindex_range'4] (0: Int32.t)) ] s1) + | s1 = any [ br0 -> {_10 = false} (! bb12) | br1 -> {_10} (! bb6) ] ] | bb6 = s0 [ s0 = [ &_17 <- [%#sindex_range'5] (1: UInt64.t) ] s1 | s1 = [ &_18 <- Slice64.length s ] s2 | s2 = [ &_19 <- UInt64.lt _17 _18 ] s3 | s3 = {[@expl:index in bounds] [%#sindex_range'6] _19} s4 - | s4 = bb10 ] - | bb10 = s0 - [ s0 = Slice64.get {s} {_17} (fun (r: Int32.t) -> [ &_7 <- r = ([%#sindex_range'7] (1: Int32.t)) ] s1) - | s1 = bb11 ] - | bb9 = s0 [ s0 = [ &_7 <- [%#sindex_range'8] false ] s1 | s1 = bb11 ] - | bb11 = any [ br0 -> {_7 = false} (! bb12) | br1 -> {_7} (! bb14) ] - | bb14 = s0 - [ s0 = [ &_24 <- { t_Range__start = ([%#sindex_range'9] (3: UInt64.t)); - t_Range__end = ([%#sindex_range'10] (5: UInt64.t)) } ] s1 + | s4 = bb7 ] + | bb7 = s0 + [ s0 = Slice64.get {s} {_17} (fun (r: Int32.t) -> [ &_15 <- r = ([%#sindex_range'7] (1: Int32.t)) ] s1) + | s1 = any [ br0 -> {_15 = false} (! bb12) | br1 -> {_15} (! bb8) ] ] + | bb8 = s0 + [ s0 = [ &_24 <- { t_Range__start = ([%#sindex_range'8] (3: UInt64.t)); + t_Range__end = ([%#sindex_range'9] (5: UInt64.t)) } ] s1 | s1 = index {arr} {_24} (fun (_ret: Slice64.slice Int32.t) -> [ &_22 <- _ret ] s2) - | s2 = bb15 ] - | bb15 = s0 [ s0 = [ &s'0 <- _22 ] s1 | s1 = len {s'0} (fun (_ret: UInt64.t) -> [ &_28 <- _ret ] s2) | s2 = bb16 ] + | s2 = bb13 ] + | bb13 = s0 [ s0 = [ &s'0 <- _22 ] s1 | s1 = len {s'0} (fun (_ret: UInt64.t) -> [ &_27 <- _ret ] s2) | s2 = bb14 ] + | bb14 = s0 + [ s0 = [ &_26 <- _27 = ([%#sindex_range'10] (2: UInt64.t)) ] s1 + | s1 = any [ br0 -> {_26 = false} (! bb23) | br1 -> {_26} (! bb15) ] ] + | bb15 = s0 + [ s0 = [ &_31 <- [%#sindex_range'11] (0: UInt64.t) ] s1 + | s1 = [ &_32 <- Slice64.length s'0 ] s2 + | s2 = [ &_33 <- UInt64.lt _31 _32 ] s3 + | s3 = {[@expl:index in bounds] [%#sindex_range'12] _33} s4 + | s4 = bb16 ] | bb16 = s0 - [ s0 = [ &_27 <- _28 = ([%#sindex_range'11] (2: UInt64.t)) ] s1 - | s1 = any [ br0 -> {_27 = false} (! bb22) | br1 -> {_27} (! bb17) ] ] + [ s0 = Slice64.get {s'0} {_31} + (fun (r: Int32.t) -> [ &_29 <- r = ([%#sindex_range'13] (3: Int32.t)) ] s1) + | s1 = any [ br0 -> {_29 = false} (! bb23) | br1 -> {_29} (! bb17) ] ] | bb17 = s0 - [ s0 = [ &_32 <- [%#sindex_range'12] (0: UInt64.t) ] s1 - | s1 = [ &_33 <- Slice64.length s'0 ] s2 - | s2 = [ &_34 <- UInt64.lt _32 _33 ] s3 - | s3 = {[@expl:index in bounds] [%#sindex_range'13] _34} s4 - | s4 = bb18 ] - | bb18 = s0 - [ s0 = Slice64.get {s'0} {_32} - (fun (r: Int32.t) -> [ &_30 <- r = ([%#sindex_range'14] (3: Int32.t)) ] s1) - | s1 = any [ br0 -> {_30 = false} (! bb22) | br1 -> {_30} (! bb19) ] ] - | bb19 = s0 - [ s0 = [ &_36 <- [%#sindex_range'15] (1: UInt64.t) ] s1 + [ s0 = [ &_36 <- [%#sindex_range'14] (1: UInt64.t) ] s1 | s1 = [ &_37 <- Slice64.length s'0 ] s2 | s2 = [ &_38 <- UInt64.lt _36 _37 ] s3 - | s3 = {[@expl:index in bounds] [%#sindex_range'16] _38} s4 - | s4 = bb23 ] - | bb23 = s0 + | s3 = {[@expl:index in bounds] [%#sindex_range'15] _38} s4 + | s4 = bb18 ] + | bb18 = s0 [ s0 = Slice64.get {s'0} {_36} - (fun (r: Int32.t) -> [ &_26 <- r = ([%#sindex_range'17] (4: Int32.t)) ] s1) - | s1 = bb24 ] - | bb22 = s0 [ s0 = [ &_26 <- [%#sindex_range'18] false ] s1 | s1 = bb24 ] - | bb24 = any [ br0 -> {_26 = false} (! bb25) | br1 -> {_26} (! bb27) ] - | bb27 = s0 - [ s0 = [ &_46 <- { t_Range__start = ([%#sindex_range'19] (2: UInt64.t)); - t_Range__end = ([%#sindex_range'20] (2: UInt64.t)) } ] s1 + (fun (r: Int32.t) -> [ &_34 <- r = ([%#sindex_range'16] (4: Int32.t)) ] s1) + | s1 = any [ br0 -> {_34 = false} (! bb23) | br1 -> {_34} (! bb19) ] ] + | bb19 = s0 + [ s0 = [ &_46 <- { t_Range__start = ([%#sindex_range'17] (2: UInt64.t)); + t_Range__end = ([%#sindex_range'18] (2: UInt64.t)) } ] s1 | s1 = index {arr} {_46} (fun (_ret: Slice64.slice Int32.t) -> [ &_44 <- _ret ] s2) + | s2 = bb24 ] + | bb24 = s0 [ s0 = len {_44} (fun (_ret: UInt64.t) -> [ &_42 <- _ret ] s1) | s1 = bb25 ] + | bb25 = s0 + [ s0 = [ &_41 <- _42 = ([%#sindex_range'19] (0: UInt64.t)) ] s1 + | s1 = any [ br0 -> {_41 = false} (! bb27) | br1 -> {_41} (! bb26) ] ] + | bb26 = s0 + [ s0 = [ &_54 <- { t_Range__start = ([%#sindex_range'20] (5: UInt64.t)); + t_Range__end = ([%#sindex_range'21] (5: UInt64.t)) } ] s1 + | s1 = index {arr} {_54} (fun (_ret: Slice64.slice Int32.t) -> [ &_52 <- _ret ] s2) | s2 = bb28 ] - | bb28 = s0 [ s0 = len {_44} (fun (_ret: UInt64.t) -> [ &_42 <- _ret ] s1) | s1 = bb29 ] + | bb28 = s0 [ s0 = len {_52} (fun (_ret: UInt64.t) -> [ &_50 <- _ret ] s1) | s1 = bb29 ] | bb29 = s0 - [ s0 = [ &_41 <- _42 = ([%#sindex_range'21] (0: UInt64.t)) ] s1 - | s1 = any [ br0 -> {_41 = false} (! bb30) | br1 -> {_41} (! bb32) ] ] + [ s0 = [ &_49 <- _50 = ([%#sindex_range'22] (0: UInt64.t)) ] s1 + | s1 = any [ br0 -> {_49 = false} (! bb31) | br1 -> {_49} (! bb30) ] ] + | bb30 = s0 [ s0 = deref {arr} (fun (_ret: Slice64.slice Int32.t) -> [ &_61 <- _ret ] s1) | s1 = bb32 ] | bb32 = s0 - [ s0 = [ &_54 <- { t_Range__start = ([%#sindex_range'22] (5: UInt64.t)); - t_Range__end = ([%#sindex_range'23] (5: UInt64.t)) } ] s1 - | s1 = index {arr} {_54} (fun (_ret: Slice64.slice Int32.t) -> [ &_52 <- _ret ] s2) - | s2 = bb33 ] - | bb33 = s0 [ s0 = len {_52} (fun (_ret: UInt64.t) -> [ &_50 <- _ret ] s1) | s1 = bb34 ] - | bb34 = s0 - [ s0 = [ &_49 <- _50 = ([%#sindex_range'24] (0: UInt64.t)) ] s1 - | s1 = any [ br0 -> {_49 = false} (! bb35) | br1 -> {_49} (! bb37) ] ] - | bb37 = s0 [ s0 = deref {arr} (fun (_ret: Slice64.slice Int32.t) -> [ &_61 <- _ret ] s1) | s1 = bb38 ] - | bb38 = s0 - [ s0 = [ &_63 <- { t_Range__start = ([%#sindex_range'25] (2: UInt64.t)); - t_Range__end = ([%#sindex_range'26] (6: UInt64.t)) } ] s1 + [ s0 = [ &_63 <- { t_Range__start = ([%#sindex_range'23] (2: UInt64.t)); + t_Range__end = ([%#sindex_range'24] (6: UInt64.t)) } ] s1 | s1 = get {_61} {_63} (fun (_ret: t_Option) -> [ &_59 <- _ret ] s2) - | s2 = bb39 ] - | bb39 = s0 [ s0 = is_none {_59} (fun (_ret: bool) -> [ &_57 <- _ret ] s1) | s1 = bb40 ] - | bb40 = any [ br0 -> {_57 = false} (! bb41) | br1 -> {_57} (! bb43) ] - | bb43 = s0 [ s0 = deref {arr} (fun (_ret: Slice64.slice Int32.t) -> [ &_70 <- _ret ] s1) | s1 = bb44 ] - | bb44 = s0 - [ s0 = [ &_72 <- { t_Range__start = ([%#sindex_range'27] (2: UInt64.t)); - t_Range__end = ([%#sindex_range'28] (1: UInt64.t)) } ] s1 + | s2 = bb33 ] + | bb33 = s0 [ s0 = is_none {_59} (fun (_ret: bool) -> [ &_57 <- _ret ] s1) | s1 = bb34 ] + | bb34 = any [ br0 -> {_57 = false} (! bb36) | br1 -> {_57} (! bb35) ] + | bb35 = s0 [ s0 = deref {arr} (fun (_ret: Slice64.slice Int32.t) -> [ &_70 <- _ret ] s1) | s1 = bb37 ] + | bb37 = s0 + [ s0 = [ &_72 <- { t_Range__start = ([%#sindex_range'25] (2: UInt64.t)); + t_Range__end = ([%#sindex_range'26] (1: UInt64.t)) } ] s1 | s1 = get {_70} {_72} (fun (_ret: t_Option) -> [ &_68 <- _ret ] s2) - | s2 = bb45 ] - | bb45 = s0 [ s0 = is_none {_68} (fun (_ret: bool) -> [ &_66 <- _ret ] s1) | s1 = bb46 ] - | bb46 = any [ br0 -> {_66 = false} (! bb47) | br1 -> {_66} (! bb49) ] - | bb49 = s0 [ s0 = deref {arr} (fun (_ret: Slice64.slice Int32.t) -> [ &_79 <- _ret ] s1) | s1 = bb50 ] - | bb50 = s0 - [ s0 = [ &_81 <- { t_Range__start = ([%#sindex_range'29] (6: UInt64.t)); - t_Range__end = ([%#sindex_range'30] (6: UInt64.t)) } ] s1 + | s2 = bb38 ] + | bb38 = s0 [ s0 = is_none {_68} (fun (_ret: bool) -> [ &_66 <- _ret ] s1) | s1 = bb39 ] + | bb39 = any [ br0 -> {_66 = false} (! bb41) | br1 -> {_66} (! bb40) ] + | bb40 = s0 [ s0 = deref {arr} (fun (_ret: Slice64.slice Int32.t) -> [ &_79 <- _ret ] s1) | s1 = bb42 ] + | bb42 = s0 + [ s0 = [ &_81 <- { t_Range__start = ([%#sindex_range'27] (6: UInt64.t)); + t_Range__end = ([%#sindex_range'28] (6: UInt64.t)) } ] s1 | s1 = get {_79} {_81} (fun (_ret: t_Option) -> [ &_77 <- _ret ] s2) - | s2 = bb51 ] - | bb51 = s0 [ s0 = is_none {_77} (fun (_ret: bool) -> [ &_75 <- _ret ] s1) | s1 = bb52 ] - | bb52 = any [ br0 -> {_75 = false} (! bb53) | br1 -> {_75} (! bb55) ] - | bb55 = s0 [ s0 = deref {arr} (fun (_ret: Slice64.slice Int32.t) -> [ &_88 <- _ret ] s1) | s1 = bb56 ] - | bb56 = s0 - [ s0 = [ &_90 <- { t_Range__start = ([%#sindex_range'31] (10: UInt64.t)); - t_Range__end = ([%#sindex_range'32] (10: UInt64.t)) } ] s1 + | s2 = bb43 ] + | bb43 = s0 [ s0 = is_none {_77} (fun (_ret: bool) -> [ &_75 <- _ret ] s1) | s1 = bb44 ] + | bb44 = any [ br0 -> {_75 = false} (! bb46) | br1 -> {_75} (! bb45) ] + | bb45 = s0 [ s0 = deref {arr} (fun (_ret: Slice64.slice Int32.t) -> [ &_88 <- _ret ] s1) | s1 = bb47 ] + | bb47 = s0 + [ s0 = [ &_90 <- { t_Range__start = ([%#sindex_range'29] (10: UInt64.t)); + t_Range__end = ([%#sindex_range'30] (10: UInt64.t)) } ] s1 | s1 = get {_88} {_90} (fun (_ret: t_Option) -> [ &_86 <- _ret ] s2) - | s2 = bb57 ] - | bb57 = s0 [ s0 = is_none {_86} (fun (_ret: bool) -> [ &_84 <- _ret ] s1) | s1 = bb58 ] - | bb58 = any [ br0 -> {_84 = false} (! bb59) | br1 -> {_84} (! bb61) ] - | bb61 = s0 + | s2 = bb48 ] + | bb48 = s0 [ s0 = is_none {_86} (fun (_ret: bool) -> [ &_84 <- _ret ] s1) | s1 = bb49 ] + | bb49 = any [ br0 -> {_84 = false} (! bb51) | br1 -> {_84} (! bb50) ] + | bb50 = s0 [ s0 = MutBorrow.borrow_mut {arr} (fun (_ret: MutBorrow.t t_Vec) -> [ &_94 <- _ret ] [ &arr <- _ret.final ] s1) - | s1 = [ &_95 <- { t_Range__start = ([%#sindex_range'33] (1: UInt64.t)); - t_Range__end = ([%#sindex_range'34] (4: UInt64.t)) } ] s2 + | s1 = [ &_95 <- { t_Range__start = ([%#sindex_range'31] (1: UInt64.t)); + t_Range__end = ([%#sindex_range'32] (4: UInt64.t)) } ] s2 | s2 = index_mut {_94} {_95} (fun (_ret: MutBorrow.t (Slice64.slice Int32.t)) -> [ &_93 <- _ret ] s3) - | s3 = bb62 ] - | bb62 = s0 + | s3 = bb52 ] + | bb52 = s0 [ s0 = MutBorrow.borrow_final {_93.current} {MutBorrow.get_id _93} (fun (_ret: MutBorrow.t (Slice64.slice Int32.t)) -> [ &s'1 <- _ret ] [ &_93 <- { _93 with current = _ret.final } ] s1) | s1 = len {s'1.current} (fun (_ret: UInt64.t) -> [ &_98 <- _ret ] s2) - | s2 = bb63 ] - | bb63 = s0 - [ s0 = [ &_97 <- _98 = ([%#sindex_range'35] (3: UInt64.t)) ] s1 - | s1 = any [ br0 -> {_97 = false} (! bb64) | br1 -> {_97} (! bb66) ] ] - | bb66 = s0 - [ s0 = [ &_101 <- [%#sindex_range'36] (0: UInt64.t) ] s1 + | s2 = bb53 ] + | bb53 = s0 + [ s0 = [ &_97 <- _98 = ([%#sindex_range'33] (3: UInt64.t)) ] s1 + | s1 = any [ br0 -> {_97 = false} (! bb55) | br1 -> {_97} (! bb54) ] ] + | bb54 = s0 + [ s0 = [ &_101 <- [%#sindex_range'34] (0: UInt64.t) ] s1 | s1 = Opaque.fresh_ptr (fun (_ptr: Opaque.ptr) -> -{Slice64.slice_ptr_len _ptr = Slice64.length s'1.current}- [ &_102 <- _ptr ] s2) | s2 = [ &_103 <- Slice64.slice_ptr_len _102 ] s3 | s3 = [ &_104 <- UInt64.lt _101 _103 ] s4 - | s4 = {[@expl:index in bounds] [%#sindex_range'37] _104} s5 - | s5 = bb67 ] - | bb67 = s0 - [ s0 = Slice64.set {s'1.current} {_101} {[%#sindex_range'38] (-1: Int32.t)} + | s4 = {[@expl:index in bounds] [%#sindex_range'35] _104} s5 + | s5 = bb56 ] + | bb56 = s0 + [ s0 = Slice64.set {s'1.current} {_101} {[%#sindex_range'36] (-1: Int32.t)} (fun (r: Slice64.slice Int32.t) -> [ &s'1 <- { s'1 with current = r } ] s1) - | s1 = [ &_105 <- [%#sindex_range'39] (1: UInt64.t) ] s2 + | s1 = [ &_105 <- [%#sindex_range'37] (1: UInt64.t) ] s2 | s2 = Opaque.fresh_ptr (fun (_ptr: Opaque.ptr) -> -{Slice64.slice_ptr_len _ptr = Slice64.length s'1.current}- [ &_106 <- _ptr ] s3) | s3 = [ &_107 <- Slice64.slice_ptr_len _106 ] s4 | s4 = [ &_108 <- UInt64.lt _105 _107 ] s5 - | s5 = {[@expl:index in bounds] [%#sindex_range'40] _108} s6 - | s6 = bb68 ] - | bb68 = s0 - [ s0 = Slice64.set {s'1.current} {_105} {[%#sindex_range'41] (-1: Int32.t)} + | s5 = {[@expl:index in bounds] [%#sindex_range'38] _108} s6 + | s6 = bb57 ] + | bb57 = s0 + [ s0 = Slice64.set {s'1.current} {_105} {[%#sindex_range'39] (-1: Int32.t)} (fun (r: Slice64.slice Int32.t) -> [ &s'1 <- { s'1 with current = r } ] s1) - | s1 = [ &_112 <- [%#sindex_range'42] (2: UInt64.t) ] s2 + | s1 = [ &_112 <- [%#sindex_range'40] (2: UInt64.t) ] s2 | s2 = Opaque.fresh_ptr (fun (_ptr: Opaque.ptr) -> -{Slice64.slice_ptr_len _ptr = Slice64.length s'1.current}- [ &_113 <- _ptr ] s3) | s3 = [ &_114 <- Slice64.slice_ptr_len _113 ] s4 | s4 = [ &_115 <- UInt64.lt _112 _114 ] s5 - | s5 = {[@expl:index in bounds] [%#sindex_range'43] _115} s6 - | s6 = bb69 ] - | bb69 = s0 + | s5 = {[@expl:index in bounds] [%#sindex_range'41] _115} s6 + | s6 = bb58 ] + | bb58 = s0 [ s0 = -{resolve'0 s'1}- s1 | s1 = -{resolve'0 _93}- s2 | s2 = Slice64.get {s'1.current} {_112} - (fun (r: Int32.t) -> [ &_110 <- r = ([%#sindex_range'44] (3: Int32.t)) ] s3) - | s3 = any [ br0 -> {_110 = false} (! bb70) | br1 -> {_110} (! bb72) ] ] - | bb72 = s0 [ s0 = len'0 {arr} (fun (_ret: UInt64.t) -> [ &_119 <- _ret ] s1) | s1 = bb73 ] + (fun (r: Int32.t) -> [ &_110 <- r = ([%#sindex_range'42] (3: Int32.t)) ] s3) + | s3 = any [ br0 -> {_110 = false} (! bb60) | br1 -> {_110} (! bb59) ] ] + | bb59 = s0 [ s0 = len'0 {arr} (fun (_ret: UInt64.t) -> [ &_119 <- _ret ] s1) | s1 = bb61 ] + | bb61 = s0 + [ s0 = [ &_118 <- _119 = ([%#sindex_range'43] (5: UInt64.t)) ] s1 + | s1 = any [ br0 -> {_118 = false} (! bb63) | br1 -> {_118} (! bb62) ] ] + | bb62 = s0 + [ s0 = index'0 {arr} {[%#sindex_range'44] (0: UInt64.t)} (fun (_ret: Int32.t) -> [ &_125 <- _ret ] s1) + | s1 = bb64 ] + | bb64 = s0 + [ s0 = [ &_123 <- _125 = ([%#sindex_range'45] (0: Int32.t)) ] s1 + | s1 = any [ br0 -> {_123 = false} (! bb66) | br1 -> {_123} (! bb65) ] ] + | bb65 = s0 + [ s0 = index'0 {arr} {[%#sindex_range'46] (1: UInt64.t)} (fun (_ret: Int32.t) -> [ &_131 <- _ret ] s1) + | s1 = bb67 ] + | bb67 = s0 + [ s0 = [ &_129 <- _131 = ([%#sindex_range'47] (-1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_129 = false} (! bb69) | br1 -> {_129} (! bb68) ] ] + | bb68 = s0 + [ s0 = index'0 {arr} {[%#sindex_range'48] (2: UInt64.t)} (fun (_ret: Int32.t) -> [ &_137 <- _ret ] s1) + | s1 = bb70 ] + | bb70 = s0 + [ s0 = [ &_135 <- _137 = ([%#sindex_range'49] (-1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_135 = false} (! bb72) | br1 -> {_135} (! bb71) ] ] + | bb71 = s0 + [ s0 = index'0 {arr} {[%#sindex_range'50] (3: UInt64.t)} (fun (_ret: Int32.t) -> [ &_143 <- _ret ] s1) + | s1 = bb73 ] | bb73 = s0 - [ s0 = [ &_118 <- _119 = ([%#sindex_range'45] (5: UInt64.t)) ] s1 - | s1 = any [ br0 -> {_118 = false} (! bb74) | br1 -> {_118} (! bb76) ] ] + [ s0 = [ &_141 <- _143 = ([%#sindex_range'51] (3: Int32.t)) ] s1 + | s1 = any [ br0 -> {_141 = false} (! bb75) | br1 -> {_141} (! bb74) ] ] + | bb74 = s0 + [ s0 = index'0 {arr} {[%#sindex_range'52] (4: UInt64.t)} (fun (_ret: Int32.t) -> [ &_149 <- _ret ] s1) + | s1 = bb76 ] | bb76 = s0 - [ s0 = index'0 {arr} {[%#sindex_range'46] (0: UInt64.t)} (fun (_ret: Int32.t) -> [ &_125 <- _ret ] s1) - | s1 = bb77 ] - | bb77 = s0 - [ s0 = [ &_123 <- _125 = ([%#sindex_range'47] (0: Int32.t)) ] s1 - | s1 = any [ br0 -> {_123 = false} (! bb78) | br1 -> {_123} (! bb80) ] ] - | bb80 = s0 - [ s0 = index'0 {arr} {[%#sindex_range'48] (1: UInt64.t)} (fun (_ret: Int32.t) -> [ &_131 <- _ret ] s1) - | s1 = bb81 ] - | bb81 = s0 - [ s0 = [ &_129 <- _131 = ([%#sindex_range'49] (-1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_129 = false} (! bb82) | br1 -> {_129} (! bb84) ] ] - | bb84 = s0 - [ s0 = index'0 {arr} {[%#sindex_range'50] (2: UInt64.t)} (fun (_ret: Int32.t) -> [ &_137 <- _ret ] s1) - | s1 = bb85 ] - | bb85 = s0 - [ s0 = [ &_135 <- _137 = ([%#sindex_range'51] (-1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_135 = false} (! bb86) | br1 -> {_135} (! bb88) ] ] - | bb88 = s0 - [ s0 = index'0 {arr} {[%#sindex_range'52] (3: UInt64.t)} (fun (_ret: Int32.t) -> [ &_143 <- _ret ] s1) - | s1 = bb89 ] - | bb89 = s0 - [ s0 = [ &_141 <- _143 = ([%#sindex_range'53] (3: Int32.t)) ] s1 - | s1 = any [ br0 -> {_141 = false} (! bb90) | br1 -> {_141} (! bb92) ] ] - | bb92 = s0 - [ s0 = index'0 {arr} {[%#sindex_range'54] (4: UInt64.t)} (fun (_ret: Int32.t) -> [ &_149 <- _ret ] s1) - | s1 = bb93 ] - | bb93 = s0 - [ s0 = [ &_147 <- _149 = ([%#sindex_range'55] (4: Int32.t)) ] s1 - | s1 = any [ br0 -> {_147 = false} (! bb94) | br1 -> {_147} (! bb97) ] ] - | bb97 = return''0 {_0} - | bb94 = {[%#sindex_range'56] false} any - | bb90 = {[%#sindex_range'57] false} any - | bb86 = {[%#sindex_range'58] false} any - | bb82 = {[%#sindex_range'59] false} any - | bb78 = {[%#sindex_range'60] false} any - | bb74 = {[%#sindex_range'61] false} any - | bb70 = {[%#sindex_range'62] false} any - | bb64 = s0 [ s0 = -{resolve'0 s'1}- s1 | s1 = -{resolve'0 _93}- s2 | s2 = {[%#sindex_range'63] false} any ] - | bb59 = {[%#sindex_range'64] false} any - | bb53 = {[%#sindex_range'65] false} any - | bb47 = {[%#sindex_range'66] false} any - | bb41 = {[%#sindex_range'67] false} any - | bb35 = {[%#sindex_range'68] false} any - | bb30 = {[%#sindex_range'69] false} any - | bb25 = {[%#sindex_range'70] false} any - | bb12 = {[%#sindex_range'71] false} any ] + [ s0 = [ &_147 <- _149 = ([%#sindex_range'53] (4: Int32.t)) ] s1 + | s1 = any [ br0 -> {_147 = false} (! bb78) | br1 -> {_147} (! bb79) ] ] + | bb79 = return''0 {_0} + | bb78 = {[%#sindex_range'54] false} any + | bb75 = {[%#sindex_range'55] false} any + | bb72 = {[%#sindex_range'56] false} any + | bb69 = {[%#sindex_range'57] false} any + | bb66 = {[%#sindex_range'58] false} any + | bb63 = {[%#sindex_range'59] false} any + | bb60 = {[%#sindex_range'60] false} any + | bb55 = s0 [ s0 = -{resolve'0 s'1}- s1 | s1 = -{resolve'0 _93}- s2 | s2 = {[%#sindex_range'61] false} any ] + | bb51 = {[%#sindex_range'62] false} any + | bb46 = {[%#sindex_range'63] false} any + | bb41 = {[%#sindex_range'64] false} any + | bb36 = {[%#sindex_range'65] false} any + | bb31 = {[%#sindex_range'66] false} any + | bb27 = {[%#sindex_range'67] false} any + | bb23 = {[%#sindex_range'68] false} any + | bb12 = {[%#sindex_range'69] false} any ] [ & _0: () = Any.any_l () | & arr: t_Vec = Any.any_l () | & s: Slice64.slice Int32.t = Any.any_l () | & _3: Slice64.slice Int32.t = Any.any_l () | & _5: t_Range = Any.any_l () | & _7: bool = Any.any_l () - | & _8: bool = Any.any_l () - | & _9: UInt64.t = Any.any_l () - | & _11: bool = Any.any_l () + | & _8: UInt64.t = Any.any_l () + | & _10: bool = Any.any_l () + | & _12: UInt64.t = Any.any_l () | & _13: UInt64.t = Any.any_l () - | & _14: UInt64.t = Any.any_l () + | & _14: bool = Any.any_l () | & _15: bool = Any.any_l () | & _17: UInt64.t = Any.any_l () | & _18: UInt64.t = Any.any_l () @@ -563,11 +557,11 @@ module M_index_range__test_range [#"index_range.rs" 27 0 27 19] | & _22: Slice64.slice Int32.t = Any.any_l () | & _24: t_Range = Any.any_l () | & _26: bool = Any.any_l () - | & _27: bool = Any.any_l () - | & _28: UInt64.t = Any.any_l () - | & _30: bool = Any.any_l () + | & _27: UInt64.t = Any.any_l () + | & _29: bool = Any.any_l () + | & _31: UInt64.t = Any.any_l () | & _32: UInt64.t = Any.any_l () - | & _33: UInt64.t = Any.any_l () + | & _33: bool = Any.any_l () | & _34: bool = Any.any_l () | & _36: UInt64.t = Any.any_l () | & _37: UInt64.t = Any.any_l () @@ -637,44 +631,43 @@ module M_index_range__test_range_to [#"index_range.rs" 78 0 78 22] let%span sindex_range'4 = "index_range.rs" 86 43 86 44 let%span sindex_range'5 = "index_range.rs" 86 41 86 45 let%span sindex_range'6 = "index_range.rs" 86 49 86 50 - let%span sindex_range'7 = "index_range.rs" 86 12 86 50 - let%span sindex_range'8 = "index_range.rs" 91 18 91 19 - let%span sindex_range'9 = "index_range.rs" 91 30 91 31 - let%span sindex_range'10 = "index_range.rs" 96 22 96 23 - let%span sindex_range'11 = "index_range.rs" 99 23 99 24 - let%span sindex_range'12 = "index_range.rs" 100 23 100 24 - let%span sindex_range'13 = "index_range.rs" 101 6 101 7 - let%span sindex_range'14 = "index_range.rs" 101 4 101 8 - let%span sindex_range'15 = "index_range.rs" 101 11 101 13 - let%span sindex_range'16 = "index_range.rs" 102 6 102 7 - let%span sindex_range'17 = "index_range.rs" 102 4 102 8 - let%span sindex_range'18 = "index_range.rs" 102 11 102 13 - let%span sindex_range'19 = "index_range.rs" 104 14 104 15 - let%span sindex_range'20 = "index_range.rs" 104 12 104 16 - let%span sindex_range'21 = "index_range.rs" 104 20 104 21 - let%span sindex_range'22 = "index_range.rs" 106 25 106 26 - let%span sindex_range'23 = "index_range.rs" 107 16 107 17 - let%span sindex_range'24 = "index_range.rs" 107 22 107 24 - let%span sindex_range'25 = "index_range.rs" 108 16 108 17 - let%span sindex_range'26 = "index_range.rs" 108 22 108 23 - let%span sindex_range'27 = "index_range.rs" 109 16 109 17 - let%span sindex_range'28 = "index_range.rs" 109 22 109 24 - let%span sindex_range'29 = "index_range.rs" 110 16 110 17 - let%span sindex_range'30 = "index_range.rs" 110 22 110 23 - let%span sindex_range'31 = "index_range.rs" 111 16 111 17 - let%span sindex_range'32 = "index_range.rs" 111 22 111 23 - let%span sindex_range'33 = "index_range.rs" 111 12 111 23 - let%span sindex_range'34 = "index_range.rs" 110 12 110 23 - let%span sindex_range'35 = "index_range.rs" 109 12 109 24 - let%span sindex_range'36 = "index_range.rs" 108 12 108 23 - let%span sindex_range'37 = "index_range.rs" 107 12 107 24 - let%span sindex_range'38 = "index_range.rs" 106 12 106 26 - let%span sindex_range'39 = "index_range.rs" 104 12 104 21 - let%span sindex_range'40 = "index_range.rs" 100 12 100 24 - let%span sindex_range'41 = "index_range.rs" 96 12 96 34 - let%span sindex_range'42 = "index_range.rs" 91 12 91 31 - let%span sindex_range'43 = "index_range.rs" 86 12 86 50 - let%span sindex_range'44 = "index_range.rs" 7 4 12 22 + let%span sindex_range'7 = "index_range.rs" 91 18 91 19 + let%span sindex_range'8 = "index_range.rs" 91 30 91 31 + let%span sindex_range'9 = "index_range.rs" 96 22 96 23 + let%span sindex_range'10 = "index_range.rs" 99 23 99 24 + let%span sindex_range'11 = "index_range.rs" 100 23 100 24 + let%span sindex_range'12 = "index_range.rs" 101 6 101 7 + let%span sindex_range'13 = "index_range.rs" 101 4 101 8 + let%span sindex_range'14 = "index_range.rs" 101 11 101 13 + let%span sindex_range'15 = "index_range.rs" 102 6 102 7 + let%span sindex_range'16 = "index_range.rs" 102 4 102 8 + let%span sindex_range'17 = "index_range.rs" 102 11 102 13 + let%span sindex_range'18 = "index_range.rs" 104 14 104 15 + let%span sindex_range'19 = "index_range.rs" 104 12 104 16 + let%span sindex_range'20 = "index_range.rs" 104 20 104 21 + let%span sindex_range'21 = "index_range.rs" 106 25 106 26 + let%span sindex_range'22 = "index_range.rs" 107 16 107 17 + let%span sindex_range'23 = "index_range.rs" 107 22 107 24 + let%span sindex_range'24 = "index_range.rs" 108 16 108 17 + let%span sindex_range'25 = "index_range.rs" 108 22 108 23 + let%span sindex_range'26 = "index_range.rs" 109 16 109 17 + let%span sindex_range'27 = "index_range.rs" 109 22 109 24 + let%span sindex_range'28 = "index_range.rs" 110 16 110 17 + let%span sindex_range'29 = "index_range.rs" 110 22 110 23 + let%span sindex_range'30 = "index_range.rs" 111 16 111 17 + let%span sindex_range'31 = "index_range.rs" 111 22 111 23 + let%span sindex_range'32 = "index_range.rs" 111 4 111 24 + let%span sindex_range'33 = "index_range.rs" 110 4 110 24 + let%span sindex_range'34 = "index_range.rs" 109 4 109 25 + let%span sindex_range'35 = "index_range.rs" 108 4 108 24 + let%span sindex_range'36 = "index_range.rs" 107 4 107 25 + let%span sindex_range'37 = "index_range.rs" 106 4 106 27 + let%span sindex_range'38 = "index_range.rs" 104 4 104 22 + let%span sindex_range'39 = "index_range.rs" 100 4 100 25 + let%span sindex_range'40 = "index_range.rs" 96 4 96 35 + let%span sindex_range'41 = "index_range.rs" 91 4 91 32 + let%span sindex_range'42 = "index_range.rs" 86 4 86 51 + let%span sindex_range'43 = "index_range.rs" 7 4 12 22 let%span svec = "../../creusot-contracts/src/std/vec.rs" 190 16 190 48 let%span svec'0 = "../../creusot-contracts/src/std/vec.rs" 191 16 191 56 let%span svec'1 = "../../creusot-contracts/src/std/vec.rs" 197 26 197 42 @@ -731,7 +724,7 @@ module M_index_range__test_range_to [#"index_range.rs" 78 0 78 22] meta "rewrite_def" function index_logic let rec create_arr (return' (x: t_Vec)) = any - [ return''0 (result: t_Vec) -> {[%#sindex_range'44] Seq.length (view result) = 5 + [ return''0 (result: t_Vec) -> {[%#sindex_range'43] Seq.length (view result) = 5 /\ Int32.to_int (index_logic result 0) = 0 /\ Int32.to_int (index_logic result 1) = 1 /\ Int32.to_int (index_logic result 2) = 2 @@ -832,151 +825,149 @@ module M_index_range__test_range_to [#"index_range.rs" 78 0 78 22] [ s0 = [ &_5 <- { t_RangeTo__end = ([%#sindex_range] (2: UInt64.t)) } ] s1 | s1 = index {arr} {_5} (fun (_ret: Slice64.slice Int32.t) -> [ &_3 <- _ret ] s2) | s2 = bb2 ] - | bb2 = s0 [ s0 = [ &s <- _3 ] s1 | s1 = len {s} (fun (_ret: UInt64.t) -> [ &_9 <- _ret ] s2) | s2 = bb3 ] + | bb2 = s0 [ s0 = [ &s <- _3 ] s1 | s1 = len {s} (fun (_ret: UInt64.t) -> [ &_8 <- _ret ] s2) | s2 = bb3 ] | bb3 = s0 - [ s0 = [ &_8 <- _9 = ([%#sindex_range'0] (2: UInt64.t)) ] s1 - | s1 = any [ br0 -> {_8 = false} (! bb9) | br1 -> {_8} (! bb4) ] ] + [ s0 = [ &_7 <- _8 = ([%#sindex_range'0] (2: UInt64.t)) ] s1 + | s1 = any [ br0 -> {_7 = false} (! bb12) | br1 -> {_7} (! bb4) ] ] | bb4 = s0 - [ s0 = [ &_13 <- [%#sindex_range'1] (0: UInt64.t) ] s1 - | s1 = [ &_14 <- Slice64.length s ] s2 - | s2 = [ &_15 <- UInt64.lt _13 _14 ] s3 - | s3 = {[@expl:index in bounds] [%#sindex_range'2] _15} s4 + [ s0 = [ &_12 <- [%#sindex_range'1] (0: UInt64.t) ] s1 + | s1 = [ &_13 <- Slice64.length s ] s2 + | s2 = [ &_14 <- UInt64.lt _12 _13 ] s3 + | s3 = {[@expl:index in bounds] [%#sindex_range'2] _14} s4 | s4 = bb5 ] | bb5 = s0 - [ s0 = Slice64.get {s} {_13} (fun (r: Int32.t) -> [ &_11 <- r = ([%#sindex_range'3] (0: Int32.t)) ] s1) - | s1 = any [ br0 -> {_11 = false} (! bb9) | br1 -> {_11} (! bb6) ] ] + [ s0 = Slice64.get {s} {_12} (fun (r: Int32.t) -> [ &_10 <- r = ([%#sindex_range'3] (0: Int32.t)) ] s1) + | s1 = any [ br0 -> {_10 = false} (! bb12) | br1 -> {_10} (! bb6) ] ] | bb6 = s0 [ s0 = [ &_17 <- [%#sindex_range'4] (1: UInt64.t) ] s1 | s1 = [ &_18 <- Slice64.length s ] s2 | s2 = [ &_19 <- UInt64.lt _17 _18 ] s3 | s3 = {[@expl:index in bounds] [%#sindex_range'5] _19} s4 - | s4 = bb10 ] - | bb10 = s0 - [ s0 = Slice64.get {s} {_17} (fun (r: Int32.t) -> [ &_7 <- r = ([%#sindex_range'6] (1: Int32.t)) ] s1) - | s1 = bb11 ] - | bb9 = s0 [ s0 = [ &_7 <- [%#sindex_range'7] false ] s1 | s1 = bb11 ] - | bb11 = any [ br0 -> {_7 = false} (! bb12) | br1 -> {_7} (! bb14) ] - | bb14 = s0 - [ s0 = [ &_27 <- { t_RangeTo__end = ([%#sindex_range'8] (0: UInt64.t)) } ] s1 + | s4 = bb7 ] + | bb7 = s0 + [ s0 = Slice64.get {s} {_17} (fun (r: Int32.t) -> [ &_15 <- r = ([%#sindex_range'6] (1: Int32.t)) ] s1) + | s1 = any [ br0 -> {_15 = false} (! bb12) | br1 -> {_15} (! bb8) ] ] + | bb8 = s0 + [ s0 = [ &_27 <- { t_RangeTo__end = ([%#sindex_range'7] (0: UInt64.t)) } ] s1 | s1 = index {arr} {_27} (fun (_ret: Slice64.slice Int32.t) -> [ &_25 <- _ret ] s2) - | s2 = bb15 ] - | bb15 = s0 [ s0 = len {_25} (fun (_ret: UInt64.t) -> [ &_23 <- _ret ] s1) | s1 = bb16 ] - | bb16 = s0 - [ s0 = [ &_22 <- _23 = ([%#sindex_range'9] (0: UInt64.t)) ] s1 - | s1 = any [ br0 -> {_22 = false} (! bb17) | br1 -> {_22} (! bb19) ] ] - | bb19 = s0 [ s0 = deref {arr} (fun (_ret: Slice64.slice Int32.t) -> [ &_34 <- _ret ] s1) | s1 = bb20 ] - | bb20 = s0 - [ s0 = [ &_36 <- { t_RangeTo__end = ([%#sindex_range'10] (6: UInt64.t)) } ] s1 + | s2 = bb13 ] + | bb13 = s0 [ s0 = len {_25} (fun (_ret: UInt64.t) -> [ &_23 <- _ret ] s1) | s1 = bb14 ] + | bb14 = s0 + [ s0 = [ &_22 <- _23 = ([%#sindex_range'8] (0: UInt64.t)) ] s1 + | s1 = any [ br0 -> {_22 = false} (! bb16) | br1 -> {_22} (! bb15) ] ] + | bb15 = s0 [ s0 = deref {arr} (fun (_ret: Slice64.slice Int32.t) -> [ &_34 <- _ret ] s1) | s1 = bb17 ] + | bb17 = s0 + [ s0 = [ &_36 <- { t_RangeTo__end = ([%#sindex_range'9] (6: UInt64.t)) } ] s1 | s1 = get {_34} {_36} (fun (_ret: t_Option) -> [ &_32 <- _ret ] s2) - | s2 = bb21 ] - | bb21 = s0 [ s0 = is_none {_32} (fun (_ret: bool) -> [ &_30 <- _ret ] s1) | s1 = bb22 ] - | bb22 = any [ br0 -> {_30 = false} (! bb23) | br1 -> {_30} (! bb25) ] - | bb25 = s0 + | s2 = bb18 ] + | bb18 = s0 [ s0 = is_none {_32} (fun (_ret: bool) -> [ &_30 <- _ret ] s1) | s1 = bb19 ] + | bb19 = any [ br0 -> {_30 = false} (! bb21) | br1 -> {_30} (! bb20) ] + | bb20 = s0 [ s0 = MutBorrow.borrow_mut {arr} (fun (_ret: MutBorrow.t t_Vec) -> [ &_40 <- _ret ] [ &arr <- _ret.final ] s1) - | s1 = [ &_41 <- { t_RangeTo__end = ([%#sindex_range'11] (3: UInt64.t)) } ] s2 + | s1 = [ &_41 <- { t_RangeTo__end = ([%#sindex_range'10] (3: UInt64.t)) } ] s2 | s2 = index_mut {_40} {_41} (fun (_ret: MutBorrow.t (Slice64.slice Int32.t)) -> [ &_39 <- _ret ] s3) - | s3 = bb26 ] - | bb26 = s0 + | s3 = bb22 ] + | bb22 = s0 [ s0 = MutBorrow.borrow_final {_39.current} {MutBorrow.get_id _39} (fun (_ret: MutBorrow.t (Slice64.slice Int32.t)) -> [ &s'0 <- _ret ] [ &_39 <- { _39 with current = _ret.final } ] s1) | s1 = len {s'0.current} (fun (_ret: UInt64.t) -> [ &_44 <- _ret ] s2) - | s2 = bb27 ] - | bb27 = s0 - [ s0 = [ &_43 <- _44 = ([%#sindex_range'12] (3: UInt64.t)) ] s1 - | s1 = any [ br0 -> {_43 = false} (! bb28) | br1 -> {_43} (! bb30) ] ] - | bb30 = s0 - [ s0 = [ &_47 <- [%#sindex_range'13] (0: UInt64.t) ] s1 + | s2 = bb23 ] + | bb23 = s0 + [ s0 = [ &_43 <- _44 = ([%#sindex_range'11] (3: UInt64.t)) ] s1 + | s1 = any [ br0 -> {_43 = false} (! bb25) | br1 -> {_43} (! bb24) ] ] + | bb24 = s0 + [ s0 = [ &_47 <- [%#sindex_range'12] (0: UInt64.t) ] s1 | s1 = Opaque.fresh_ptr (fun (_ptr: Opaque.ptr) -> -{Slice64.slice_ptr_len _ptr = Slice64.length s'0.current}- [ &_48 <- _ptr ] s2) | s2 = [ &_49 <- Slice64.slice_ptr_len _48 ] s3 | s3 = [ &_50 <- UInt64.lt _47 _49 ] s4 - | s4 = {[@expl:index in bounds] [%#sindex_range'14] _50} s5 - | s5 = bb31 ] - | bb31 = s0 - [ s0 = Slice64.set {s'0.current} {_47} {[%#sindex_range'15] (-1: Int32.t)} + | s4 = {[@expl:index in bounds] [%#sindex_range'13] _50} s5 + | s5 = bb26 ] + | bb26 = s0 + [ s0 = Slice64.set {s'0.current} {_47} {[%#sindex_range'14] (-1: Int32.t)} (fun (r: Slice64.slice Int32.t) -> [ &s'0 <- { s'0 with current = r } ] s1) - | s1 = [ &_51 <- [%#sindex_range'16] (2: UInt64.t) ] s2 + | s1 = [ &_51 <- [%#sindex_range'15] (2: UInt64.t) ] s2 | s2 = Opaque.fresh_ptr (fun (_ptr: Opaque.ptr) -> -{Slice64.slice_ptr_len _ptr = Slice64.length s'0.current}- [ &_52 <- _ptr ] s3) | s3 = [ &_53 <- Slice64.slice_ptr_len _52 ] s4 | s4 = [ &_54 <- UInt64.lt _51 _53 ] s5 - | s5 = {[@expl:index in bounds] [%#sindex_range'17] _54} s6 - | s6 = bb32 ] - | bb32 = s0 - [ s0 = Slice64.set {s'0.current} {_51} {[%#sindex_range'18] (-1: Int32.t)} + | s5 = {[@expl:index in bounds] [%#sindex_range'16] _54} s6 + | s6 = bb27 ] + | bb27 = s0 + [ s0 = Slice64.set {s'0.current} {_51} {[%#sindex_range'17] (-1: Int32.t)} (fun (r: Slice64.slice Int32.t) -> [ &s'0 <- { s'0 with current = r } ] s1) - | s1 = [ &_58 <- [%#sindex_range'19] (1: UInt64.t) ] s2 + | s1 = [ &_58 <- [%#sindex_range'18] (1: UInt64.t) ] s2 | s2 = Opaque.fresh_ptr (fun (_ptr: Opaque.ptr) -> -{Slice64.slice_ptr_len _ptr = Slice64.length s'0.current}- [ &_59 <- _ptr ] s3) | s3 = [ &_60 <- Slice64.slice_ptr_len _59 ] s4 | s4 = [ &_61 <- UInt64.lt _58 _60 ] s5 - | s5 = {[@expl:index in bounds] [%#sindex_range'20] _61} s6 - | s6 = bb33 ] - | bb33 = s0 + | s5 = {[@expl:index in bounds] [%#sindex_range'19] _61} s6 + | s6 = bb28 ] + | bb28 = s0 [ s0 = -{resolve'0 s'0}- s1 | s1 = -{resolve'0 _39}- s2 | s2 = Slice64.get {s'0.current} {_58} - (fun (r: Int32.t) -> [ &_56 <- r = ([%#sindex_range'21] (1: Int32.t)) ] s3) - | s3 = any [ br0 -> {_56 = false} (! bb34) | br1 -> {_56} (! bb36) ] ] - | bb36 = s0 [ s0 = len'0 {arr} (fun (_ret: UInt64.t) -> [ &_65 <- _ret ] s1) | s1 = bb37 ] + (fun (r: Int32.t) -> [ &_56 <- r = ([%#sindex_range'20] (1: Int32.t)) ] s3) + | s3 = any [ br0 -> {_56 = false} (! bb30) | br1 -> {_56} (! bb29) ] ] + | bb29 = s0 [ s0 = len'0 {arr} (fun (_ret: UInt64.t) -> [ &_65 <- _ret ] s1) | s1 = bb31 ] + | bb31 = s0 + [ s0 = [ &_64 <- _65 = ([%#sindex_range'21] (5: UInt64.t)) ] s1 + | s1 = any [ br0 -> {_64 = false} (! bb33) | br1 -> {_64} (! bb32) ] ] + | bb32 = s0 + [ s0 = index'0 {arr} {[%#sindex_range'22] (0: UInt64.t)} (fun (_ret: Int32.t) -> [ &_71 <- _ret ] s1) + | s1 = bb34 ] + | bb34 = s0 + [ s0 = [ &_69 <- _71 = ([%#sindex_range'23] (-1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_69 = false} (! bb36) | br1 -> {_69} (! bb35) ] ] + | bb35 = s0 + [ s0 = index'0 {arr} {[%#sindex_range'24] (1: UInt64.t)} (fun (_ret: Int32.t) -> [ &_77 <- _ret ] s1) + | s1 = bb37 ] | bb37 = s0 - [ s0 = [ &_64 <- _65 = ([%#sindex_range'22] (5: UInt64.t)) ] s1 - | s1 = any [ br0 -> {_64 = false} (! bb38) | br1 -> {_64} (! bb40) ] ] + [ s0 = [ &_75 <- _77 = ([%#sindex_range'25] (1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_75 = false} (! bb39) | br1 -> {_75} (! bb38) ] ] + | bb38 = s0 + [ s0 = index'0 {arr} {[%#sindex_range'26] (2: UInt64.t)} (fun (_ret: Int32.t) -> [ &_83 <- _ret ] s1) + | s1 = bb40 ] | bb40 = s0 - [ s0 = index'0 {arr} {[%#sindex_range'23] (0: UInt64.t)} (fun (_ret: Int32.t) -> [ &_71 <- _ret ] s1) - | s1 = bb41 ] + [ s0 = [ &_81 <- _83 = ([%#sindex_range'27] (-1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_81 = false} (! bb42) | br1 -> {_81} (! bb41) ] ] | bb41 = s0 - [ s0 = [ &_69 <- _71 = ([%#sindex_range'24] (-1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_69 = false} (! bb42) | br1 -> {_69} (! bb44) ] ] + [ s0 = index'0 {arr} {[%#sindex_range'28] (3: UInt64.t)} (fun (_ret: Int32.t) -> [ &_89 <- _ret ] s1) + | s1 = bb43 ] + | bb43 = s0 + [ s0 = [ &_87 <- _89 = ([%#sindex_range'29] (3: Int32.t)) ] s1 + | s1 = any [ br0 -> {_87 = false} (! bb45) | br1 -> {_87} (! bb44) ] ] | bb44 = s0 - [ s0 = index'0 {arr} {[%#sindex_range'25] (1: UInt64.t)} (fun (_ret: Int32.t) -> [ &_77 <- _ret ] s1) - | s1 = bb45 ] - | bb45 = s0 - [ s0 = [ &_75 <- _77 = ([%#sindex_range'26] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_75 = false} (! bb46) | br1 -> {_75} (! bb48) ] ] - | bb48 = s0 - [ s0 = index'0 {arr} {[%#sindex_range'27] (2: UInt64.t)} (fun (_ret: Int32.t) -> [ &_83 <- _ret ] s1) - | s1 = bb49 ] - | bb49 = s0 - [ s0 = [ &_81 <- _83 = ([%#sindex_range'28] (-1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_81 = false} (! bb50) | br1 -> {_81} (! bb52) ] ] - | bb52 = s0 - [ s0 = index'0 {arr} {[%#sindex_range'29] (3: UInt64.t)} (fun (_ret: Int32.t) -> [ &_89 <- _ret ] s1) - | s1 = bb53 ] - | bb53 = s0 - [ s0 = [ &_87 <- _89 = ([%#sindex_range'30] (3: Int32.t)) ] s1 - | s1 = any [ br0 -> {_87 = false} (! bb54) | br1 -> {_87} (! bb56) ] ] - | bb56 = s0 - [ s0 = index'0 {arr} {[%#sindex_range'31] (4: UInt64.t)} (fun (_ret: Int32.t) -> [ &_95 <- _ret ] s1) - | s1 = bb57 ] - | bb57 = s0 - [ s0 = [ &_93 <- _95 = ([%#sindex_range'32] (4: Int32.t)) ] s1 - | s1 = any [ br0 -> {_93 = false} (! bb58) | br1 -> {_93} (! bb61) ] ] - | bb61 = return''0 {_0} - | bb58 = {[%#sindex_range'33] false} any - | bb54 = {[%#sindex_range'34] false} any - | bb50 = {[%#sindex_range'35] false} any - | bb46 = {[%#sindex_range'36] false} any - | bb42 = {[%#sindex_range'37] false} any - | bb38 = {[%#sindex_range'38] false} any - | bb34 = {[%#sindex_range'39] false} any - | bb28 = s0 [ s0 = -{resolve'0 s'0}- s1 | s1 = -{resolve'0 _39}- s2 | s2 = {[%#sindex_range'40] false} any ] - | bb23 = {[%#sindex_range'41] false} any - | bb17 = {[%#sindex_range'42] false} any - | bb12 = {[%#sindex_range'43] false} any ] + [ s0 = index'0 {arr} {[%#sindex_range'30] (4: UInt64.t)} (fun (_ret: Int32.t) -> [ &_95 <- _ret ] s1) + | s1 = bb46 ] + | bb46 = s0 + [ s0 = [ &_93 <- _95 = ([%#sindex_range'31] (4: Int32.t)) ] s1 + | s1 = any [ br0 -> {_93 = false} (! bb48) | br1 -> {_93} (! bb49) ] ] + | bb49 = return''0 {_0} + | bb48 = {[%#sindex_range'32] false} any + | bb45 = {[%#sindex_range'33] false} any + | bb42 = {[%#sindex_range'34] false} any + | bb39 = {[%#sindex_range'35] false} any + | bb36 = {[%#sindex_range'36] false} any + | bb33 = {[%#sindex_range'37] false} any + | bb30 = {[%#sindex_range'38] false} any + | bb25 = s0 [ s0 = -{resolve'0 s'0}- s1 | s1 = -{resolve'0 _39}- s2 | s2 = {[%#sindex_range'39] false} any ] + | bb21 = {[%#sindex_range'40] false} any + | bb16 = {[%#sindex_range'41] false} any + | bb12 = {[%#sindex_range'42] false} any ] [ & _0: () = Any.any_l () | & arr: t_Vec = Any.any_l () | & s: Slice64.slice Int32.t = Any.any_l () | & _3: Slice64.slice Int32.t = Any.any_l () | & _5: t_RangeTo = Any.any_l () | & _7: bool = Any.any_l () - | & _8: bool = Any.any_l () - | & _9: UInt64.t = Any.any_l () - | & _11: bool = Any.any_l () + | & _8: UInt64.t = Any.any_l () + | & _10: bool = Any.any_l () + | & _12: UInt64.t = Any.any_l () | & _13: UInt64.t = Any.any_l () - | & _14: UInt64.t = Any.any_l () + | & _14: bool = Any.any_l () | & _15: bool = Any.any_l () | & _17: UInt64.t = Any.any_l () | & _18: UInt64.t = Any.any_l () @@ -1030,46 +1021,45 @@ module M_index_range__test_range_from [#"index_range.rs" 115 0 115 24] let%span sindex_range'4 = "index_range.rs" 123 43 123 44 let%span sindex_range'5 = "index_range.rs" 123 41 123 45 let%span sindex_range'6 = "index_range.rs" 123 49 123 50 - let%span sindex_range'7 = "index_range.rs" 123 12 123 50 - let%span sindex_range'8 = "index_range.rs" 128 16 128 17 - let%span sindex_range'9 = "index_range.rs" 128 30 128 31 - let%span sindex_range'10 = "index_range.rs" 133 20 133 21 - let%span sindex_range'11 = "index_range.rs" 135 20 135 22 - let%span sindex_range'12 = "index_range.rs" 138 21 138 22 - let%span sindex_range'13 = "index_range.rs" 139 23 139 24 - let%span sindex_range'14 = "index_range.rs" 140 6 140 7 - let%span sindex_range'15 = "index_range.rs" 140 4 140 8 - let%span sindex_range'16 = "index_range.rs" 140 11 140 13 - let%span sindex_range'17 = "index_range.rs" 141 6 141 7 - let%span sindex_range'18 = "index_range.rs" 141 4 141 8 - let%span sindex_range'19 = "index_range.rs" 141 11 141 13 - let%span sindex_range'20 = "index_range.rs" 143 14 143 15 - let%span sindex_range'21 = "index_range.rs" 143 12 143 16 - let%span sindex_range'22 = "index_range.rs" 143 20 143 21 - let%span sindex_range'23 = "index_range.rs" 145 25 145 26 - let%span sindex_range'24 = "index_range.rs" 146 16 146 17 - let%span sindex_range'25 = "index_range.rs" 146 22 146 23 - let%span sindex_range'26 = "index_range.rs" 147 16 147 17 - let%span sindex_range'27 = "index_range.rs" 147 22 147 23 - let%span sindex_range'28 = "index_range.rs" 148 16 148 17 - let%span sindex_range'29 = "index_range.rs" 148 22 148 24 - let%span sindex_range'30 = "index_range.rs" 149 16 149 17 - let%span sindex_range'31 = "index_range.rs" 149 22 149 24 - let%span sindex_range'32 = "index_range.rs" 150 16 150 17 - let%span sindex_range'33 = "index_range.rs" 150 22 150 23 - let%span sindex_range'34 = "index_range.rs" 150 12 150 23 - let%span sindex_range'35 = "index_range.rs" 149 12 149 24 - let%span sindex_range'36 = "index_range.rs" 148 12 148 24 - let%span sindex_range'37 = "index_range.rs" 147 12 147 23 - let%span sindex_range'38 = "index_range.rs" 146 12 146 23 - let%span sindex_range'39 = "index_range.rs" 145 12 145 26 - let%span sindex_range'40 = "index_range.rs" 143 12 143 21 - let%span sindex_range'41 = "index_range.rs" 139 12 139 24 - let%span sindex_range'42 = "index_range.rs" 135 12 135 35 - let%span sindex_range'43 = "index_range.rs" 133 12 133 34 - let%span sindex_range'44 = "index_range.rs" 128 12 128 31 - let%span sindex_range'45 = "index_range.rs" 123 12 123 50 - let%span sindex_range'46 = "index_range.rs" 7 4 12 22 + let%span sindex_range'7 = "index_range.rs" 128 16 128 17 + let%span sindex_range'8 = "index_range.rs" 128 30 128 31 + let%span sindex_range'9 = "index_range.rs" 133 20 133 21 + let%span sindex_range'10 = "index_range.rs" 135 20 135 22 + let%span sindex_range'11 = "index_range.rs" 138 21 138 22 + let%span sindex_range'12 = "index_range.rs" 139 23 139 24 + let%span sindex_range'13 = "index_range.rs" 140 6 140 7 + let%span sindex_range'14 = "index_range.rs" 140 4 140 8 + let%span sindex_range'15 = "index_range.rs" 140 11 140 13 + let%span sindex_range'16 = "index_range.rs" 141 6 141 7 + let%span sindex_range'17 = "index_range.rs" 141 4 141 8 + let%span sindex_range'18 = "index_range.rs" 141 11 141 13 + let%span sindex_range'19 = "index_range.rs" 143 14 143 15 + let%span sindex_range'20 = "index_range.rs" 143 12 143 16 + let%span sindex_range'21 = "index_range.rs" 143 20 143 21 + let%span sindex_range'22 = "index_range.rs" 145 25 145 26 + let%span sindex_range'23 = "index_range.rs" 146 16 146 17 + let%span sindex_range'24 = "index_range.rs" 146 22 146 23 + let%span sindex_range'25 = "index_range.rs" 147 16 147 17 + let%span sindex_range'26 = "index_range.rs" 147 22 147 23 + let%span sindex_range'27 = "index_range.rs" 148 16 148 17 + let%span sindex_range'28 = "index_range.rs" 148 22 148 24 + let%span sindex_range'29 = "index_range.rs" 149 16 149 17 + let%span sindex_range'30 = "index_range.rs" 149 22 149 24 + let%span sindex_range'31 = "index_range.rs" 150 16 150 17 + let%span sindex_range'32 = "index_range.rs" 150 22 150 23 + let%span sindex_range'33 = "index_range.rs" 150 4 150 24 + let%span sindex_range'34 = "index_range.rs" 149 4 149 25 + let%span sindex_range'35 = "index_range.rs" 148 4 148 25 + let%span sindex_range'36 = "index_range.rs" 147 4 147 24 + let%span sindex_range'37 = "index_range.rs" 146 4 146 24 + let%span sindex_range'38 = "index_range.rs" 145 4 145 27 + let%span sindex_range'39 = "index_range.rs" 143 4 143 22 + let%span sindex_range'40 = "index_range.rs" 139 4 139 25 + let%span sindex_range'41 = "index_range.rs" 135 4 135 36 + let%span sindex_range'42 = "index_range.rs" 133 4 133 35 + let%span sindex_range'43 = "index_range.rs" 128 4 128 32 + let%span sindex_range'44 = "index_range.rs" 123 4 123 51 + let%span sindex_range'45 = "index_range.rs" 7 4 12 22 let%span svec = "../../creusot-contracts/src/std/vec.rs" 190 16 190 48 let%span svec'0 = "../../creusot-contracts/src/std/vec.rs" 191 16 191 56 let%span svec'1 = "../../creusot-contracts/src/std/vec.rs" 197 26 197 42 @@ -1126,7 +1116,7 @@ module M_index_range__test_range_from [#"index_range.rs" 115 0 115 24] meta "rewrite_def" function index_logic let rec create_arr (return' (x: t_Vec)) = any - [ return''0 (result: t_Vec) -> {[%#sindex_range'46] Seq.length (view result) = 5 + [ return''0 (result: t_Vec) -> {[%#sindex_range'45] Seq.length (view result) = 5 /\ Int32.to_int (index_logic result 0) = 0 /\ Int32.to_int (index_logic result 1) = 1 /\ Int32.to_int (index_logic result 2) = 2 @@ -1227,159 +1217,157 @@ module M_index_range__test_range_from [#"index_range.rs" 115 0 115 24] [ s0 = [ &_5 <- { t_RangeFrom__start = ([%#sindex_range] (3: UInt64.t)) } ] s1 | s1 = index {arr} {_5} (fun (_ret: Slice64.slice Int32.t) -> [ &_3 <- _ret ] s2) | s2 = bb2 ] - | bb2 = s0 [ s0 = [ &s <- _3 ] s1 | s1 = len {s} (fun (_ret: UInt64.t) -> [ &_9 <- _ret ] s2) | s2 = bb3 ] + | bb2 = s0 [ s0 = [ &s <- _3 ] s1 | s1 = len {s} (fun (_ret: UInt64.t) -> [ &_8 <- _ret ] s2) | s2 = bb3 ] | bb3 = s0 - [ s0 = [ &_8 <- _9 = ([%#sindex_range'0] (2: UInt64.t)) ] s1 - | s1 = any [ br0 -> {_8 = false} (! bb9) | br1 -> {_8} (! bb4) ] ] + [ s0 = [ &_7 <- _8 = ([%#sindex_range'0] (2: UInt64.t)) ] s1 + | s1 = any [ br0 -> {_7 = false} (! bb12) | br1 -> {_7} (! bb4) ] ] | bb4 = s0 - [ s0 = [ &_13 <- [%#sindex_range'1] (0: UInt64.t) ] s1 - | s1 = [ &_14 <- Slice64.length s ] s2 - | s2 = [ &_15 <- UInt64.lt _13 _14 ] s3 - | s3 = {[@expl:index in bounds] [%#sindex_range'2] _15} s4 + [ s0 = [ &_12 <- [%#sindex_range'1] (0: UInt64.t) ] s1 + | s1 = [ &_13 <- Slice64.length s ] s2 + | s2 = [ &_14 <- UInt64.lt _12 _13 ] s3 + | s3 = {[@expl:index in bounds] [%#sindex_range'2] _14} s4 | s4 = bb5 ] | bb5 = s0 - [ s0 = Slice64.get {s} {_13} (fun (r: Int32.t) -> [ &_11 <- r = ([%#sindex_range'3] (3: Int32.t)) ] s1) - | s1 = any [ br0 -> {_11 = false} (! bb9) | br1 -> {_11} (! bb6) ] ] + [ s0 = Slice64.get {s} {_12} (fun (r: Int32.t) -> [ &_10 <- r = ([%#sindex_range'3] (3: Int32.t)) ] s1) + | s1 = any [ br0 -> {_10 = false} (! bb12) | br1 -> {_10} (! bb6) ] ] | bb6 = s0 [ s0 = [ &_17 <- [%#sindex_range'4] (1: UInt64.t) ] s1 | s1 = [ &_18 <- Slice64.length s ] s2 | s2 = [ &_19 <- UInt64.lt _17 _18 ] s3 | s3 = {[@expl:index in bounds] [%#sindex_range'5] _19} s4 - | s4 = bb10 ] - | bb10 = s0 - [ s0 = Slice64.get {s} {_17} (fun (r: Int32.t) -> [ &_7 <- r = ([%#sindex_range'6] (4: Int32.t)) ] s1) - | s1 = bb11 ] - | bb9 = s0 [ s0 = [ &_7 <- [%#sindex_range'7] false ] s1 | s1 = bb11 ] - | bb11 = any [ br0 -> {_7 = false} (! bb12) | br1 -> {_7} (! bb14) ] - | bb14 = s0 - [ s0 = [ &_27 <- { t_RangeFrom__start = ([%#sindex_range'8] (5: UInt64.t)) } ] s1 + | s4 = bb7 ] + | bb7 = s0 + [ s0 = Slice64.get {s} {_17} (fun (r: Int32.t) -> [ &_15 <- r = ([%#sindex_range'6] (4: Int32.t)) ] s1) + | s1 = any [ br0 -> {_15 = false} (! bb12) | br1 -> {_15} (! bb8) ] ] + | bb8 = s0 + [ s0 = [ &_27 <- { t_RangeFrom__start = ([%#sindex_range'7] (5: UInt64.t)) } ] s1 | s1 = index {arr} {_27} (fun (_ret: Slice64.slice Int32.t) -> [ &_25 <- _ret ] s2) - | s2 = bb15 ] - | bb15 = s0 [ s0 = len {_25} (fun (_ret: UInt64.t) -> [ &_23 <- _ret ] s1) | s1 = bb16 ] - | bb16 = s0 - [ s0 = [ &_22 <- _23 = ([%#sindex_range'9] (0: UInt64.t)) ] s1 - | s1 = any [ br0 -> {_22 = false} (! bb17) | br1 -> {_22} (! bb19) ] ] - | bb19 = s0 [ s0 = deref {arr} (fun (_ret: Slice64.slice Int32.t) -> [ &_34 <- _ret ] s1) | s1 = bb20 ] - | bb20 = s0 - [ s0 = [ &_36 <- { t_RangeFrom__start = ([%#sindex_range'10] (6: UInt64.t)) } ] s1 + | s2 = bb13 ] + | bb13 = s0 [ s0 = len {_25} (fun (_ret: UInt64.t) -> [ &_23 <- _ret ] s1) | s1 = bb14 ] + | bb14 = s0 + [ s0 = [ &_22 <- _23 = ([%#sindex_range'8] (0: UInt64.t)) ] s1 + | s1 = any [ br0 -> {_22 = false} (! bb16) | br1 -> {_22} (! bb15) ] ] + | bb15 = s0 [ s0 = deref {arr} (fun (_ret: Slice64.slice Int32.t) -> [ &_34 <- _ret ] s1) | s1 = bb17 ] + | bb17 = s0 + [ s0 = [ &_36 <- { t_RangeFrom__start = ([%#sindex_range'9] (6: UInt64.t)) } ] s1 | s1 = get {_34} {_36} (fun (_ret: t_Option) -> [ &_32 <- _ret ] s2) - | s2 = bb21 ] - | bb21 = s0 [ s0 = is_none {_32} (fun (_ret: bool) -> [ &_30 <- _ret ] s1) | s1 = bb22 ] - | bb22 = any [ br0 -> {_30 = false} (! bb23) | br1 -> {_30} (! bb25) ] - | bb25 = s0 [ s0 = deref {arr} (fun (_ret: Slice64.slice Int32.t) -> [ &_43 <- _ret ] s1) | s1 = bb26 ] - | bb26 = s0 - [ s0 = [ &_45 <- { t_RangeFrom__start = ([%#sindex_range'11] (10: UInt64.t)) } ] s1 + | s2 = bb18 ] + | bb18 = s0 [ s0 = is_none {_32} (fun (_ret: bool) -> [ &_30 <- _ret ] s1) | s1 = bb19 ] + | bb19 = any [ br0 -> {_30 = false} (! bb21) | br1 -> {_30} (! bb20) ] + | bb20 = s0 [ s0 = deref {arr} (fun (_ret: Slice64.slice Int32.t) -> [ &_43 <- _ret ] s1) | s1 = bb22 ] + | bb22 = s0 + [ s0 = [ &_45 <- { t_RangeFrom__start = ([%#sindex_range'10] (10: UInt64.t)) } ] s1 | s1 = get {_43} {_45} (fun (_ret: t_Option) -> [ &_41 <- _ret ] s2) - | s2 = bb27 ] - | bb27 = s0 [ s0 = is_none {_41} (fun (_ret: bool) -> [ &_39 <- _ret ] s1) | s1 = bb28 ] - | bb28 = any [ br0 -> {_39 = false} (! bb29) | br1 -> {_39} (! bb31) ] - | bb31 = s0 + | s2 = bb23 ] + | bb23 = s0 [ s0 = is_none {_41} (fun (_ret: bool) -> [ &_39 <- _ret ] s1) | s1 = bb24 ] + | bb24 = any [ br0 -> {_39 = false} (! bb26) | br1 -> {_39} (! bb25) ] + | bb25 = s0 [ s0 = MutBorrow.borrow_mut {arr} (fun (_ret: MutBorrow.t t_Vec) -> [ &_49 <- _ret ] [ &arr <- _ret.final ] s1) - | s1 = [ &_50 <- { t_RangeFrom__start = ([%#sindex_range'12] (2: UInt64.t)) } ] s2 + | s1 = [ &_50 <- { t_RangeFrom__start = ([%#sindex_range'11] (2: UInt64.t)) } ] s2 | s2 = index_mut {_49} {_50} (fun (_ret: MutBorrow.t (Slice64.slice Int32.t)) -> [ &_48 <- _ret ] s3) - | s3 = bb32 ] - | bb32 = s0 + | s3 = bb27 ] + | bb27 = s0 [ s0 = MutBorrow.borrow_final {_48.current} {MutBorrow.get_id _48} (fun (_ret: MutBorrow.t (Slice64.slice Int32.t)) -> [ &s'0 <- _ret ] [ &_48 <- { _48 with current = _ret.final } ] s1) | s1 = len {s'0.current} (fun (_ret: UInt64.t) -> [ &_53 <- _ret ] s2) - | s2 = bb33 ] - | bb33 = s0 - [ s0 = [ &_52 <- _53 = ([%#sindex_range'13] (3: UInt64.t)) ] s1 - | s1 = any [ br0 -> {_52 = false} (! bb34) | br1 -> {_52} (! bb36) ] ] - | bb36 = s0 - [ s0 = [ &_56 <- [%#sindex_range'14] (0: UInt64.t) ] s1 + | s2 = bb28 ] + | bb28 = s0 + [ s0 = [ &_52 <- _53 = ([%#sindex_range'12] (3: UInt64.t)) ] s1 + | s1 = any [ br0 -> {_52 = false} (! bb30) | br1 -> {_52} (! bb29) ] ] + | bb29 = s0 + [ s0 = [ &_56 <- [%#sindex_range'13] (0: UInt64.t) ] s1 | s1 = Opaque.fresh_ptr (fun (_ptr: Opaque.ptr) -> -{Slice64.slice_ptr_len _ptr = Slice64.length s'0.current}- [ &_57 <- _ptr ] s2) | s2 = [ &_58 <- Slice64.slice_ptr_len _57 ] s3 | s3 = [ &_59 <- UInt64.lt _56 _58 ] s4 - | s4 = {[@expl:index in bounds] [%#sindex_range'15] _59} s5 - | s5 = bb37 ] - | bb37 = s0 - [ s0 = Slice64.set {s'0.current} {_56} {[%#sindex_range'16] (-1: Int32.t)} + | s4 = {[@expl:index in bounds] [%#sindex_range'14] _59} s5 + | s5 = bb31 ] + | bb31 = s0 + [ s0 = Slice64.set {s'0.current} {_56} {[%#sindex_range'15] (-1: Int32.t)} (fun (r: Slice64.slice Int32.t) -> [ &s'0 <- { s'0 with current = r } ] s1) - | s1 = [ &_60 <- [%#sindex_range'17] (1: UInt64.t) ] s2 + | s1 = [ &_60 <- [%#sindex_range'16] (1: UInt64.t) ] s2 | s2 = Opaque.fresh_ptr (fun (_ptr: Opaque.ptr) -> -{Slice64.slice_ptr_len _ptr = Slice64.length s'0.current}- [ &_61 <- _ptr ] s3) | s3 = [ &_62 <- Slice64.slice_ptr_len _61 ] s4 | s4 = [ &_63 <- UInt64.lt _60 _62 ] s5 - | s5 = {[@expl:index in bounds] [%#sindex_range'18] _63} s6 - | s6 = bb38 ] - | bb38 = s0 - [ s0 = Slice64.set {s'0.current} {_60} {[%#sindex_range'19] (-1: Int32.t)} + | s5 = {[@expl:index in bounds] [%#sindex_range'17] _63} s6 + | s6 = bb32 ] + | bb32 = s0 + [ s0 = Slice64.set {s'0.current} {_60} {[%#sindex_range'18] (-1: Int32.t)} (fun (r: Slice64.slice Int32.t) -> [ &s'0 <- { s'0 with current = r } ] s1) - | s1 = [ &_67 <- [%#sindex_range'20] (2: UInt64.t) ] s2 + | s1 = [ &_67 <- [%#sindex_range'19] (2: UInt64.t) ] s2 | s2 = Opaque.fresh_ptr (fun (_ptr: Opaque.ptr) -> -{Slice64.slice_ptr_len _ptr = Slice64.length s'0.current}- [ &_68 <- _ptr ] s3) | s3 = [ &_69 <- Slice64.slice_ptr_len _68 ] s4 | s4 = [ &_70 <- UInt64.lt _67 _69 ] s5 - | s5 = {[@expl:index in bounds] [%#sindex_range'21] _70} s6 - | s6 = bb39 ] - | bb39 = s0 + | s5 = {[@expl:index in bounds] [%#sindex_range'20] _70} s6 + | s6 = bb33 ] + | bb33 = s0 [ s0 = -{resolve'0 s'0}- s1 | s1 = -{resolve'0 _48}- s2 | s2 = Slice64.get {s'0.current} {_67} - (fun (r: Int32.t) -> [ &_65 <- r = ([%#sindex_range'22] (4: Int32.t)) ] s3) - | s3 = any [ br0 -> {_65 = false} (! bb40) | br1 -> {_65} (! bb42) ] ] - | bb42 = s0 [ s0 = len'0 {arr} (fun (_ret: UInt64.t) -> [ &_74 <- _ret ] s1) | s1 = bb43 ] + (fun (r: Int32.t) -> [ &_65 <- r = ([%#sindex_range'21] (4: Int32.t)) ] s3) + | s3 = any [ br0 -> {_65 = false} (! bb35) | br1 -> {_65} (! bb34) ] ] + | bb34 = s0 [ s0 = len'0 {arr} (fun (_ret: UInt64.t) -> [ &_74 <- _ret ] s1) | s1 = bb36 ] + | bb36 = s0 + [ s0 = [ &_73 <- _74 = ([%#sindex_range'22] (5: UInt64.t)) ] s1 + | s1 = any [ br0 -> {_73 = false} (! bb38) | br1 -> {_73} (! bb37) ] ] + | bb37 = s0 + [ s0 = index'0 {arr} {[%#sindex_range'23] (0: UInt64.t)} (fun (_ret: Int32.t) -> [ &_80 <- _ret ] s1) + | s1 = bb39 ] + | bb39 = s0 + [ s0 = [ &_78 <- _80 = ([%#sindex_range'24] (0: Int32.t)) ] s1 + | s1 = any [ br0 -> {_78 = false} (! bb41) | br1 -> {_78} (! bb40) ] ] + | bb40 = s0 + [ s0 = index'0 {arr} {[%#sindex_range'25] (1: UInt64.t)} (fun (_ret: Int32.t) -> [ &_86 <- _ret ] s1) + | s1 = bb42 ] + | bb42 = s0 + [ s0 = [ &_84 <- _86 = ([%#sindex_range'26] (1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_84 = false} (! bb44) | br1 -> {_84} (! bb43) ] ] | bb43 = s0 - [ s0 = [ &_73 <- _74 = ([%#sindex_range'23] (5: UInt64.t)) ] s1 - | s1 = any [ br0 -> {_73 = false} (! bb44) | br1 -> {_73} (! bb46) ] ] + [ s0 = index'0 {arr} {[%#sindex_range'27] (2: UInt64.t)} (fun (_ret: Int32.t) -> [ &_92 <- _ret ] s1) + | s1 = bb45 ] + | bb45 = s0 + [ s0 = [ &_90 <- _92 = ([%#sindex_range'28] (-1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_90 = false} (! bb47) | br1 -> {_90} (! bb46) ] ] | bb46 = s0 - [ s0 = index'0 {arr} {[%#sindex_range'24] (0: UInt64.t)} (fun (_ret: Int32.t) -> [ &_80 <- _ret ] s1) - | s1 = bb47 ] - | bb47 = s0 - [ s0 = [ &_78 <- _80 = ([%#sindex_range'25] (0: Int32.t)) ] s1 - | s1 = any [ br0 -> {_78 = false} (! bb48) | br1 -> {_78} (! bb50) ] ] - | bb50 = s0 - [ s0 = index'0 {arr} {[%#sindex_range'26] (1: UInt64.t)} (fun (_ret: Int32.t) -> [ &_86 <- _ret ] s1) + [ s0 = index'0 {arr} {[%#sindex_range'29] (3: UInt64.t)} (fun (_ret: Int32.t) -> [ &_98 <- _ret ] s1) + | s1 = bb48 ] + | bb48 = s0 + [ s0 = [ &_96 <- _98 = ([%#sindex_range'30] (-1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_96 = false} (! bb50) | br1 -> {_96} (! bb49) ] ] + | bb49 = s0 + [ s0 = index'0 {arr} {[%#sindex_range'31] (4: UInt64.t)} (fun (_ret: Int32.t) -> [ &_104 <- _ret ] s1) | s1 = bb51 ] | bb51 = s0 - [ s0 = [ &_84 <- _86 = ([%#sindex_range'27] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_84 = false} (! bb52) | br1 -> {_84} (! bb54) ] ] - | bb54 = s0 - [ s0 = index'0 {arr} {[%#sindex_range'28] (2: UInt64.t)} (fun (_ret: Int32.t) -> [ &_92 <- _ret ] s1) - | s1 = bb55 ] - | bb55 = s0 - [ s0 = [ &_90 <- _92 = ([%#sindex_range'29] (-1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_90 = false} (! bb56) | br1 -> {_90} (! bb58) ] ] - | bb58 = s0 - [ s0 = index'0 {arr} {[%#sindex_range'30] (3: UInt64.t)} (fun (_ret: Int32.t) -> [ &_98 <- _ret ] s1) - | s1 = bb59 ] - | bb59 = s0 - [ s0 = [ &_96 <- _98 = ([%#sindex_range'31] (-1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_96 = false} (! bb60) | br1 -> {_96} (! bb62) ] ] - | bb62 = s0 - [ s0 = index'0 {arr} {[%#sindex_range'32] (4: UInt64.t)} (fun (_ret: Int32.t) -> [ &_104 <- _ret ] s1) - | s1 = bb63 ] - | bb63 = s0 - [ s0 = [ &_102 <- _104 = ([%#sindex_range'33] (4: Int32.t)) ] s1 - | s1 = any [ br0 -> {_102 = false} (! bb64) | br1 -> {_102} (! bb67) ] ] - | bb67 = return''0 {_0} - | bb64 = {[%#sindex_range'34] false} any - | bb60 = {[%#sindex_range'35] false} any - | bb56 = {[%#sindex_range'36] false} any - | bb52 = {[%#sindex_range'37] false} any - | bb48 = {[%#sindex_range'38] false} any - | bb44 = {[%#sindex_range'39] false} any - | bb40 = {[%#sindex_range'40] false} any - | bb34 = s0 [ s0 = -{resolve'0 s'0}- s1 | s1 = -{resolve'0 _48}- s2 | s2 = {[%#sindex_range'41] false} any ] - | bb29 = {[%#sindex_range'42] false} any - | bb23 = {[%#sindex_range'43] false} any - | bb17 = {[%#sindex_range'44] false} any - | bb12 = {[%#sindex_range'45] false} any ] + [ s0 = [ &_102 <- _104 = ([%#sindex_range'32] (4: Int32.t)) ] s1 + | s1 = any [ br0 -> {_102 = false} (! bb53) | br1 -> {_102} (! bb54) ] ] + | bb54 = return''0 {_0} + | bb53 = {[%#sindex_range'33] false} any + | bb50 = {[%#sindex_range'34] false} any + | bb47 = {[%#sindex_range'35] false} any + | bb44 = {[%#sindex_range'36] false} any + | bb41 = {[%#sindex_range'37] false} any + | bb38 = {[%#sindex_range'38] false} any + | bb35 = {[%#sindex_range'39] false} any + | bb30 = s0 [ s0 = -{resolve'0 s'0}- s1 | s1 = -{resolve'0 _48}- s2 | s2 = {[%#sindex_range'40] false} any ] + | bb26 = {[%#sindex_range'41] false} any + | bb21 = {[%#sindex_range'42] false} any + | bb16 = {[%#sindex_range'43] false} any + | bb12 = {[%#sindex_range'44] false} any ] [ & _0: () = Any.any_l () | & arr: t_Vec = Any.any_l () | & s: Slice64.slice Int32.t = Any.any_l () | & _3: Slice64.slice Int32.t = Any.any_l () | & _5: t_RangeFrom = Any.any_l () | & _7: bool = Any.any_l () - | & _8: bool = Any.any_l () - | & _9: UInt64.t = Any.any_l () - | & _11: bool = Any.any_l () + | & _8: UInt64.t = Any.any_l () + | & _10: bool = Any.any_l () + | & _12: UInt64.t = Any.any_l () | & _13: UInt64.t = Any.any_l () - | & _14: UInt64.t = Any.any_l () + | & _14: bool = Any.any_l () | & _15: bool = Any.any_l () | & _17: UInt64.t = Any.any_l () | & _18: UInt64.t = Any.any_l () @@ -1445,34 +1433,33 @@ module M_index_range__test_range_full [#"index_range.rs" 154 0 154 24] let%span sindex_range'12 = "index_range.rs" 162 82 162 83 let%span sindex_range'13 = "index_range.rs" 162 80 162 84 let%span sindex_range'14 = "index_range.rs" 162 88 162 89 - let%span sindex_range'15 = "index_range.rs" 162 12 162 89 - let%span sindex_range'16 = "index_range.rs" 166 23 166 24 - let%span sindex_range'17 = "index_range.rs" 167 6 167 7 - let%span sindex_range'18 = "index_range.rs" 167 4 167 8 - let%span sindex_range'19 = "index_range.rs" 167 11 167 13 - let%span sindex_range'20 = "index_range.rs" 168 6 168 7 - let%span sindex_range'21 = "index_range.rs" 168 4 168 8 - let%span sindex_range'22 = "index_range.rs" 168 11 168 13 - let%span sindex_range'23 = "index_range.rs" 170 25 170 26 - let%span sindex_range'24 = "index_range.rs" 171 16 171 17 - let%span sindex_range'25 = "index_range.rs" 171 22 171 23 - let%span sindex_range'26 = "index_range.rs" 172 16 172 17 - let%span sindex_range'27 = "index_range.rs" 172 22 172 24 - let%span sindex_range'28 = "index_range.rs" 173 16 173 17 - let%span sindex_range'29 = "index_range.rs" 173 22 173 23 - let%span sindex_range'30 = "index_range.rs" 174 16 174 17 - let%span sindex_range'31 = "index_range.rs" 174 22 174 24 - let%span sindex_range'32 = "index_range.rs" 175 16 175 17 - let%span sindex_range'33 = "index_range.rs" 175 22 175 23 - let%span sindex_range'34 = "index_range.rs" 175 12 175 23 - let%span sindex_range'35 = "index_range.rs" 174 12 174 24 - let%span sindex_range'36 = "index_range.rs" 173 12 173 23 - let%span sindex_range'37 = "index_range.rs" 172 12 172 24 - let%span sindex_range'38 = "index_range.rs" 171 12 171 23 - let%span sindex_range'39 = "index_range.rs" 170 12 170 26 - let%span sindex_range'40 = "index_range.rs" 166 12 166 24 - let%span sindex_range'41 = "index_range.rs" 162 12 162 89 - let%span sindex_range'42 = "index_range.rs" 7 4 12 22 + let%span sindex_range'15 = "index_range.rs" 166 23 166 24 + let%span sindex_range'16 = "index_range.rs" 167 6 167 7 + let%span sindex_range'17 = "index_range.rs" 167 4 167 8 + let%span sindex_range'18 = "index_range.rs" 167 11 167 13 + let%span sindex_range'19 = "index_range.rs" 168 6 168 7 + let%span sindex_range'20 = "index_range.rs" 168 4 168 8 + let%span sindex_range'21 = "index_range.rs" 168 11 168 13 + let%span sindex_range'22 = "index_range.rs" 170 25 170 26 + let%span sindex_range'23 = "index_range.rs" 171 16 171 17 + let%span sindex_range'24 = "index_range.rs" 171 22 171 23 + let%span sindex_range'25 = "index_range.rs" 172 16 172 17 + let%span sindex_range'26 = "index_range.rs" 172 22 172 24 + let%span sindex_range'27 = "index_range.rs" 173 16 173 17 + let%span sindex_range'28 = "index_range.rs" 173 22 173 23 + let%span sindex_range'29 = "index_range.rs" 174 16 174 17 + let%span sindex_range'30 = "index_range.rs" 174 22 174 24 + let%span sindex_range'31 = "index_range.rs" 175 16 175 17 + let%span sindex_range'32 = "index_range.rs" 175 22 175 23 + let%span sindex_range'33 = "index_range.rs" 175 4 175 24 + let%span sindex_range'34 = "index_range.rs" 174 4 174 25 + let%span sindex_range'35 = "index_range.rs" 173 4 173 24 + let%span sindex_range'36 = "index_range.rs" 172 4 172 25 + let%span sindex_range'37 = "index_range.rs" 171 4 171 24 + let%span sindex_range'38 = "index_range.rs" 170 4 170 27 + let%span sindex_range'39 = "index_range.rs" 166 4 166 25 + let%span sindex_range'40 = "index_range.rs" 162 4 162 90 + let%span sindex_range'41 = "index_range.rs" 7 4 12 22 let%span svec = "../../creusot-contracts/src/std/vec.rs" 190 16 190 48 let%span svec'0 = "../../creusot-contracts/src/std/vec.rs" 191 16 191 56 let%span svec'1 = "../../creusot-contracts/src/std/vec.rs" 180 16 180 48 @@ -1525,7 +1512,7 @@ module M_index_range__test_range_full [#"index_range.rs" 154 0 154 24] meta "rewrite_def" function index_logic let rec create_arr (return' (x: t_Vec)) = any - [ return''0 (result: t_Vec) -> {[%#sindex_range'42] Seq.length (view result) = 5 + [ return''0 (result: t_Vec) -> {[%#sindex_range'41] Seq.length (view result) = 5 /\ Int32.to_int (index_logic result 0) = 0 /\ Int32.to_int (index_logic result 1) = 1 /\ Int32.to_int (index_logic result 2) = 2 @@ -1607,162 +1594,160 @@ module M_index_range__test_range_full [#"index_range.rs" 154 0 154 24] [ s0 = [ &_5 <- () ] s1 | s1 = index {arr} {_5} (fun (_ret: Slice64.slice Int32.t) -> [ &_3 <- _ret ] s2) | s2 = bb2 ] - | bb2 = s0 [ s0 = [ &s <- _3 ] s1 | s1 = len {s} (fun (_ret: UInt64.t) -> [ &_9 <- _ret ] s2) | s2 = bb3 ] + | bb2 = s0 [ s0 = [ &s <- _3 ] s1 | s1 = len {s} (fun (_ret: UInt64.t) -> [ &_8 <- _ret ] s2) | s2 = bb3 ] | bb3 = s0 - [ s0 = [ &_8 <- _9 = ([%#sindex_range] (5: UInt64.t)) ] s1 - | s1 = any [ br0 -> {_8 = false} (! bb18) | br1 -> {_8} (! bb4) ] ] + [ s0 = [ &_7 <- _8 = ([%#sindex_range] (5: UInt64.t)) ] s1 + | s1 = any [ br0 -> {_7 = false} (! bb21) | br1 -> {_7} (! bb4) ] ] | bb4 = s0 - [ s0 = [ &_13 <- [%#sindex_range'0] (0: UInt64.t) ] s1 - | s1 = [ &_14 <- Slice64.length s ] s2 - | s2 = [ &_15 <- UInt64.lt _13 _14 ] s3 - | s3 = {[@expl:index in bounds] [%#sindex_range'1] _15} s4 + [ s0 = [ &_12 <- [%#sindex_range'0] (0: UInt64.t) ] s1 + | s1 = [ &_13 <- Slice64.length s ] s2 + | s2 = [ &_14 <- UInt64.lt _12 _13 ] s3 + | s3 = {[@expl:index in bounds] [%#sindex_range'1] _14} s4 | s4 = bb5 ] | bb5 = s0 - [ s0 = Slice64.get {s} {_13} (fun (r: Int32.t) -> [ &_11 <- r = ([%#sindex_range'2] (0: Int32.t)) ] s1) - | s1 = any [ br0 -> {_11 = false} (! bb18) | br1 -> {_11} (! bb6) ] ] + [ s0 = Slice64.get {s} {_12} (fun (r: Int32.t) -> [ &_10 <- r = ([%#sindex_range'2] (0: Int32.t)) ] s1) + | s1 = any [ br0 -> {_10 = false} (! bb21) | br1 -> {_10} (! bb6) ] ] | bb6 = s0 - [ s0 = [ &_18 <- [%#sindex_range'3] (1: UInt64.t) ] s1 - | s1 = [ &_19 <- Slice64.length s ] s2 - | s2 = [ &_20 <- UInt64.lt _18 _19 ] s3 - | s3 = {[@expl:index in bounds] [%#sindex_range'4] _20} s4 + [ s0 = [ &_17 <- [%#sindex_range'3] (1: UInt64.t) ] s1 + | s1 = [ &_18 <- Slice64.length s ] s2 + | s2 = [ &_19 <- UInt64.lt _17 _18 ] s3 + | s3 = {[@expl:index in bounds] [%#sindex_range'4] _19} s4 | s4 = bb7 ] | bb7 = s0 - [ s0 = Slice64.get {s} {_18} (fun (r: Int32.t) -> [ &_16 <- r = ([%#sindex_range'5] (1: Int32.t)) ] s1) - | s1 = any [ br0 -> {_16 = false} (! bb18) | br1 -> {_16} (! bb8) ] ] + [ s0 = Slice64.get {s} {_17} (fun (r: Int32.t) -> [ &_15 <- r = ([%#sindex_range'5] (1: Int32.t)) ] s1) + | s1 = any [ br0 -> {_15 = false} (! bb21) | br1 -> {_15} (! bb8) ] ] | bb8 = s0 - [ s0 = [ &_23 <- [%#sindex_range'6] (2: UInt64.t) ] s1 - | s1 = [ &_24 <- Slice64.length s ] s2 - | s2 = [ &_25 <- UInt64.lt _23 _24 ] s3 - | s3 = {[@expl:index in bounds] [%#sindex_range'7] _25} s4 + [ s0 = [ &_22 <- [%#sindex_range'6] (2: UInt64.t) ] s1 + | s1 = [ &_23 <- Slice64.length s ] s2 + | s2 = [ &_24 <- UInt64.lt _22 _23 ] s3 + | s3 = {[@expl:index in bounds] [%#sindex_range'7] _24} s4 | s4 = bb9 ] | bb9 = s0 - [ s0 = Slice64.get {s} {_23} (fun (r: Int32.t) -> [ &_21 <- r = ([%#sindex_range'8] (2: Int32.t)) ] s1) - | s1 = any [ br0 -> {_21 = false} (! bb18) | br1 -> {_21} (! bb10) ] ] + [ s0 = Slice64.get {s} {_22} (fun (r: Int32.t) -> [ &_20 <- r = ([%#sindex_range'8] (2: Int32.t)) ] s1) + | s1 = any [ br0 -> {_20 = false} (! bb21) | br1 -> {_20} (! bb10) ] ] | bb10 = s0 - [ s0 = [ &_28 <- [%#sindex_range'9] (3: UInt64.t) ] s1 - | s1 = [ &_29 <- Slice64.length s ] s2 - | s2 = [ &_30 <- UInt64.lt _28 _29 ] s3 - | s3 = {[@expl:index in bounds] [%#sindex_range'10] _30} s4 + [ s0 = [ &_27 <- [%#sindex_range'9] (3: UInt64.t) ] s1 + | s1 = [ &_28 <- Slice64.length s ] s2 + | s2 = [ &_29 <- UInt64.lt _27 _28 ] s3 + | s3 = {[@expl:index in bounds] [%#sindex_range'10] _29} s4 | s4 = bb11 ] | bb11 = s0 - [ s0 = Slice64.get {s} {_28} (fun (r: Int32.t) -> [ &_26 <- r = ([%#sindex_range'11] (3: Int32.t)) ] s1) - | s1 = any [ br0 -> {_26 = false} (! bb18) | br1 -> {_26} (! bb12) ] ] + [ s0 = Slice64.get {s} {_27} (fun (r: Int32.t) -> [ &_25 <- r = ([%#sindex_range'11] (3: Int32.t)) ] s1) + | s1 = any [ br0 -> {_25 = false} (! bb21) | br1 -> {_25} (! bb12) ] ] | bb12 = s0 [ s0 = [ &_32 <- [%#sindex_range'12] (4: UInt64.t) ] s1 | s1 = [ &_33 <- Slice64.length s ] s2 | s2 = [ &_34 <- UInt64.lt _32 _33 ] s3 | s3 = {[@expl:index in bounds] [%#sindex_range'13] _34} s4 - | s4 = bb19 ] - | bb19 = s0 - [ s0 = Slice64.get {s} {_32} (fun (r: Int32.t) -> [ &_7 <- r = ([%#sindex_range'14] (4: Int32.t)) ] s1) - | s1 = bb20 ] - | bb18 = s0 [ s0 = [ &_7 <- [%#sindex_range'15] false ] s1 | s1 = bb20 ] - | bb20 = any [ br0 -> {_7 = false} (! bb21) | br1 -> {_7} (! bb23) ] - | bb23 = s0 + | s4 = bb13 ] + | bb13 = s0 + [ s0 = Slice64.get {s} {_32} (fun (r: Int32.t) -> [ &_30 <- r = ([%#sindex_range'14] (4: Int32.t)) ] s1) + | s1 = any [ br0 -> {_30 = false} (! bb21) | br1 -> {_30} (! bb14) ] ] + | bb14 = s0 [ s0 = MutBorrow.borrow_mut {arr} (fun (_ret: MutBorrow.t t_Vec) -> [ &_38 <- _ret ] [ &arr <- _ret.final ] s1) | s1 = [ &_39 <- () ] s2 | s2 = index_mut {_38} {_39} (fun (_ret: MutBorrow.t (Slice64.slice Int32.t)) -> [ &_37 <- _ret ] s3) - | s3 = bb24 ] - | bb24 = s0 + | s3 = bb22 ] + | bb22 = s0 [ s0 = MutBorrow.borrow_final {_37.current} {MutBorrow.get_id _37} (fun (_ret: MutBorrow.t (Slice64.slice Int32.t)) -> [ &s'0 <- _ret ] [ &_37 <- { _37 with current = _ret.final } ] s1) | s1 = len {s'0.current} (fun (_ret: UInt64.t) -> [ &_42 <- _ret ] s2) - | s2 = bb25 ] - | bb25 = s0 - [ s0 = [ &_41 <- _42 = ([%#sindex_range'16] (5: UInt64.t)) ] s1 - | s1 = any [ br0 -> {_41 = false} (! bb26) | br1 -> {_41} (! bb28) ] ] - | bb28 = s0 - [ s0 = [ &_45 <- [%#sindex_range'17] (1: UInt64.t) ] s1 + | s2 = bb23 ] + | bb23 = s0 + [ s0 = [ &_41 <- _42 = ([%#sindex_range'15] (5: UInt64.t)) ] s1 + | s1 = any [ br0 -> {_41 = false} (! bb25) | br1 -> {_41} (! bb24) ] ] + | bb24 = s0 + [ s0 = [ &_45 <- [%#sindex_range'16] (1: UInt64.t) ] s1 | s1 = Opaque.fresh_ptr (fun (_ptr: Opaque.ptr) -> -{Slice64.slice_ptr_len _ptr = Slice64.length s'0.current}- [ &_46 <- _ptr ] s2) | s2 = [ &_47 <- Slice64.slice_ptr_len _46 ] s3 | s3 = [ &_48 <- UInt64.lt _45 _47 ] s4 - | s4 = {[@expl:index in bounds] [%#sindex_range'18] _48} s5 - | s5 = bb29 ] - | bb29 = s0 - [ s0 = Slice64.set {s'0.current} {_45} {[%#sindex_range'19] (-1: Int32.t)} + | s4 = {[@expl:index in bounds] [%#sindex_range'17] _48} s5 + | s5 = bb26 ] + | bb26 = s0 + [ s0 = Slice64.set {s'0.current} {_45} {[%#sindex_range'18] (-1: Int32.t)} (fun (r: Slice64.slice Int32.t) -> [ &s'0 <- { s'0 with current = r } ] s1) - | s1 = [ &_49 <- [%#sindex_range'20] (3: UInt64.t) ] s2 + | s1 = [ &_49 <- [%#sindex_range'19] (3: UInt64.t) ] s2 | s2 = Opaque.fresh_ptr (fun (_ptr: Opaque.ptr) -> -{Slice64.slice_ptr_len _ptr = Slice64.length s'0.current}- [ &_50 <- _ptr ] s3) | s3 = [ &_51 <- Slice64.slice_ptr_len _50 ] s4 | s4 = [ &_52 <- UInt64.lt _49 _51 ] s5 - | s5 = {[@expl:index in bounds] [%#sindex_range'21] _52} s6 - | s6 = bb30 ] - | bb30 = s0 - [ s0 = Slice64.set {s'0.current} {_49} {[%#sindex_range'22] (-1: Int32.t)} + | s5 = {[@expl:index in bounds] [%#sindex_range'20] _52} s6 + | s6 = bb27 ] + | bb27 = s0 + [ s0 = Slice64.set {s'0.current} {_49} {[%#sindex_range'21] (-1: Int32.t)} (fun (r: Slice64.slice Int32.t) -> [ &s'0 <- { s'0 with current = r } ] s1) | s1 = -{resolve'0 s'0}- s2 | s2 = -{resolve'0 _37}- s3 | s3 = len'0 {arr} (fun (_ret: UInt64.t) -> [ &_55 <- _ret ] s4) - | s4 = bb31 ] + | s4 = bb28 ] + | bb28 = s0 + [ s0 = [ &_54 <- _55 = ([%#sindex_range'22] (5: UInt64.t)) ] s1 + | s1 = any [ br0 -> {_54 = false} (! bb30) | br1 -> {_54} (! bb29) ] ] + | bb29 = s0 + [ s0 = index'0 {arr} {[%#sindex_range'23] (0: UInt64.t)} (fun (_ret: Int32.t) -> [ &_61 <- _ret ] s1) + | s1 = bb31 ] | bb31 = s0 - [ s0 = [ &_54 <- _55 = ([%#sindex_range'23] (5: UInt64.t)) ] s1 - | s1 = any [ br0 -> {_54 = false} (! bb32) | br1 -> {_54} (! bb34) ] ] + [ s0 = [ &_59 <- _61 = ([%#sindex_range'24] (0: Int32.t)) ] s1 + | s1 = any [ br0 -> {_59 = false} (! bb33) | br1 -> {_59} (! bb32) ] ] + | bb32 = s0 + [ s0 = index'0 {arr} {[%#sindex_range'25] (1: UInt64.t)} (fun (_ret: Int32.t) -> [ &_67 <- _ret ] s1) + | s1 = bb34 ] | bb34 = s0 - [ s0 = index'0 {arr} {[%#sindex_range'24] (0: UInt64.t)} (fun (_ret: Int32.t) -> [ &_61 <- _ret ] s1) - | s1 = bb35 ] + [ s0 = [ &_65 <- _67 = ([%#sindex_range'26] (-1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_65 = false} (! bb36) | br1 -> {_65} (! bb35) ] ] | bb35 = s0 - [ s0 = [ &_59 <- _61 = ([%#sindex_range'25] (0: Int32.t)) ] s1 - | s1 = any [ br0 -> {_59 = false} (! bb36) | br1 -> {_59} (! bb38) ] ] + [ s0 = index'0 {arr} {[%#sindex_range'27] (2: UInt64.t)} (fun (_ret: Int32.t) -> [ &_73 <- _ret ] s1) + | s1 = bb37 ] + | bb37 = s0 + [ s0 = [ &_71 <- _73 = ([%#sindex_range'28] (2: Int32.t)) ] s1 + | s1 = any [ br0 -> {_71 = false} (! bb39) | br1 -> {_71} (! bb38) ] ] | bb38 = s0 - [ s0 = index'0 {arr} {[%#sindex_range'26] (1: UInt64.t)} (fun (_ret: Int32.t) -> [ &_67 <- _ret ] s1) - | s1 = bb39 ] - | bb39 = s0 - [ s0 = [ &_65 <- _67 = ([%#sindex_range'27] (-1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_65 = false} (! bb40) | br1 -> {_65} (! bb42) ] ] - | bb42 = s0 - [ s0 = index'0 {arr} {[%#sindex_range'28] (2: UInt64.t)} (fun (_ret: Int32.t) -> [ &_73 <- _ret ] s1) + [ s0 = index'0 {arr} {[%#sindex_range'29] (3: UInt64.t)} (fun (_ret: Int32.t) -> [ &_79 <- _ret ] s1) + | s1 = bb40 ] + | bb40 = s0 + [ s0 = [ &_77 <- _79 = ([%#sindex_range'30] (-1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_77 = false} (! bb42) | br1 -> {_77} (! bb41) ] ] + | bb41 = s0 + [ s0 = index'0 {arr} {[%#sindex_range'31] (4: UInt64.t)} (fun (_ret: Int32.t) -> [ &_85 <- _ret ] s1) | s1 = bb43 ] | bb43 = s0 - [ s0 = [ &_71 <- _73 = ([%#sindex_range'29] (2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_71 = false} (! bb44) | br1 -> {_71} (! bb46) ] ] - | bb46 = s0 - [ s0 = index'0 {arr} {[%#sindex_range'30] (3: UInt64.t)} (fun (_ret: Int32.t) -> [ &_79 <- _ret ] s1) - | s1 = bb47 ] - | bb47 = s0 - [ s0 = [ &_77 <- _79 = ([%#sindex_range'31] (-1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_77 = false} (! bb48) | br1 -> {_77} (! bb50) ] ] - | bb50 = s0 - [ s0 = index'0 {arr} {[%#sindex_range'32] (4: UInt64.t)} (fun (_ret: Int32.t) -> [ &_85 <- _ret ] s1) - | s1 = bb51 ] - | bb51 = s0 - [ s0 = [ &_83 <- _85 = ([%#sindex_range'33] (4: Int32.t)) ] s1 - | s1 = any [ br0 -> {_83 = false} (! bb52) | br1 -> {_83} (! bb55) ] ] - | bb55 = return''0 {_0} - | bb52 = {[%#sindex_range'34] false} any - | bb48 = {[%#sindex_range'35] false} any - | bb44 = {[%#sindex_range'36] false} any - | bb40 = {[%#sindex_range'37] false} any - | bb36 = {[%#sindex_range'38] false} any - | bb32 = {[%#sindex_range'39] false} any - | bb26 = s0 [ s0 = -{resolve'0 s'0}- s1 | s1 = -{resolve'0 _37}- s2 | s2 = {[%#sindex_range'40] false} any ] - | bb21 = {[%#sindex_range'41] false} any ] + [ s0 = [ &_83 <- _85 = ([%#sindex_range'32] (4: Int32.t)) ] s1 + | s1 = any [ br0 -> {_83 = false} (! bb45) | br1 -> {_83} (! bb46) ] ] + | bb46 = return''0 {_0} + | bb45 = {[%#sindex_range'33] false} any + | bb42 = {[%#sindex_range'34] false} any + | bb39 = {[%#sindex_range'35] false} any + | bb36 = {[%#sindex_range'36] false} any + | bb33 = {[%#sindex_range'37] false} any + | bb30 = {[%#sindex_range'38] false} any + | bb25 = s0 [ s0 = -{resolve'0 s'0}- s1 | s1 = -{resolve'0 _37}- s2 | s2 = {[%#sindex_range'39] false} any ] + | bb21 = {[%#sindex_range'40] false} any ] [ & _0: () = Any.any_l () | & arr: t_Vec = Any.any_l () | & s: Slice64.slice Int32.t = Any.any_l () | & _3: Slice64.slice Int32.t = Any.any_l () | & _5: () = Any.any_l () | & _7: bool = Any.any_l () - | & _8: bool = Any.any_l () - | & _9: UInt64.t = Any.any_l () - | & _11: bool = Any.any_l () + | & _8: UInt64.t = Any.any_l () + | & _10: bool = Any.any_l () + | & _12: UInt64.t = Any.any_l () | & _13: UInt64.t = Any.any_l () - | & _14: UInt64.t = Any.any_l () + | & _14: bool = Any.any_l () | & _15: bool = Any.any_l () - | & _16: bool = Any.any_l () + | & _17: UInt64.t = Any.any_l () | & _18: UInt64.t = Any.any_l () - | & _19: UInt64.t = Any.any_l () + | & _19: bool = Any.any_l () | & _20: bool = Any.any_l () - | & _21: bool = Any.any_l () + | & _22: UInt64.t = Any.any_l () | & _23: UInt64.t = Any.any_l () - | & _24: UInt64.t = Any.any_l () + | & _24: bool = Any.any_l () | & _25: bool = Any.any_l () - | & _26: bool = Any.any_l () + | & _27: UInt64.t = Any.any_l () | & _28: UInt64.t = Any.any_l () - | & _29: UInt64.t = Any.any_l () + | & _29: bool = Any.any_l () | & _30: bool = Any.any_l () | & _32: UInt64.t = Any.any_l () | & _33: UInt64.t = Any.any_l () @@ -1803,41 +1788,40 @@ module M_index_range__test_range_to_inclusive [#"index_range.rs" 179 0 179 32] let%span sindex_range'4 = "index_range.rs" 187 43 187 44 let%span sindex_range'5 = "index_range.rs" 187 41 187 45 let%span sindex_range'6 = "index_range.rs" 187 49 187 50 - let%span sindex_range'7 = "index_range.rs" 187 12 187 50 - let%span sindex_range'8 = "index_range.rs" 192 23 192 24 - let%span sindex_range'9 = "index_range.rs" 195 24 195 25 - let%span sindex_range'10 = "index_range.rs" 196 23 196 24 - let%span sindex_range'11 = "index_range.rs" 197 6 197 7 - let%span sindex_range'12 = "index_range.rs" 197 4 197 8 - let%span sindex_range'13 = "index_range.rs" 197 11 197 13 - let%span sindex_range'14 = "index_range.rs" 198 6 198 7 - let%span sindex_range'15 = "index_range.rs" 198 4 198 8 - let%span sindex_range'16 = "index_range.rs" 198 11 198 13 - let%span sindex_range'17 = "index_range.rs" 200 14 200 15 - let%span sindex_range'18 = "index_range.rs" 200 12 200 16 - let%span sindex_range'19 = "index_range.rs" 200 20 200 21 - let%span sindex_range'20 = "index_range.rs" 202 25 202 26 - let%span sindex_range'21 = "index_range.rs" 203 16 203 17 - let%span sindex_range'22 = "index_range.rs" 203 22 203 24 - let%span sindex_range'23 = "index_range.rs" 204 16 204 17 - let%span sindex_range'24 = "index_range.rs" 204 22 204 23 - let%span sindex_range'25 = "index_range.rs" 205 16 205 17 - let%span sindex_range'26 = "index_range.rs" 205 22 205 24 - let%span sindex_range'27 = "index_range.rs" 206 16 206 17 - let%span sindex_range'28 = "index_range.rs" 206 22 206 23 - let%span sindex_range'29 = "index_range.rs" 207 16 207 17 - let%span sindex_range'30 = "index_range.rs" 207 22 207 23 - let%span sindex_range'31 = "index_range.rs" 207 12 207 23 - let%span sindex_range'32 = "index_range.rs" 206 12 206 23 - let%span sindex_range'33 = "index_range.rs" 205 12 205 24 - let%span sindex_range'34 = "index_range.rs" 204 12 204 23 - let%span sindex_range'35 = "index_range.rs" 203 12 203 24 - let%span sindex_range'36 = "index_range.rs" 202 12 202 26 - let%span sindex_range'37 = "index_range.rs" 200 12 200 21 - let%span sindex_range'38 = "index_range.rs" 196 12 196 24 - let%span sindex_range'39 = "index_range.rs" 192 12 192 35 - let%span sindex_range'40 = "index_range.rs" 187 12 187 50 - let%span sindex_range'41 = "index_range.rs" 7 4 12 22 + let%span sindex_range'7 = "index_range.rs" 192 23 192 24 + let%span sindex_range'8 = "index_range.rs" 195 24 195 25 + let%span sindex_range'9 = "index_range.rs" 196 23 196 24 + let%span sindex_range'10 = "index_range.rs" 197 6 197 7 + let%span sindex_range'11 = "index_range.rs" 197 4 197 8 + let%span sindex_range'12 = "index_range.rs" 197 11 197 13 + let%span sindex_range'13 = "index_range.rs" 198 6 198 7 + let%span sindex_range'14 = "index_range.rs" 198 4 198 8 + let%span sindex_range'15 = "index_range.rs" 198 11 198 13 + let%span sindex_range'16 = "index_range.rs" 200 14 200 15 + let%span sindex_range'17 = "index_range.rs" 200 12 200 16 + let%span sindex_range'18 = "index_range.rs" 200 20 200 21 + let%span sindex_range'19 = "index_range.rs" 202 25 202 26 + let%span sindex_range'20 = "index_range.rs" 203 16 203 17 + let%span sindex_range'21 = "index_range.rs" 203 22 203 24 + let%span sindex_range'22 = "index_range.rs" 204 16 204 17 + let%span sindex_range'23 = "index_range.rs" 204 22 204 23 + let%span sindex_range'24 = "index_range.rs" 205 16 205 17 + let%span sindex_range'25 = "index_range.rs" 205 22 205 24 + let%span sindex_range'26 = "index_range.rs" 206 16 206 17 + let%span sindex_range'27 = "index_range.rs" 206 22 206 23 + let%span sindex_range'28 = "index_range.rs" 207 16 207 17 + let%span sindex_range'29 = "index_range.rs" 207 22 207 23 + let%span sindex_range'30 = "index_range.rs" 207 4 207 24 + let%span sindex_range'31 = "index_range.rs" 206 4 206 24 + let%span sindex_range'32 = "index_range.rs" 205 4 205 25 + let%span sindex_range'33 = "index_range.rs" 204 4 204 24 + let%span sindex_range'34 = "index_range.rs" 203 4 203 25 + let%span sindex_range'35 = "index_range.rs" 202 4 202 27 + let%span sindex_range'36 = "index_range.rs" 200 4 200 22 + let%span sindex_range'37 = "index_range.rs" 196 4 196 25 + let%span sindex_range'38 = "index_range.rs" 192 4 192 36 + let%span sindex_range'39 = "index_range.rs" 187 4 187 51 + let%span sindex_range'40 = "index_range.rs" 7 4 12 22 let%span svec = "../../creusot-contracts/src/std/vec.rs" 190 16 190 48 let%span svec'0 = "../../creusot-contracts/src/std/vec.rs" 191 16 191 56 let%span svec'1 = "../../creusot-contracts/src/std/vec.rs" 197 26 197 42 @@ -1894,7 +1878,7 @@ module M_index_range__test_range_to_inclusive [#"index_range.rs" 179 0 179 32] meta "rewrite_def" function index_logic let rec create_arr (return' (x: t_Vec)) = any - [ return''0 (result: t_Vec) -> {[%#sindex_range'41] Seq.length (view result) = 5 + [ return''0 (result: t_Vec) -> {[%#sindex_range'40] Seq.length (view result) = 5 /\ Int32.to_int (index_logic result 0) = 0 /\ Int32.to_int (index_logic result 1) = 1 /\ Int32.to_int (index_logic result 2) = 2 @@ -1996,142 +1980,140 @@ module M_index_range__test_range_to_inclusive [#"index_range.rs" 179 0 179 32] [ s0 = [ &_5 <- { t_RangeToInclusive__end = ([%#sindex_range] (1: UInt64.t)) } ] s1 | s1 = index {arr} {_5} (fun (_ret: Slice64.slice Int32.t) -> [ &_3 <- _ret ] s2) | s2 = bb2 ] - | bb2 = s0 [ s0 = [ &s <- _3 ] s1 | s1 = len {s} (fun (_ret: UInt64.t) -> [ &_9 <- _ret ] s2) | s2 = bb3 ] + | bb2 = s0 [ s0 = [ &s <- _3 ] s1 | s1 = len {s} (fun (_ret: UInt64.t) -> [ &_8 <- _ret ] s2) | s2 = bb3 ] | bb3 = s0 - [ s0 = [ &_8 <- _9 = ([%#sindex_range'0] (2: UInt64.t)) ] s1 - | s1 = any [ br0 -> {_8 = false} (! bb9) | br1 -> {_8} (! bb4) ] ] + [ s0 = [ &_7 <- _8 = ([%#sindex_range'0] (2: UInt64.t)) ] s1 + | s1 = any [ br0 -> {_7 = false} (! bb12) | br1 -> {_7} (! bb4) ] ] | bb4 = s0 - [ s0 = [ &_13 <- [%#sindex_range'1] (0: UInt64.t) ] s1 - | s1 = [ &_14 <- Slice64.length s ] s2 - | s2 = [ &_15 <- UInt64.lt _13 _14 ] s3 - | s3 = {[@expl:index in bounds] [%#sindex_range'2] _15} s4 + [ s0 = [ &_12 <- [%#sindex_range'1] (0: UInt64.t) ] s1 + | s1 = [ &_13 <- Slice64.length s ] s2 + | s2 = [ &_14 <- UInt64.lt _12 _13 ] s3 + | s3 = {[@expl:index in bounds] [%#sindex_range'2] _14} s4 | s4 = bb5 ] | bb5 = s0 - [ s0 = Slice64.get {s} {_13} (fun (r: Int32.t) -> [ &_11 <- r = ([%#sindex_range'3] (0: Int32.t)) ] s1) - | s1 = any [ br0 -> {_11 = false} (! bb9) | br1 -> {_11} (! bb6) ] ] + [ s0 = Slice64.get {s} {_12} (fun (r: Int32.t) -> [ &_10 <- r = ([%#sindex_range'3] (0: Int32.t)) ] s1) + | s1 = any [ br0 -> {_10 = false} (! bb12) | br1 -> {_10} (! bb6) ] ] | bb6 = s0 [ s0 = [ &_17 <- [%#sindex_range'4] (1: UInt64.t) ] s1 | s1 = [ &_18 <- Slice64.length s ] s2 | s2 = [ &_19 <- UInt64.lt _17 _18 ] s3 | s3 = {[@expl:index in bounds] [%#sindex_range'5] _19} s4 - | s4 = bb10 ] - | bb10 = s0 - [ s0 = Slice64.get {s} {_17} (fun (r: Int32.t) -> [ &_7 <- r = ([%#sindex_range'6] (1: Int32.t)) ] s1) - | s1 = bb11 ] - | bb9 = s0 [ s0 = [ &_7 <- [%#sindex_range'7] false ] s1 | s1 = bb11 ] - | bb11 = any [ br0 -> {_7 = false} (! bb12) | br1 -> {_7} (! bb14) ] - | bb14 = s0 [ s0 = deref {arr} (fun (_ret: Slice64.slice Int32.t) -> [ &_26 <- _ret ] s1) | s1 = bb15 ] - | bb15 = s0 - [ s0 = [ &_28 <- { t_RangeToInclusive__end = ([%#sindex_range'8] (5: UInt64.t)) } ] s1 + | s4 = bb7 ] + | bb7 = s0 + [ s0 = Slice64.get {s} {_17} (fun (r: Int32.t) -> [ &_15 <- r = ([%#sindex_range'6] (1: Int32.t)) ] s1) + | s1 = any [ br0 -> {_15 = false} (! bb12) | br1 -> {_15} (! bb8) ] ] + | bb8 = s0 [ s0 = deref {arr} (fun (_ret: Slice64.slice Int32.t) -> [ &_26 <- _ret ] s1) | s1 = bb13 ] + | bb13 = s0 + [ s0 = [ &_28 <- { t_RangeToInclusive__end = ([%#sindex_range'7] (5: UInt64.t)) } ] s1 | s1 = get {_26} {_28} (fun (_ret: t_Option) -> [ &_24 <- _ret ] s2) - | s2 = bb16 ] - | bb16 = s0 [ s0 = is_none {_24} (fun (_ret: bool) -> [ &_22 <- _ret ] s1) | s1 = bb17 ] - | bb17 = any [ br0 -> {_22 = false} (! bb18) | br1 -> {_22} (! bb20) ] - | bb20 = s0 + | s2 = bb14 ] + | bb14 = s0 [ s0 = is_none {_24} (fun (_ret: bool) -> [ &_22 <- _ret ] s1) | s1 = bb15 ] + | bb15 = any [ br0 -> {_22 = false} (! bb17) | br1 -> {_22} (! bb16) ] + | bb16 = s0 [ s0 = MutBorrow.borrow_mut {arr} (fun (_ret: MutBorrow.t t_Vec) -> [ &_32 <- _ret ] [ &arr <- _ret.final ] s1) - | s1 = [ &_33 <- { t_RangeToInclusive__end = ([%#sindex_range'9] (2: UInt64.t)) } ] s2 + | s1 = [ &_33 <- { t_RangeToInclusive__end = ([%#sindex_range'8] (2: UInt64.t)) } ] s2 | s2 = index_mut {_32} {_33} (fun (_ret: MutBorrow.t (Slice64.slice Int32.t)) -> [ &_31 <- _ret ] s3) - | s3 = bb21 ] - | bb21 = s0 + | s3 = bb18 ] + | bb18 = s0 [ s0 = MutBorrow.borrow_final {_31.current} {MutBorrow.get_id _31} (fun (_ret: MutBorrow.t (Slice64.slice Int32.t)) -> [ &s'0 <- _ret ] [ &_31 <- { _31 with current = _ret.final } ] s1) | s1 = len {s'0.current} (fun (_ret: UInt64.t) -> [ &_36 <- _ret ] s2) - | s2 = bb22 ] - | bb22 = s0 - [ s0 = [ &_35 <- _36 = ([%#sindex_range'10] (3: UInt64.t)) ] s1 - | s1 = any [ br0 -> {_35 = false} (! bb23) | br1 -> {_35} (! bb25) ] ] - | bb25 = s0 - [ s0 = [ &_39 <- [%#sindex_range'11] (0: UInt64.t) ] s1 + | s2 = bb19 ] + | bb19 = s0 + [ s0 = [ &_35 <- _36 = ([%#sindex_range'9] (3: UInt64.t)) ] s1 + | s1 = any [ br0 -> {_35 = false} (! bb21) | br1 -> {_35} (! bb20) ] ] + | bb20 = s0 + [ s0 = [ &_39 <- [%#sindex_range'10] (0: UInt64.t) ] s1 | s1 = Opaque.fresh_ptr (fun (_ptr: Opaque.ptr) -> -{Slice64.slice_ptr_len _ptr = Slice64.length s'0.current}- [ &_40 <- _ptr ] s2) | s2 = [ &_41 <- Slice64.slice_ptr_len _40 ] s3 | s3 = [ &_42 <- UInt64.lt _39 _41 ] s4 - | s4 = {[@expl:index in bounds] [%#sindex_range'12] _42} s5 - | s5 = bb26 ] - | bb26 = s0 - [ s0 = Slice64.set {s'0.current} {_39} {[%#sindex_range'13] (-1: Int32.t)} + | s4 = {[@expl:index in bounds] [%#sindex_range'11] _42} s5 + | s5 = bb22 ] + | bb22 = s0 + [ s0 = Slice64.set {s'0.current} {_39} {[%#sindex_range'12] (-1: Int32.t)} (fun (r: Slice64.slice Int32.t) -> [ &s'0 <- { s'0 with current = r } ] s1) - | s1 = [ &_43 <- [%#sindex_range'14] (2: UInt64.t) ] s2 + | s1 = [ &_43 <- [%#sindex_range'13] (2: UInt64.t) ] s2 | s2 = Opaque.fresh_ptr (fun (_ptr: Opaque.ptr) -> -{Slice64.slice_ptr_len _ptr = Slice64.length s'0.current}- [ &_44 <- _ptr ] s3) | s3 = [ &_45 <- Slice64.slice_ptr_len _44 ] s4 | s4 = [ &_46 <- UInt64.lt _43 _45 ] s5 - | s5 = {[@expl:index in bounds] [%#sindex_range'15] _46} s6 - | s6 = bb27 ] - | bb27 = s0 - [ s0 = Slice64.set {s'0.current} {_43} {[%#sindex_range'16] (-1: Int32.t)} + | s5 = {[@expl:index in bounds] [%#sindex_range'14] _46} s6 + | s6 = bb23 ] + | bb23 = s0 + [ s0 = Slice64.set {s'0.current} {_43} {[%#sindex_range'15] (-1: Int32.t)} (fun (r: Slice64.slice Int32.t) -> [ &s'0 <- { s'0 with current = r } ] s1) - | s1 = [ &_50 <- [%#sindex_range'17] (1: UInt64.t) ] s2 + | s1 = [ &_50 <- [%#sindex_range'16] (1: UInt64.t) ] s2 | s2 = Opaque.fresh_ptr (fun (_ptr: Opaque.ptr) -> -{Slice64.slice_ptr_len _ptr = Slice64.length s'0.current}- [ &_51 <- _ptr ] s3) | s3 = [ &_52 <- Slice64.slice_ptr_len _51 ] s4 | s4 = [ &_53 <- UInt64.lt _50 _52 ] s5 - | s5 = {[@expl:index in bounds] [%#sindex_range'18] _53} s6 - | s6 = bb28 ] - | bb28 = s0 + | s5 = {[@expl:index in bounds] [%#sindex_range'17] _53} s6 + | s6 = bb24 ] + | bb24 = s0 [ s0 = -{resolve'0 s'0}- s1 | s1 = -{resolve'0 _31}- s2 | s2 = Slice64.get {s'0.current} {_50} - (fun (r: Int32.t) -> [ &_48 <- r = ([%#sindex_range'19] (1: Int32.t)) ] s3) - | s3 = any [ br0 -> {_48 = false} (! bb29) | br1 -> {_48} (! bb31) ] ] - | bb31 = s0 [ s0 = len'0 {arr} (fun (_ret: UInt64.t) -> [ &_57 <- _ret ] s1) | s1 = bb32 ] - | bb32 = s0 - [ s0 = [ &_56 <- _57 = ([%#sindex_range'20] (5: UInt64.t)) ] s1 - | s1 = any [ br0 -> {_56 = false} (! bb33) | br1 -> {_56} (! bb35) ] ] - | bb35 = s0 - [ s0 = index'0 {arr} {[%#sindex_range'21] (0: UInt64.t)} (fun (_ret: Int32.t) -> [ &_63 <- _ret ] s1) + (fun (r: Int32.t) -> [ &_48 <- r = ([%#sindex_range'18] (1: Int32.t)) ] s3) + | s3 = any [ br0 -> {_48 = false} (! bb26) | br1 -> {_48} (! bb25) ] ] + | bb25 = s0 [ s0 = len'0 {arr} (fun (_ret: UInt64.t) -> [ &_57 <- _ret ] s1) | s1 = bb27 ] + | bb27 = s0 + [ s0 = [ &_56 <- _57 = ([%#sindex_range'19] (5: UInt64.t)) ] s1 + | s1 = any [ br0 -> {_56 = false} (! bb29) | br1 -> {_56} (! bb28) ] ] + | bb28 = s0 + [ s0 = index'0 {arr} {[%#sindex_range'20] (0: UInt64.t)} (fun (_ret: Int32.t) -> [ &_63 <- _ret ] s1) + | s1 = bb30 ] + | bb30 = s0 + [ s0 = [ &_61 <- _63 = ([%#sindex_range'21] (-1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_61 = false} (! bb32) | br1 -> {_61} (! bb31) ] ] + | bb31 = s0 + [ s0 = index'0 {arr} {[%#sindex_range'22] (1: UInt64.t)} (fun (_ret: Int32.t) -> [ &_69 <- _ret ] s1) + | s1 = bb33 ] + | bb33 = s0 + [ s0 = [ &_67 <- _69 = ([%#sindex_range'23] (1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_67 = false} (! bb35) | br1 -> {_67} (! bb34) ] ] + | bb34 = s0 + [ s0 = index'0 {arr} {[%#sindex_range'24] (2: UInt64.t)} (fun (_ret: Int32.t) -> [ &_75 <- _ret ] s1) | s1 = bb36 ] | bb36 = s0 - [ s0 = [ &_61 <- _63 = ([%#sindex_range'22] (-1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_61 = false} (! bb37) | br1 -> {_61} (! bb39) ] ] + [ s0 = [ &_73 <- _75 = ([%#sindex_range'25] (-1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_73 = false} (! bb38) | br1 -> {_73} (! bb37) ] ] + | bb37 = s0 + [ s0 = index'0 {arr} {[%#sindex_range'26] (3: UInt64.t)} (fun (_ret: Int32.t) -> [ &_81 <- _ret ] s1) + | s1 = bb39 ] | bb39 = s0 - [ s0 = index'0 {arr} {[%#sindex_range'23] (1: UInt64.t)} (fun (_ret: Int32.t) -> [ &_69 <- _ret ] s1) - | s1 = bb40 ] + [ s0 = [ &_79 <- _81 = ([%#sindex_range'27] (3: Int32.t)) ] s1 + | s1 = any [ br0 -> {_79 = false} (! bb41) | br1 -> {_79} (! bb40) ] ] | bb40 = s0 - [ s0 = [ &_67 <- _69 = ([%#sindex_range'24] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_67 = false} (! bb41) | br1 -> {_67} (! bb43) ] ] - | bb43 = s0 - [ s0 = index'0 {arr} {[%#sindex_range'25] (2: UInt64.t)} (fun (_ret: Int32.t) -> [ &_75 <- _ret ] s1) - | s1 = bb44 ] - | bb44 = s0 - [ s0 = [ &_73 <- _75 = ([%#sindex_range'26] (-1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_73 = false} (! bb45) | br1 -> {_73} (! bb47) ] ] - | bb47 = s0 - [ s0 = index'0 {arr} {[%#sindex_range'27] (3: UInt64.t)} (fun (_ret: Int32.t) -> [ &_81 <- _ret ] s1) - | s1 = bb48 ] - | bb48 = s0 - [ s0 = [ &_79 <- _81 = ([%#sindex_range'28] (3: Int32.t)) ] s1 - | s1 = any [ br0 -> {_79 = false} (! bb49) | br1 -> {_79} (! bb51) ] ] - | bb51 = s0 - [ s0 = index'0 {arr} {[%#sindex_range'29] (4: UInt64.t)} (fun (_ret: Int32.t) -> [ &_87 <- _ret ] s1) - | s1 = bb52 ] - | bb52 = s0 - [ s0 = [ &_85 <- _87 = ([%#sindex_range'30] (4: Int32.t)) ] s1 - | s1 = any [ br0 -> {_85 = false} (! bb53) | br1 -> {_85} (! bb56) ] ] - | bb56 = return''0 {_0} - | bb53 = {[%#sindex_range'31] false} any - | bb49 = {[%#sindex_range'32] false} any - | bb45 = {[%#sindex_range'33] false} any - | bb41 = {[%#sindex_range'34] false} any - | bb37 = {[%#sindex_range'35] false} any - | bb33 = {[%#sindex_range'36] false} any - | bb29 = {[%#sindex_range'37] false} any - | bb23 = s0 [ s0 = -{resolve'0 s'0}- s1 | s1 = -{resolve'0 _31}- s2 | s2 = {[%#sindex_range'38] false} any ] - | bb18 = {[%#sindex_range'39] false} any - | bb12 = {[%#sindex_range'40] false} any ] + [ s0 = index'0 {arr} {[%#sindex_range'28] (4: UInt64.t)} (fun (_ret: Int32.t) -> [ &_87 <- _ret ] s1) + | s1 = bb42 ] + | bb42 = s0 + [ s0 = [ &_85 <- _87 = ([%#sindex_range'29] (4: Int32.t)) ] s1 + | s1 = any [ br0 -> {_85 = false} (! bb44) | br1 -> {_85} (! bb45) ] ] + | bb45 = return''0 {_0} + | bb44 = {[%#sindex_range'30] false} any + | bb41 = {[%#sindex_range'31] false} any + | bb38 = {[%#sindex_range'32] false} any + | bb35 = {[%#sindex_range'33] false} any + | bb32 = {[%#sindex_range'34] false} any + | bb29 = {[%#sindex_range'35] false} any + | bb26 = {[%#sindex_range'36] false} any + | bb21 = s0 [ s0 = -{resolve'0 s'0}- s1 | s1 = -{resolve'0 _31}- s2 | s2 = {[%#sindex_range'37] false} any ] + | bb17 = {[%#sindex_range'38] false} any + | bb12 = {[%#sindex_range'39] false} any ] [ & _0: () = Any.any_l () | & arr: t_Vec = Any.any_l () | & s: Slice64.slice Int32.t = Any.any_l () | & _3: Slice64.slice Int32.t = Any.any_l () | & _5: t_RangeToInclusive = Any.any_l () | & _7: bool = Any.any_l () - | & _8: bool = Any.any_l () - | & _9: UInt64.t = Any.any_l () - | & _11: bool = Any.any_l () + | & _8: UInt64.t = Any.any_l () + | & _10: bool = Any.any_l () + | & _12: UInt64.t = Any.any_l () | & _13: UInt64.t = Any.any_l () - | & _14: UInt64.t = Any.any_l () + | & _14: bool = Any.any_l () | & _15: bool = Any.any_l () | & _17: UInt64.t = Any.any_l () | & _18: UInt64.t = Any.any_l () diff --git a/tests/should_succeed/instant.coma b/tests/should_succeed/instant.coma index c6e003c4df..9ac8668053 100644 --- a/tests/should_succeed/instant.coma +++ b/tests/should_succeed/instant.coma @@ -4,20 +4,20 @@ module M_instant__test_instant [#"instant.rs" 7 0 7 21] let%span sinstant'1 = "instant.rs" 16 18 16 45 let%span sinstant'2 = "instant.rs" 18 18 18 50 let%span sinstant'3 = "instant.rs" 23 18 23 44 - let%span sinstant'4 = "instant.rs" 33 12 33 74 - let%span sinstant'5 = "instant.rs" 32 12 32 73 - let%span sinstant'6 = "instant.rs" 31 12 31 69 - let%span sinstant'7 = "instant.rs" 30 12 30 69 - let%span sinstant'8 = "instant.rs" 29 12 29 63 - let%span sinstant'9 = "instant.rs" 28 12 28 62 - let%span sinstant'10 = "instant.rs" 26 12 26 48 - let%span sinstant'11 = "instant.rs" 25 12 25 49 - let%span sinstant'12 = "instant.rs" 24 12 24 41 - let%span sinstant'13 = "instant.rs" 21 12 21 41 - let%span sinstant'14 = "instant.rs" 20 12 20 61 - let%span sinstant'15 = "instant.rs" 13 12 13 41 - let%span sinstant'16 = "instant.rs" 12 12 12 61 - let%span sinstant'17 = "instant.rs" 10 12 10 41 + let%span sinstant'4 = "instant.rs" 33 4 33 75 + let%span sinstant'5 = "instant.rs" 32 4 32 74 + let%span sinstant'6 = "instant.rs" 31 4 31 70 + let%span sinstant'7 = "instant.rs" 30 4 30 70 + let%span sinstant'8 = "instant.rs" 29 4 29 64 + let%span sinstant'9 = "instant.rs" 28 4 28 63 + let%span sinstant'10 = "instant.rs" 26 4 26 49 + let%span sinstant'11 = "instant.rs" 25 4 25 50 + let%span sinstant'12 = "instant.rs" 24 4 24 42 + let%span sinstant'13 = "instant.rs" 21 4 21 42 + let%span sinstant'14 = "instant.rs" 20 4 20 62 + let%span sinstant'15 = "instant.rs" 13 4 13 42 + let%span sinstant'16 = "instant.rs" 12 4 12 62 + let%span sinstant'17 = "instant.rs" 10 4 10 42 let%span stime = "../../creusot-contracts/src/std/time.rs" 150 26 150 38 let%span stime'0 = "../../creusot-contracts/src/std/time.rs" 76 26 76 57 let%span stime'1 = "../../creusot-contracts/src/std/time.rs" 153 26 153 38 @@ -331,90 +331,90 @@ module M_instant__test_instant [#"instant.rs" 7 0 7 21] [ s0 = from_secs {[%#sinstant] (0: UInt64.t)} (fun (_ret: t_Duration) -> [ &zero_dur <- _ret ] s1) | s1 = bb2 ] | bb2 = s0 [ s0 = elapsed {instant} (fun (_ret: t_Duration) -> [ &_6 <- _ret ] s1) | s1 = bb3 ] | bb3 = s0 [ s0 = ge {_6} {zero_dur} (fun (_ret: bool) -> [ &_4 <- _ret ] s1) | s1 = bb4 ] - | bb4 = any [ br0 -> {_4 = false} (! bb5) | br1 -> {_4} (! bb7) ] - | bb7 = s0 [ s0 = checked_add {instant} {zero_dur} (fun (_ret: t_Option) -> [ &_14 <- _ret ] s1) | s1 = bb8 ] - | bb8 = s0 [ s0 = unwrap {_14} (fun (_ret: t_Instant'0) -> [ &_13 <- _ret ] s1) | s1 = bb9 ] - | bb9 = s0 [ s0 = eq {_13} {instant} (fun (_ret: bool) -> [ &_11 <- _ret ] s1) | s1 = bb10 ] - | bb10 = any [ br0 -> {_11 = false} (! bb11) | br1 -> {_11} (! bb13) ] - | bb13 = s0 [ s0 = add {instant} {zero_dur} (fun (_ret: t_Instant'0) -> [ &_22 <- _ret ] s1) | s1 = bb14 ] - | bb14 = s0 [ s0 = eq {_22} {instant} (fun (_ret: bool) -> [ &_20 <- _ret ] s1) | s1 = bb15 ] - | bb15 = any [ br0 -> {_20 = false} (! bb16) | br1 -> {_20} (! bb18) ] - | bb18 = s0 + | bb4 = any [ br0 -> {_4 = false} (! bb6) | br1 -> {_4} (! bb5) ] + | bb5 = s0 [ s0 = checked_add {instant} {zero_dur} (fun (_ret: t_Option) -> [ &_14 <- _ret ] s1) | s1 = bb7 ] + | bb7 = s0 [ s0 = unwrap {_14} (fun (_ret: t_Instant'0) -> [ &_13 <- _ret ] s1) | s1 = bb8 ] + | bb8 = s0 [ s0 = eq {_13} {instant} (fun (_ret: bool) -> [ &_11 <- _ret ] s1) | s1 = bb9 ] + | bb9 = any [ br0 -> {_11 = false} (! bb11) | br1 -> {_11} (! bb10) ] + | bb10 = s0 [ s0 = add {instant} {zero_dur} (fun (_ret: t_Instant'0) -> [ &_22 <- _ret ] s1) | s1 = bb12 ] + | bb12 = s0 [ s0 = eq {_22} {instant} (fun (_ret: bool) -> [ &_20 <- _ret ] s1) | s1 = bb13 ] + | bb13 = any [ br0 -> {_20 = false} (! bb15) | br1 -> {_20} (! bb14) ] + | bb14 = s0 [ s0 = from_secs {[%#sinstant'0] (3: UInt64.t)} (fun (_ret: t_Duration) -> [ &three_seconds <- _ret ] s1) - | s1 = bb19 ] - | bb19 = s0 - [ s0 = add {instant} {three_seconds} (fun (_ret: t_Instant'0) -> [ &greater_instant <- _ret ] s1) | s1 = bb20 ] - | bb20 = s0 + | s1 = bb16 ] + | bb16 = s0 + [ s0 = add {instant} {three_seconds} (fun (_ret: t_Instant'0) -> [ &greater_instant <- _ret ] s1) | s1 = bb17 ] + | bb17 = s0 [ s0 = {[@expl:assertion] [%#sinstant'1] view instant < view greater_instant} s1 | s1 = add {greater_instant} {three_seconds} (fun (_ret: t_Instant'0) -> [ &even_greater_instant <- _ret ] s2) - | s2 = bb21 ] - | bb21 = s0 + | s2 = bb18 ] + | bb18 = s0 [ s0 = {[@expl:assertion] [%#sinstant'2] view instant < view even_greater_instant} s1 | s1 = checked_sub {instant} {zero_dur} (fun (_ret: t_Option) -> [ &_42 <- _ret ] s2) - | s2 = bb22 ] - | bb22 = s0 [ s0 = unwrap {_42} (fun (_ret: t_Instant'0) -> [ &_41 <- _ret ] s1) | s1 = bb23 ] - | bb23 = s0 [ s0 = eq {_41} {instant} (fun (_ret: bool) -> [ &_39 <- _ret ] s1) | s1 = bb24 ] - | bb24 = any [ br0 -> {_39 = false} (! bb25) | br1 -> {_39} (! bb27) ] - | bb27 = s0 [ s0 = sub {instant} {zero_dur} (fun (_ret: t_Instant'0) -> [ &_50 <- _ret ] s1) | s1 = bb28 ] - | bb28 = s0 [ s0 = eq {_50} {instant} (fun (_ret: bool) -> [ &_48 <- _ret ] s1) | s1 = bb29 ] - | bb29 = any [ br0 -> {_48 = false} (! bb30) | br1 -> {_48} (! bb32) ] - | bb32 = s0 - [ s0 = sub {instant} {three_seconds} (fun (_ret: t_Instant'0) -> [ &lesser_instant <- _ret ] s1) | s1 = bb33 ] - | bb33 = s0 + | s2 = bb19 ] + | bb19 = s0 [ s0 = unwrap {_42} (fun (_ret: t_Instant'0) -> [ &_41 <- _ret ] s1) | s1 = bb20 ] + | bb20 = s0 [ s0 = eq {_41} {instant} (fun (_ret: bool) -> [ &_39 <- _ret ] s1) | s1 = bb21 ] + | bb21 = any [ br0 -> {_39 = false} (! bb23) | br1 -> {_39} (! bb22) ] + | bb22 = s0 [ s0 = sub {instant} {zero_dur} (fun (_ret: t_Instant'0) -> [ &_50 <- _ret ] s1) | s1 = bb24 ] + | bb24 = s0 [ s0 = eq {_50} {instant} (fun (_ret: bool) -> [ &_48 <- _ret ] s1) | s1 = bb25 ] + | bb25 = any [ br0 -> {_48 = false} (! bb27) | br1 -> {_48} (! bb26) ] + | bb26 = s0 + [ s0 = sub {instant} {three_seconds} (fun (_ret: t_Instant'0) -> [ &lesser_instant <- _ret ] s1) | s1 = bb28 ] + | bb28 = s0 [ s0 = {[@expl:assertion] [%#sinstant'3] view instant > view lesser_instant} s1 | s1 = sub'0 {instant} {instant} (fun (_ret: t_Duration) -> [ &_63 <- _ret ] s2) - | s2 = bb34 ] - | bb34 = s0 [ s0 = eq'0 {_63} {zero_dur} (fun (_ret: bool) -> [ &_61 <- _ret ] s1) | s1 = bb35 ] - | bb35 = any [ br0 -> {_61 = false} (! bb36) | br1 -> {_61} (! bb38) ] - | bb38 = s0 [ s0 = sub'0 {instant} {greater_instant} (fun (_ret: t_Duration) -> [ &_71 <- _ret ] s1) | s1 = bb39 ] - | bb39 = s0 [ s0 = eq'0 {_71} {zero_dur} (fun (_ret: bool) -> [ &_69 <- _ret ] s1) | s1 = bb40 ] - | bb40 = any [ br0 -> {_69 = false} (! bb41) | br1 -> {_69} (! bb43) ] - | bb43 = s0 [ s0 = sub'0 {greater_instant} {instant} (fun (_ret: t_Duration) -> [ &_79 <- _ret ] s1) | s1 = bb44 ] - | bb44 = s0 [ s0 = gt {_79} {zero_dur} (fun (_ret: bool) -> [ &_77 <- _ret ] s1) | s1 = bb45 ] - | bb45 = any [ br0 -> {_77 = false} (! bb46) | br1 -> {_77} (! bb48) ] - | bb48 = s0 - [ s0 = duration_since {greater_instant} {instant} (fun (_ret: t_Duration) -> [ &_87 <- _ret ] s1) | s1 = bb49 ] - | bb49 = s0 [ s0 = gt {_87} {zero_dur} (fun (_ret: bool) -> [ &_85 <- _ret ] s1) | s1 = bb50 ] - | bb50 = any [ br0 -> {_85 = false} (! bb51) | br1 -> {_85} (! bb53) ] - | bb53 = s0 - [ s0 = duration_since {instant} {greater_instant} (fun (_ret: t_Duration) -> [ &_95 <- _ret ] s1) | s1 = bb54 ] - | bb54 = s0 [ s0 = eq'0 {_95} {zero_dur} (fun (_ret: bool) -> [ &_93 <- _ret ] s1) | s1 = bb55 ] - | bb55 = any [ br0 -> {_93 = false} (! bb56) | br1 -> {_93} (! bb58) ] - | bb58 = s0 + | s2 = bb29 ] + | bb29 = s0 [ s0 = eq'0 {_63} {zero_dur} (fun (_ret: bool) -> [ &_61 <- _ret ] s1) | s1 = bb30 ] + | bb30 = any [ br0 -> {_61 = false} (! bb32) | br1 -> {_61} (! bb31) ] + | bb31 = s0 [ s0 = sub'0 {instant} {greater_instant} (fun (_ret: t_Duration) -> [ &_71 <- _ret ] s1) | s1 = bb33 ] + | bb33 = s0 [ s0 = eq'0 {_71} {zero_dur} (fun (_ret: bool) -> [ &_69 <- _ret ] s1) | s1 = bb34 ] + | bb34 = any [ br0 -> {_69 = false} (! bb36) | br1 -> {_69} (! bb35) ] + | bb35 = s0 [ s0 = sub'0 {greater_instant} {instant} (fun (_ret: t_Duration) -> [ &_79 <- _ret ] s1) | s1 = bb37 ] + | bb37 = s0 [ s0 = gt {_79} {zero_dur} (fun (_ret: bool) -> [ &_77 <- _ret ] s1) | s1 = bb38 ] + | bb38 = any [ br0 -> {_77 = false} (! bb40) | br1 -> {_77} (! bb39) ] + | bb39 = s0 + [ s0 = duration_since {greater_instant} {instant} (fun (_ret: t_Duration) -> [ &_87 <- _ret ] s1) | s1 = bb41 ] + | bb41 = s0 [ s0 = gt {_87} {zero_dur} (fun (_ret: bool) -> [ &_85 <- _ret ] s1) | s1 = bb42 ] + | bb42 = any [ br0 -> {_85 = false} (! bb44) | br1 -> {_85} (! bb43) ] + | bb43 = s0 + [ s0 = duration_since {instant} {greater_instant} (fun (_ret: t_Duration) -> [ &_95 <- _ret ] s1) | s1 = bb45 ] + | bb45 = s0 [ s0 = eq'0 {_95} {zero_dur} (fun (_ret: bool) -> [ &_93 <- _ret ] s1) | s1 = bb46 ] + | bb46 = any [ br0 -> {_93 = false} (! bb48) | br1 -> {_93} (! bb47) ] + | bb47 = s0 [ s0 = checked_duration_since {greater_instant} {instant} (fun (_ret: t_Option'1) -> [ &_103 <- _ret ] s1) - | s1 = bb59 ] - | bb59 = s0 [ s0 = is_some {_103} (fun (_ret: bool) -> [ &_101 <- _ret ] s1) | s1 = bb60 ] - | bb60 = any [ br0 -> {_101 = false} (! bb61) | br1 -> {_101} (! bb63) ] - | bb63 = s0 + | s1 = bb49 ] + | bb49 = s0 [ s0 = is_some {_103} (fun (_ret: bool) -> [ &_101 <- _ret ] s1) | s1 = bb50 ] + | bb50 = any [ br0 -> {_101 = false} (! bb52) | br1 -> {_101} (! bb51) ] + | bb51 = s0 [ s0 = checked_duration_since {instant} {greater_instant} (fun (_ret: t_Option'1) -> [ &_110 <- _ret ] s1) - | s1 = bb64 ] - | bb64 = s0 [ s0 = is_none {_110} (fun (_ret: bool) -> [ &_108 <- _ret ] s1) | s1 = bb65 ] - | bb65 = any [ br0 -> {_108 = false} (! bb66) | br1 -> {_108} (! bb68) ] - | bb68 = s0 + | s1 = bb53 ] + | bb53 = s0 [ s0 = is_none {_110} (fun (_ret: bool) -> [ &_108 <- _ret ] s1) | s1 = bb54 ] + | bb54 = any [ br0 -> {_108 = false} (! bb56) | br1 -> {_108} (! bb55) ] + | bb55 = s0 [ s0 = saturating_duration_since {greater_instant} {instant} (fun (_ret: t_Duration) -> [ &_117 <- _ret ] s1) - | s1 = bb69 ] - | bb69 = s0 [ s0 = gt {_117} {zero_dur} (fun (_ret: bool) -> [ &_115 <- _ret ] s1) | s1 = bb70 ] - | bb70 = any [ br0 -> {_115 = false} (! bb71) | br1 -> {_115} (! bb73) ] - | bb73 = s0 + | s1 = bb57 ] + | bb57 = s0 [ s0 = gt {_117} {zero_dur} (fun (_ret: bool) -> [ &_115 <- _ret ] s1) | s1 = bb58 ] + | bb58 = any [ br0 -> {_115 = false} (! bb60) | br1 -> {_115} (! bb59) ] + | bb59 = s0 [ s0 = saturating_duration_since {instant} {greater_instant} (fun (_ret: t_Duration) -> [ &_125 <- _ret ] s1) - | s1 = bb74 ] - | bb74 = s0 [ s0 = eq'0 {_125} {zero_dur} (fun (_ret: bool) -> [ &_123 <- _ret ] s1) | s1 = bb75 ] - | bb75 = any [ br0 -> {_123 = false} (! bb76) | br1 -> {_123} (! bb78) ] - | bb78 = return''0 {_0} - | bb76 = {[%#sinstant'4] false} any - | bb71 = {[%#sinstant'5] false} any - | bb66 = {[%#sinstant'6] false} any - | bb61 = {[%#sinstant'7] false} any - | bb56 = {[%#sinstant'8] false} any - | bb51 = {[%#sinstant'9] false} any - | bb46 = {[%#sinstant'10] false} any - | bb41 = {[%#sinstant'11] false} any - | bb36 = {[%#sinstant'12] false} any - | bb30 = {[%#sinstant'13] false} any - | bb25 = {[%#sinstant'14] false} any - | bb16 = {[%#sinstant'15] false} any + | s1 = bb61 ] + | bb61 = s0 [ s0 = eq'0 {_125} {zero_dur} (fun (_ret: bool) -> [ &_123 <- _ret ] s1) | s1 = bb62 ] + | bb62 = any [ br0 -> {_123 = false} (! bb64) | br1 -> {_123} (! bb63) ] + | bb63 = return''0 {_0} + | bb64 = {[%#sinstant'4] false} any + | bb60 = {[%#sinstant'5] false} any + | bb56 = {[%#sinstant'6] false} any + | bb52 = {[%#sinstant'7] false} any + | bb48 = {[%#sinstant'8] false} any + | bb44 = {[%#sinstant'9] false} any + | bb40 = {[%#sinstant'10] false} any + | bb36 = {[%#sinstant'11] false} any + | bb32 = {[%#sinstant'12] false} any + | bb27 = {[%#sinstant'13] false} any + | bb23 = {[%#sinstant'14] false} any + | bb15 = {[%#sinstant'15] false} any | bb11 = {[%#sinstant'16] false} any - | bb5 = {[%#sinstant'17] false} any ] + | bb6 = {[%#sinstant'17] false} any ] [ & _0: () = Any.any_l () | & instant: t_Instant'0 = Any.any_l () | & zero_dur: t_Duration = Any.any_l () diff --git a/tests/should_succeed/iterators/03_std_iterators.coma b/tests/should_succeed/iterators/03_std_iterators.coma index 5a88fed2be..e5240f5357 100644 --- a/tests/should_succeed/iterators/03_std_iterators.coma +++ b/tests/should_succeed/iterators/03_std_iterators.coma @@ -752,7 +752,7 @@ end module M_03_std_iterators__skip_take [#"03_std_iterators.rs" 36 0 36 48] let%span s03_std_iterators = "03_std_iterators.rs" 39 20 39 31 let%span s03_std_iterators'0 = "03_std_iterators.rs" 36 30 36 34 - let%span s03_std_iterators'1 = "03_std_iterators.rs" 1 0 1387 4 + let%span s03_std_iterators'1 = "03_std_iterators.rs" 1 0 1388 4 let%span siter = "../../../creusot-contracts/src/std/iter.rs" 99 16 99 17 let%span siter'0 = "../../../creusot-contracts/src/std/iter.rs" 100 26 100 67 let%span siter'1 = "../../../creusot-contracts/src/std/iter.rs" 93 16 93 17 diff --git a/tests/should_succeed/iterators/08_collect_extend.coma b/tests/should_succeed/iterators/08_collect_extend.coma index 30d65a366e..e119d9baa4 100644 --- a/tests/should_succeed/iterators/08_collect_extend.coma +++ b/tests/should_succeed/iterators/08_collect_extend.coma @@ -7,7 +7,7 @@ module M_08_collect_extend__extend [#"08_collect_extend.rs" 20 0 20 66] let%span s08_collect_extend'4 = "08_collect_extend.rs" 20 40 20 43 let%span s08_collect_extend'5 = "08_collect_extend.rs" 20 58 20 62 let%span s08_collect_extend'6 = "08_collect_extend.rs" 17 2 18 82 - let%span s08_collect_extend'7 = "08_collect_extend.rs" 1 0 75 4 + let%span s08_collect_extend'7 = "08_collect_extend.rs" 1 0 76 4 let%span siter = "../../../creusot-contracts/src/std/iter.rs" 214 8 214 9 let%span siter'0 = "../../../creusot-contracts/src/std/iter.rs" 215 18 215 32 let%span siter'1 = "../../../creusot-contracts/src/std/iter.rs" 42 4 42 49 @@ -270,7 +270,7 @@ module M_08_collect_extend__collect [#"08_collect_extend.rs" 38 0 38 52] let%span s08_collect_extend'3 = "08_collect_extend.rs" 38 28 38 32 let%span s08_collect_extend'4 = "08_collect_extend.rs" 38 40 38 52 let%span s08_collect_extend'5 = "08_collect_extend.rs" 35 2 36 87 - let%span s08_collect_extend'6 = "08_collect_extend.rs" 1 0 75 4 + let%span s08_collect_extend'6 = "08_collect_extend.rs" 1 0 76 4 let%span siter = "../../../creusot-contracts/src/std/iter.rs" 214 8 214 9 let%span siter'0 = "../../../creusot-contracts/src/std/iter.rs" 215 18 215 32 let%span siter'1 = "../../../creusot-contracts/src/std/iter.rs" 42 4 42 49 diff --git a/tests/should_succeed/iterators/11_repeat.coma b/tests/should_succeed/iterators/11_repeat.coma index ce69955d56..c36e7a8ed1 100644 --- a/tests/should_succeed/iterators/11_repeat.coma +++ b/tests/should_succeed/iterators/11_repeat.coma @@ -31,7 +31,7 @@ module M_11_repeat__qyi12123383775959562970__produces_refl [#"11_repeat.rs" 30 4 let%span s11_repeat = "11_repeat.rs" 29 4 29 49 let%span s11_repeat'0 = "11_repeat.rs" 30 27 30 29 let%span s11_repeat'1 = "11_repeat.rs" 23 12 24 115 - let%span s11_repeat'2 = "11_repeat.rs" 1 0 237 4 + let%span s11_repeat'2 = "11_repeat.rs" 1 0 236 4 let%span sops = "../../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../../creusot-contracts/src/std/ops.rs" 169 14 169 61 @@ -133,7 +133,7 @@ module M_11_repeat__qyi12123383775959562970__produces_trans [#"11_repeat.rs" 36 let%span s11_repeat'1 = "11_repeat.rs" 35 4 35 44 let%span s11_repeat'2 = "11_repeat.rs" 36 91 36 93 let%span s11_repeat'3 = "11_repeat.rs" 23 12 24 115 - let%span s11_repeat'4 = "11_repeat.rs" 1 0 237 4 + let%span s11_repeat'4 = "11_repeat.rs" 1 0 236 4 let%span sops = "../../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../../creusot-contracts/src/std/ops.rs" 169 14 169 61 @@ -245,7 +245,7 @@ module M_11_repeat__qyi12123383775959562970__next [#"11_repeat.rs" 42 4 42 35] ( let%span s11_repeat'1 = "11_repeat.rs" 38 14 41 5 let%span s11_repeat'2 = "11_repeat.rs" 17 20 17 25 let%span s11_repeat'3 = "11_repeat.rs" 23 12 24 115 - let%span s11_repeat'4 = "11_repeat.rs" 1 0 237 4 + let%span s11_repeat'4 = "11_repeat.rs" 1 0 236 4 let%span sops = "../../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../../creusot-contracts/src/std/ops.rs" 169 14 169 61 @@ -446,7 +446,7 @@ end module M_11_repeat__qyi12123383775959562970__produces_refl__refines [#"11_repeat.rs" 30 4 30 26] (* as common::Iterator> *) let%span s11_repeat = "11_repeat.rs" 30 4 30 26 let%span s11_repeat'0 = "11_repeat.rs" 23 12 24 115 - let%span s11_repeat'1 = "11_repeat.rs" 1 0 237 4 + let%span s11_repeat'1 = "11_repeat.rs" 1 0 236 4 let%span sops = "../../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../../creusot-contracts/src/std/ops.rs" 169 14 169 61 @@ -543,7 +543,7 @@ module M_11_repeat__qyi12123383775959562970__next__refines [#"11_repeat.rs" 42 4 let%span s11_repeat = "11_repeat.rs" 42 4 42 35 let%span s11_repeat'0 = "11_repeat.rs" 17 20 17 25 let%span s11_repeat'1 = "11_repeat.rs" 23 12 24 115 - let%span s11_repeat'2 = "11_repeat.rs" 1 0 237 4 + let%span s11_repeat'2 = "11_repeat.rs" 1 0 236 4 let%span sops = "../../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../../creusot-contracts/src/std/ops.rs" 169 14 169 61 @@ -679,7 +679,7 @@ end module M_11_repeat__qyi12123383775959562970__produces_trans__refines [#"11_repeat.rs" 36 4 36 90] (* as common::Iterator> *) let%span s11_repeat = "11_repeat.rs" 36 4 36 90 let%span s11_repeat'0 = "11_repeat.rs" 23 12 24 115 - let%span s11_repeat'1 = "11_repeat.rs" 1 0 237 4 + let%span s11_repeat'1 = "11_repeat.rs" 1 0 236 4 let%span sops = "../../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../../creusot-contracts/src/std/ops.rs" 169 14 169 61 diff --git a/tests/should_succeed/iterators/13_cloned.coma b/tests/should_succeed/iterators/13_cloned.coma index 2d89cf0196..c142cf4fdb 100644 --- a/tests/should_succeed/iterators/13_cloned.coma +++ b/tests/should_succeed/iterators/13_cloned.coma @@ -31,7 +31,7 @@ module M_13_cloned__qyi8249401513993331368__produces_refl [#"13_cloned.rs" 36 4 let%span s13_cloned = "13_cloned.rs" 35 4 35 49 let%span s13_cloned'0 = "13_cloned.rs" 36 27 36 29 let%span s13_cloned'1 = "13_cloned.rs" 27 12 30 98 - let%span s13_cloned'2 = "13_cloned.rs" 1 0 237 4 + let%span s13_cloned'2 = "13_cloned.rs" 1 0 236 4 let%span scommon = "common.rs" 14 4 14 49 let%span scommon'0 = "common.rs" 18 4 18 34 let%span scommon'1 = "common.rs" 19 4 19 34 @@ -152,7 +152,7 @@ module M_13_cloned__qyi8249401513993331368__produces_trans [#"13_cloned.rs" 42 4 let%span s13_cloned'1 = "13_cloned.rs" 41 4 41 44 let%span s13_cloned'2 = "13_cloned.rs" 42 91 42 93 let%span s13_cloned'3 = "13_cloned.rs" 27 12 30 98 - let%span s13_cloned'4 = "13_cloned.rs" 1 0 237 4 + let%span s13_cloned'4 = "13_cloned.rs" 1 0 236 4 let%span scommon = "common.rs" 14 4 14 49 let%span scommon'0 = "common.rs" 18 4 18 34 let%span scommon'1 = "common.rs" 19 4 19 34 @@ -284,7 +284,7 @@ module M_13_cloned__qyi8249401513993331368__next [#"13_cloned.rs" 48 4 48 35] (* let%span s13_cloned'2 = "13_cloned.rs" 21 8 21 43 let%span s13_cloned'3 = "13_cloned.rs" 27 12 30 98 let%span s13_cloned'4 = "13_cloned.rs" 1 0 27 4 - let%span s13_cloned'5 = "13_cloned.rs" 1 0 237 4 + let%span s13_cloned'5 = "13_cloned.rs" 1 0 236 4 let%span scommon = "common.rs" 14 4 14 49 let%span scommon'0 = "common.rs" 18 4 18 34 let%span scommon'1 = "common.rs" 19 4 19 34 @@ -573,7 +573,7 @@ end module M_13_cloned__qyi8249401513993331368__produces_trans__refines [#"13_cloned.rs" 42 4 42 90] (* as common::Iterator> *) let%span s13_cloned = "13_cloned.rs" 42 4 42 90 let%span s13_cloned'0 = "13_cloned.rs" 27 12 30 98 - let%span s13_cloned'1 = "13_cloned.rs" 1 0 237 4 + let%span s13_cloned'1 = "13_cloned.rs" 1 0 236 4 let%span scommon = "common.rs" 14 4 14 49 let%span scommon'0 = "common.rs" 18 4 18 34 let%span scommon'1 = "common.rs" 19 4 19 34 @@ -692,7 +692,7 @@ end module M_13_cloned__qyi8249401513993331368__produces_refl__refines [#"13_cloned.rs" 36 4 36 26] (* as common::Iterator> *) let%span s13_cloned = "13_cloned.rs" 36 4 36 26 let%span s13_cloned'0 = "13_cloned.rs" 27 12 30 98 - let%span s13_cloned'1 = "13_cloned.rs" 1 0 237 4 + let%span s13_cloned'1 = "13_cloned.rs" 1 0 236 4 let%span scommon = "common.rs" 14 4 14 49 let%span scommon'0 = "common.rs" 18 4 18 34 let%span scommon'1 = "common.rs" 19 4 19 34 @@ -808,7 +808,7 @@ module M_13_cloned__qyi8249401513993331368__next__refines [#"13_cloned.rs" 48 4 let%span s13_cloned = "13_cloned.rs" 48 4 48 35 let%span s13_cloned'0 = "13_cloned.rs" 21 8 21 43 let%span s13_cloned'1 = "13_cloned.rs" 27 12 30 98 - let%span s13_cloned'2 = "13_cloned.rs" 1 0 237 4 + let%span s13_cloned'2 = "13_cloned.rs" 1 0 236 4 let%span scommon = "common.rs" 14 4 14 49 let%span scommon'0 = "common.rs" 18 4 18 34 let%span scommon'1 = "common.rs" 19 4 19 34 diff --git a/tests/should_succeed/lang/branch_borrow_2.coma b/tests/should_succeed/lang/branch_borrow_2.coma index 76aaeb4bf3..d1d7263ba1 100644 --- a/tests/should_succeed/lang/branch_borrow_2.coma +++ b/tests/should_succeed/lang/branch_borrow_2.coma @@ -8,7 +8,7 @@ module M_branch_borrow_2__f [#"branch_borrow_2.rs" 3 0 3 10] let%span sbranch_borrow_2'5 = "branch_borrow_2.rs" 15 17 15 18 let%span sbranch_borrow_2'6 = "branch_borrow_2.rs" 28 9 28 10 let%span sbranch_borrow_2'7 = "branch_borrow_2.rs" 30 17 30 18 - let%span sbranch_borrow_2'8 = "branch_borrow_2.rs" 30 12 30 18 + let%span sbranch_borrow_2'8 = "branch_borrow_2.rs" 30 4 30 19 let%span sresolve = "../../../creusot-contracts/src/resolve.rs" 44 20 44 34 use creusot.int.Int32 @@ -66,9 +66,9 @@ module M_branch_borrow_2__f [#"branch_borrow_2.rs" 3 0 3 10] | s2 = -{resolve'0 z}- s3 | s3 = -{resolve'0 y}- s4 | s4 = [ &_14 <- c = ([%#sbranch_borrow_2'7] (5: Int32.t)) ] s5 - | s5 = any [ br0 -> {_14 = false} (! bb7) | br1 -> {_14} (! bb9) ] ] - | bb9 = return''0 {_0} - | bb7 = {[%#sbranch_borrow_2'8] false} any ] + | s5 = any [ br0 -> {_14 = false} (! bb8) | br1 -> {_14} (! bb7) ] ] + | bb7 = return''0 {_0} + | bb8 = {[%#sbranch_borrow_2'8] false} any ] [ & _0: () = Any.any_l () | & a: Int32.t = Any.any_l () | & b: Int32.t = Any.any_l () diff --git a/tests/should_succeed/lang/unary_op.coma b/tests/should_succeed/lang/unary_op.coma index 764f1a5800..a1700c06a4 100644 --- a/tests/should_succeed/lang/unary_op.coma +++ b/tests/should_succeed/lang/unary_op.coma @@ -1,6 +1,6 @@ module M_unary_op__f [#"unary_op.rs" 4 0 4 10] let%span sunary_op = "unary_op.rs" 5 13 5 18 - let%span sunary_op'0 = "unary_op.rs" 5 12 5 18 + let%span sunary_op'0 = "unary_op.rs" 5 4 5 19 use creusot.prelude.Any @@ -9,9 +9,7 @@ module M_unary_op__f [#"unary_op.rs" 4 0 4 10] meta "select_lsinst" "all" let rec f [#"unary_op.rs" 4 0 4 10] (return' (x: ())) = (! bb0 - [ bb0 = s0 - [ s0 = [ &_2 <- not ([%#sunary_op] false) ] s1 | s1 = any [ br0 -> {_2 = false} (! bb1) | br1 -> {_2} (! bb3) ] ] - | bb3 = return''0 {_0} - | bb1 = {[%#sunary_op'0] false} any ] [ & _0: () = Any.any_l () | & _2: bool = Any.any_l () ]) - [ return''0 (result: ()) -> (! return' {result}) ] + [ bb0 = any [ br0 -> {([%#sunary_op] false) = false} (! bb2) | br1 -> {[%#sunary_op] false} (! bb1) ] + | bb1 = {[%#sunary_op'0] false} any + | bb2 = return''0 {_0} ] [ & _0: () = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end diff --git a/tests/should_succeed/match_int.coma b/tests/should_succeed/match_int.coma index 6beb64c625..c78767d047 100644 --- a/tests/should_succeed/match_int.coma +++ b/tests/should_succeed/match_int.coma @@ -2,11 +2,11 @@ module M_match_int__f [#"match_int.rs" 6 0 6 10] let%span smatch_int = "match_int.rs" 7 10 7 11 let%span smatch_int'0 = "match_int.rs" 8 8 8 13 let%span smatch_int'1 = "match_int.rs" 9 20 9 24 - let%span smatch_int'2 = "match_int.rs" 9 20 9 24 + let%span smatch_int'2 = "match_int.rs" 9 12 9 25 let%span smatch_int'3 = "match_int.rs" 15 20 15 25 - let%span smatch_int'4 = "match_int.rs" 15 20 15 25 + let%span smatch_int'4 = "match_int.rs" 15 12 15 26 let%span smatch_int'5 = "match_int.rs" 12 20 12 25 - let%span smatch_int'6 = "match_int.rs" 12 20 12 25 + let%span smatch_int'6 = "match_int.rs" 12 12 12 26 use creusot.int.Int32 use creusot.prelude.Any @@ -23,14 +23,14 @@ module M_match_int__f [#"match_int.rs" 6 0 6 10] | bb3 = s0 [ s0 = [ &_3 <- Int32.lt _1 ([%#smatch_int'0] (10: Int32.t)) ] s1 | s1 = any [ br0 -> {_3 = false} (! bb1) | br1 -> {_3} (! bb7) ] ] - | bb7 = any [ br0 -> {false} (! bb8) | br1 -> {true} (! bb17) ] + | bb7 = any [ br0 -> {false} (! bb8) | br1 -> {true} (! bb14) ] | bb8 = {[%#smatch_int'2] false} any | bb1 = any [ br0 -> {_1 = (5: Int32.t)} (! bb6) | br1 -> {_1 = (6: Int32.t)} (! bb6) | default -> (! bb4) ] - | bb4 = any [ br0 -> {([%#smatch_int'3] false) = false} (! bb14) | br1 -> {[%#smatch_int'3] false} (! bb17) ] - | bb14 = {[%#smatch_int'4] false} any - | bb6 = any [ br0 -> {([%#smatch_int'5] false) = false} (! bb11) | br1 -> {[%#smatch_int'5] false} (! bb17) ] - | bb17 = return''0 {_0} - | bb11 = {[%#smatch_int'6] false} any ] + | bb4 = any [ br0 -> {([%#smatch_int'3] false) = false} (! bb12) | br1 -> {[%#smatch_int'3] false} (! bb14) ] + | bb12 = {[%#smatch_int'4] false} any + | bb6 = any [ br0 -> {([%#smatch_int'5] false) = false} (! bb10) | br1 -> {[%#smatch_int'5] false} (! bb14) ] + | bb14 = return''0 {_0} + | bb10 = {[%#smatch_int'6] false} any ] [ & _0: () = Any.any_l () | & _1: Int32.t = Any.any_l () | & _2: bool = Any.any_l () | & _3: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end diff --git a/tests/should_succeed/option.coma b/tests/should_succeed/option.coma index 4fe8388f19..127365d8c4 100644 --- a/tests/should_succeed/option.coma +++ b/tests/should_succeed/option.coma @@ -1,11 +1,9 @@ module M_option__is_some_none [#"option.rs" 4 0 4 21] let%span soption = "option.rs" 6 33 6 34 - let%span soption'0 = "option.rs" 8 12 8 45 - let%span soption'1 = "option.rs" 9 12 9 45 - let%span soption'2 = "option.rs" 9 12 9 45 - let%span soption'3 = "option.rs" 8 12 8 45 - let%span soption'4 = "../../creusot-contracts/src/std/option.rs" 53 26 53 51 - let%span soption'5 = "../../creusot-contracts/src/std/option.rs" 79 26 79 51 + let%span soption'0 = "option.rs" 9 4 9 46 + let%span soption'1 = "option.rs" 8 4 8 46 + let%span soption'2 = "../../creusot-contracts/src/std/option.rs" 53 26 53 51 + let%span soption'3 = "../../creusot-contracts/src/std/option.rs" 79 26 79 51 use creusot.int.Int32 use creusot.prelude.Any @@ -13,10 +11,10 @@ module M_option__is_some_none [#"option.rs" 4 0 4 21] type t_Option = C_None | C_Some Int32.t let rec is_some (self_: t_Option) (return' (x: bool)) = any - [ return''0 (result: bool) -> {[%#soption'4] result = (self_ <> C_None)} (! return' {result}) ] + [ return''0 (result: bool) -> {[%#soption'2] result = (self_ <> C_None)} (! return' {result}) ] let rec is_none (self_: t_Option) (return' (x: bool)) = any - [ return''0 (result: bool) -> {[%#soption'5] result = (self_ = C_None)} (! return' {result}) ] + [ return''0 (result: bool) -> {[%#soption'3] result = (self_ = C_None)} (! return' {result}) ] meta "compute_max_steps" 1000000 @@ -26,28 +24,24 @@ module M_option__is_some_none [#"option.rs" 4 0 4 21] [ bb0 = s0 [ s0 = [ &none <- C_None ] s1 | s1 = [ &some <- C_Some ([%#soption] (1: Int32.t)) ] s2 - | s2 = is_some {some} (fun (_ret: bool) -> [ &_5 <- _ret ] s3) + | s2 = is_some {some} (fun (_ret: bool) -> [ &_4 <- _ret ] s3) | s3 = bb1 ] - | bb1 = any [ br0 -> {_5 = false} (! bb3) | br1 -> {_5} (! bb2) ] - | bb2 = s0 [ s0 = is_some {none} (fun (_ret: bool) -> [ &_7 <- _ret ] s1) | s1 = bb4 ] - | bb4 = s0 [ s0 = [ &_4 <- not _7 ] s1 | s1 = bb5 ] - | bb3 = s0 [ s0 = [ &_4 <- [%#soption'0] false ] s1 | s1 = bb5 ] - | bb5 = any [ br0 -> {_4 = false} (! bb6) | br1 -> {_4} (! bb8) ] - | bb8 = s0 [ s0 = is_none {some} (fun (_ret: bool) -> [ &_12 <- _ret ] s1) | s1 = bb9 ] - | bb9 = any [ br0 -> {_12 = false} (! bb11) | br1 -> {_12} (! bb10) ] - | bb10 = s0 [ s0 = [ &_11 <- [%#soption'1] false ] s1 | s1 = bb13 ] - | bb11 = s0 [ s0 = is_none {none} (fun (_ret: bool) -> [ &_11 <- _ret ] s1) | s1 = bb13 ] - | bb13 = any [ br0 -> {_11 = false} (! bb14) | br1 -> {_11} (! bb16) ] - | bb16 = return''0 {_0} - | bb14 = {[%#soption'2] false} any - | bb6 = {[%#soption'3] false} any ] + | bb1 = any [ br0 -> {_4 = false} (! bb7) | br1 -> {_4} (! bb2) ] + | bb2 = s0 [ s0 = is_some {none} (fun (_ret: bool) -> [ &_6 <- _ret ] s1) | s1 = bb3 ] + | bb3 = any [ br0 -> {_6 = false} (! bb5) | br1 -> {_6} (! bb7) ] + | bb5 = s0 [ s0 = is_none {some} (fun (_ret: bool) -> [ &_10 <- _ret ] s1) | s1 = bb8 ] + | bb8 = any [ br0 -> {_10 = false} (! bb10) | br1 -> {_10} (! bb14) ] + | bb10 = s0 [ s0 = is_none {none} (fun (_ret: bool) -> [ &_12 <- _ret ] s1) | s1 = bb11 ] + | bb11 = any [ br0 -> {_12 = false} (! bb14) | br1 -> {_12} (! bb12) ] + | bb12 = return''0 {_0} + | bb14 = {[%#soption'0] false} any + | bb7 = {[%#soption'1] false} any ] [ & _0: () = Any.any_l () | & none: t_Option = Any.any_l () | & some: t_Option = Any.any_l () | & _4: bool = Any.any_l () - | & _5: bool = Any.any_l () - | & _7: bool = Any.any_l () - | & _11: bool = Any.any_l () + | & _6: bool = Any.any_l () + | & _10: bool = Any.any_l () | & _12: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end module M_option__unwrap [#"option.rs" 12 0 12 15] @@ -64,15 +58,15 @@ module M_option__unwrap [#"option.rs" 12 0 12 15] let%span soption'9 = "option.rs" 25 48 25 49 let%span soption'10 = "option.rs" 26 41 26 42 let%span soption'11 = "option.rs" 28 50 28 51 - let%span soption'12 = "option.rs" 28 12 28 51 - let%span soption'13 = "option.rs" 26 12 26 42 - let%span soption'14 = "option.rs" 25 12 25 49 - let%span soption'15 = "option.rs" 23 12 23 41 - let%span soption'16 = "option.rs" 22 12 22 41 - let%span soption'17 = "option.rs" 20 12 20 34 - let%span soption'18 = "option.rs" 19 12 19 34 - let%span soption'19 = "option.rs" 17 12 17 38 - let%span soption'20 = "option.rs" 16 12 16 30 + let%span soption'12 = "option.rs" 28 4 28 52 + let%span soption'13 = "option.rs" 26 4 26 43 + let%span soption'14 = "option.rs" 25 4 25 50 + let%span soption'15 = "option.rs" 23 4 23 42 + let%span soption'16 = "option.rs" 22 4 22 42 + let%span soption'17 = "option.rs" 20 4 20 35 + let%span soption'18 = "option.rs" 19 4 19 35 + let%span soption'19 = "option.rs" 17 4 17 39 + let%span soption'20 = "option.rs" 16 4 16 31 let%span soption'21 = "../../creusot-contracts/src/std/option.rs" 149 27 149 39 let%span soption'22 = "../../creusot-contracts/src/std/option.rs" 150 26 150 46 let%span soption'23 = "../../creusot-contracts/src/std/option.rs" 139 27 139 39 @@ -253,60 +247,60 @@ module M_option__unwrap [#"option.rs" 12 0 12 15] | s3 = bb1 ] | bb1 = s0 [ s0 = [ &_4 <- _5 = ([%#soption'0] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_4 = false} (! bb2) | br1 -> {_4} (! bb4) ] ] - | bb4 = s0 + | s1 = any [ br0 -> {_4 = false} (! bb3) | br1 -> {_4} (! bb2) ] ] + | bb2 = s0 [ s0 = [ &_13 <- [%#soption'1] "failed" ] s1 | s1 = expect {some} {_13} (fun (_ret: Int32.t) -> [ &_10 <- _ret ] s2) - | s2 = bb5 ] - | bb5 = s0 + | s2 = bb4 ] + | bb4 = s0 [ s0 = [ &_9 <- _10 = ([%#soption'2] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_9 = false} (! bb6) | br1 -> {_9} (! bb8) ] ] - | bb8 = s0 - [ s0 = unwrap_or {some} {[%#soption'3] (2: Int32.t)} (fun (_ret: Int32.t) -> [ &_17 <- _ret ] s1) | s1 = bb9 ] - | bb9 = s0 + | s1 = any [ br0 -> {_9 = false} (! bb6) | br1 -> {_9} (! bb5) ] ] + | bb5 = s0 + [ s0 = unwrap_or {some} {[%#soption'3] (2: Int32.t)} (fun (_ret: Int32.t) -> [ &_17 <- _ret ] s1) | s1 = bb7 ] + | bb7 = s0 [ s0 = [ &_16 <- _17 = ([%#soption'4] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_16 = false} (! bb10) | br1 -> {_16} (! bb12) ] ] - | bb12 = s0 - [ s0 = unwrap_or {none} {[%#soption'5] (2: Int32.t)} (fun (_ret: Int32.t) -> [ &_22 <- _ret ] s1) | s1 = bb13 ] - | bb13 = s0 + | s1 = any [ br0 -> {_16 = false} (! bb9) | br1 -> {_16} (! bb8) ] ] + | bb8 = s0 + [ s0 = unwrap_or {none} {[%#soption'5] (2: Int32.t)} (fun (_ret: Int32.t) -> [ &_22 <- _ret ] s1) | s1 = bb10 ] + | bb10 = s0 [ s0 = [ &_21 <- _22 = ([%#soption'6] (2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_21 = false} (! bb14) | br1 -> {_21} (! bb16) ] ] - | bb16 = s0 [ s0 = unwrap_or_default {some} (fun (_ret: Int32.t) -> [ &_27 <- _ret ] s1) | s1 = bb17 ] - | bb17 = s0 + | s1 = any [ br0 -> {_21 = false} (! bb12) | br1 -> {_21} (! bb11) ] ] + | bb11 = s0 [ s0 = unwrap_or_default {some} (fun (_ret: Int32.t) -> [ &_27 <- _ret ] s1) | s1 = bb13 ] + | bb13 = s0 [ s0 = [ &_26 <- _27 = ([%#soption'7] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_26 = false} (! bb18) | br1 -> {_26} (! bb20) ] ] - | bb20 = s0 [ s0 = unwrap_or_default {none} (fun (_ret: Int32.t) -> [ &_32 <- _ret ] s1) | s1 = bb21 ] - | bb21 = s0 + | s1 = any [ br0 -> {_26 = false} (! bb15) | br1 -> {_26} (! bb14) ] ] + | bb14 = s0 [ s0 = unwrap_or_default {none} (fun (_ret: Int32.t) -> [ &_32 <- _ret ] s1) | s1 = bb16 ] + | bb16 = s0 [ s0 = [ &_31 <- _32 = ([%#soption'8] (0: Int32.t)) ] s1 - | s1 = any [ br0 -> {_31 = false} (! bb22) | br1 -> {_31} (! bb24) ] ] - | bb24 = s0 + | s1 = any [ br0 -> {_31 = false} (! bb18) | br1 -> {_31} (! bb17) ] ] + | bb17 = s0 [ s0 = [ &_39 <- () ] s1 | s1 = unwrap_or_else {some} {_39} (fun (_ret: Int32.t) -> [ &_37 <- _ret ] s2) - | s2 = bb25 ] - | bb25 = s0 + | s2 = bb19 ] + | bb19 = s0 [ s0 = [ &_36 <- _37 = ([%#soption'9] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_36 = false} (! bb26) | br1 -> {_36} (! bb28) ] ] - | bb28 = s0 + | s1 = any [ br0 -> {_36 = false} (! bb21) | br1 -> {_36} (! bb20) ] ] + | bb20 = s0 [ s0 = [ &_45 <- () ] s1 | s1 = unwrap_or_else'0 {none} {_45} (fun (_ret: Int32.t) -> [ &_43 <- _ret ] s2) - | s2 = bb29 ] - | bb29 = s0 + | s2 = bb22 ] + | bb22 = s0 [ s0 = [ &_42 <- _43 = ([%#soption'10] (3: Int32.t)) ] s1 - | s1 = any [ br0 -> {_42 = false} (! bb30) | br1 -> {_42} (! bb32) ] ] - | bb32 = s0 [ s0 = unwrap_unchecked {some} (fun (_ret: Int32.t) -> [ &_49 <- _ret ] s1) | s1 = bb33 ] - | bb33 = s0 + | s1 = any [ br0 -> {_42 = false} (! bb24) | br1 -> {_42} (! bb23) ] ] + | bb23 = s0 [ s0 = unwrap_unchecked {some} (fun (_ret: Int32.t) -> [ &_49 <- _ret ] s1) | s1 = bb25 ] + | bb25 = s0 [ s0 = [ &_48 <- _49 = ([%#soption'11] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_48 = false} (! bb34) | br1 -> {_48} (! bb36) ] ] - | bb36 = return''0 {_0} - | bb34 = {[%#soption'12] false} any - | bb30 = {[%#soption'13] false} any - | bb26 = {[%#soption'14] false} any - | bb22 = {[%#soption'15] false} any - | bb18 = {[%#soption'16] false} any - | bb14 = {[%#soption'17] false} any - | bb10 = {[%#soption'18] false} any + | s1 = any [ br0 -> {_48 = false} (! bb27) | br1 -> {_48} (! bb26) ] ] + | bb26 = return''0 {_0} + | bb27 = {[%#soption'12] false} any + | bb24 = {[%#soption'13] false} any + | bb21 = {[%#soption'14] false} any + | bb18 = {[%#soption'15] false} any + | bb15 = {[%#soption'16] false} any + | bb12 = {[%#soption'17] false} any + | bb9 = {[%#soption'18] false} any | bb6 = {[%#soption'19] false} any - | bb2 = {[%#soption'20] false} any ] + | bb3 = {[%#soption'20] false} any ] [ & _0: () = Any.any_l () | & none: t_Option = Any.any_l () | & some: t_Option = Any.any_l () @@ -336,9 +330,9 @@ module M_option__map [#"option.rs" 31 0 31 12] let%span soption = "option.rs" 33 33 33 34 let%span soption'0 = "option.rs" 36 36 36 37 let%span soption'1 = "option.rs" 37 40 37 41 - let%span soption'2 = "option.rs" 37 12 37 42 - let%span soption'3 = "option.rs" 36 12 36 38 - let%span soption'4 = "option.rs" 35 12 35 42 + let%span soption'2 = "option.rs" 37 4 37 43 + let%span soption'3 = "option.rs" 36 4 36 39 + let%span soption'4 = "option.rs" 35 4 35 43 let%span soption'5 = "../../creusot-contracts/src/std/option.rs" 207 27 210 17 let%span soption'6 = "../../creusot-contracts/src/std/option.rs" 211 26 214 17 let%span soption'7 = "../../creusot-contracts/src/std/option.rs" 24 18 24 67 @@ -504,10 +498,10 @@ module M_option__map [#"option.rs" 31 0 31 12] [ _const_ret (_const: t_Option'0) -> [ &_32 <- _const ] s1 ] | s1 = eq {_6} {_32} (fun (_ret: bool) -> [ &_4 <- _ret ] s2) | s2 = bb2 ] - | bb2 = any [ br0 -> {_4 = false} (! bb3) | br1 -> {_4} (! bb5) ] + | bb2 = any [ br0 -> {_4 = false} (! bb4) | br1 -> {_4} (! bb3) ] + | bb3 = s0 + [ s0 = [ &_17 <- () ] s1 | s1 = map'0 {some} {_17} (fun (_ret: t_Option) -> [ &_15 <- _ret ] s2) | s2 = bb5 ] | bb5 = s0 - [ s0 = [ &_17 <- () ] s1 | s1 = map'0 {some} {_17} (fun (_ret: t_Option) -> [ &_15 <- _ret ] s2) | s2 = bb6 ] - | bb6 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_Some ([%#soption'0] (3: Int32.t)) ] s1'0 @@ -515,11 +509,11 @@ module M_option__map [#"option.rs" 31 0 31 12] | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_31 <- _const ] s1 ] | s1 = eq'0 {_15} {_31} (fun (_ret: bool) -> [ &_13 <- _ret ] s2) - | s2 = bb7 ] - | bb7 = any [ br0 -> {_13 = false} (! bb8) | br1 -> {_13} (! bb10) ] - | bb10 = s0 - [ s0 = [ &_26 <- () ] s1 | s1 = map'1 {some} {_26} (fun (_ret: t_Option) -> [ &_24 <- _ret ] s2) | s2 = bb11 ] - | bb11 = s0 + | s2 = bb6 ] + | bb6 = any [ br0 -> {_13 = false} (! bb8) | br1 -> {_13} (! bb7) ] + | bb7 = s0 + [ s0 = [ &_26 <- () ] s1 | s1 = map'1 {some} {_26} (fun (_ret: t_Option) -> [ &_24 <- _ret ] s2) | s2 = bb9 ] + | bb9 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_Some ([%#soption'1] (2: Int32.t)) ] s1'0 @@ -527,12 +521,12 @@ module M_option__map [#"option.rs" 31 0 31 12] | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_30 <- _const ] s1 ] | s1 = eq'0 {_24} {_30} (fun (_ret: bool) -> [ &_22 <- _ret ] s2) - | s2 = bb12 ] - | bb12 = any [ br0 -> {_22 = false} (! bb13) | br1 -> {_22} (! bb15) ] - | bb15 = return''0 {_0} - | bb13 = {[%#soption'2] false} any + | s2 = bb10 ] + | bb10 = any [ br0 -> {_22 = false} (! bb12) | br1 -> {_22} (! bb11) ] + | bb11 = return''0 {_0} + | bb12 = {[%#soption'2] false} any | bb8 = {[%#soption'3] false} any - | bb3 = {[%#soption'4] false} any ] + | bb4 = {[%#soption'4] false} any ] [ & _0: () = Any.any_l () | & none: t_Option = Any.any_l () | & some: t_Option = Any.any_l () @@ -552,8 +546,8 @@ end module M_option__inspect [#"option.rs" 40 0 40 16] let%span soption = "option.rs" 42 33 42 34 let%span soption'0 = "option.rs" 45 41 45 42 - let%span soption'1 = "option.rs" 45 12 45 43 - let%span soption'2 = "option.rs" 44 12 44 46 + let%span soption'1 = "option.rs" 45 4 45 44 + let%span soption'2 = "option.rs" 44 4 44 47 let%span soption'3 = "../../creusot-contracts/src/std/option.rs" 224 27 227 17 let%span soption'4 = "../../creusot-contracts/src/std/option.rs" 228 26 228 40 let%span soption'5 = "../../creusot-contracts/src/std/option.rs" 229 26 232 17 @@ -668,10 +662,10 @@ module M_option__inspect [#"option.rs" 40 0 40 16] [ _const_ret (_const: t_Option) -> [ &_22 <- _const ] s1 ] | s1 = eq {_6} {_22} (fun (_ret: bool) -> [ &_4 <- _ret ] s2) | s2 = bb2 ] - | bb2 = any [ br0 -> {_4 = false} (! bb3) | br1 -> {_4} (! bb5) ] + | bb2 = any [ br0 -> {_4 = false} (! bb4) | br1 -> {_4} (! bb3) ] + | bb3 = s0 + [ s0 = [ &_17 <- () ] s1 | s1 = inspect'0 {some} {_17} (fun (_ret: t_Option) -> [ &_15 <- _ret ] s2) | s2 = bb5 ] | bb5 = s0 - [ s0 = [ &_17 <- () ] s1 | s1 = inspect'0 {some} {_17} (fun (_ret: t_Option) -> [ &_15 <- _ret ] s2) | s2 = bb6 ] - | bb6 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_Some ([%#soption'0] (1: Int32.t)) ] s1'0 @@ -679,11 +673,11 @@ module M_option__inspect [#"option.rs" 40 0 40 16] | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_21 <- _const ] s1 ] | s1 = eq {_15} {_21} (fun (_ret: bool) -> [ &_13 <- _ret ] s2) - | s2 = bb7 ] - | bb7 = any [ br0 -> {_13 = false} (! bb8) | br1 -> {_13} (! bb10) ] - | bb10 = return''0 {_0} + | s2 = bb6 ] + | bb6 = any [ br0 -> {_13 = false} (! bb8) | br1 -> {_13} (! bb7) ] + | bb7 = return''0 {_0} | bb8 = {[%#soption'1] false} any - | bb3 = {[%#soption'2] false} any ] + | bb4 = {[%#soption'2] false} any ] [ & _0: () = Any.any_l () | & none: t_Option = Any.any_l () | & some: t_Option = Any.any_l () @@ -706,11 +700,11 @@ module M_option__map_or [#"option.rs" 48 0 48 15] let%span soption'5 = "option.rs" 55 42 55 43 let%span soption'6 = "option.rs" 58 52 58 53 let%span soption'7 = "option.rs" 59 56 59 57 - let%span soption'8 = "option.rs" 59 12 59 57 - let%span soption'9 = "option.rs" 58 12 58 53 - let%span soption'10 = "option.rs" 55 12 55 43 - let%span soption'11 = "option.rs" 54 12 54 39 - let%span soption'12 = "option.rs" 53 12 53 45 + let%span soption'8 = "option.rs" 59 4 59 58 + let%span soption'9 = "option.rs" 58 4 58 54 + let%span soption'10 = "option.rs" 55 4 55 44 + let%span soption'11 = "option.rs" 54 4 54 40 + let%span soption'12 = "option.rs" 53 4 53 46 let%span soption'13 = "../../creusot-contracts/src/std/option.rs" 242 27 245 17 let%span soption'14 = "../../creusot-contracts/src/std/option.rs" 246 26 249 17 let%span soption'15 = "option.rs" 54 32 54 33 @@ -927,43 +921,43 @@ module M_option__map_or [#"option.rs" 48 0 48 15] | s4 = bb1 ] | bb1 = s0 [ s0 = [ &_4 <- _5 = ([%#soption'1] (2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_4 = false} (! bb2) | br1 -> {_4} (! bb4) ] ] - | bb4 = s0 + | s1 = any [ br0 -> {_4 = false} (! bb3) | br1 -> {_4} (! bb2) ] ] + | bb2 = s0 [ s0 = [ &_13 <- () ] s1 | s1 = map_or'0 {some} {[%#soption'2] (-1: Int32.t)} {_13} (fun (_ret: Int32.t) -> [ &_11 <- _ret ] s2) - | s2 = bb5 ] - | bb5 = s0 + | s2 = bb4 ] + | bb4 = s0 [ s0 = [ &_10 <- _11 = ([%#soption'3] (3: Int32.t)) ] s1 - | s1 = any [ br0 -> {_10 = false} (! bb6) | br1 -> {_10} (! bb8) ] ] - | bb8 = s0 + | s1 = any [ br0 -> {_10 = false} (! bb6) | br1 -> {_10} (! bb5) ] ] + | bb5 = s0 [ s0 = [ &_19 <- () ] s1 | s1 = map_or'1 {some} {[%#soption'4] (-1: Int32.t)} {_19} (fun (_ret: Int32.t) -> [ &_17 <- _ret ] s2) - | s2 = bb9 ] - | bb9 = s0 + | s2 = bb7 ] + | bb7 = s0 [ s0 = [ &_16 <- _17 = ([%#soption'5] (2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_16 = false} (! bb10) | br1 -> {_16} (! bb12) ] ] - | bb12 = s0 + | s1 = any [ br0 -> {_16 = false} (! bb9) | br1 -> {_16} (! bb8) ] ] + | bb8 = s0 [ s0 = [ &_25 <- () ] s1 | s1 = [ &_26 <- () ] s2 | s2 = map_or_else {none} {_25} {_26} (fun (_ret: Int32.t) -> [ &_23 <- _ret ] s3) - | s3 = bb13 ] - | bb13 = s0 + | s3 = bb10 ] + | bb10 = s0 [ s0 = [ &_22 <- _23 = ([%#soption'6] (2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_22 = false} (! bb14) | br1 -> {_22} (! bb16) ] ] - | bb16 = s0 + | s1 = any [ br0 -> {_22 = false} (! bb12) | br1 -> {_22} (! bb11) ] ] + | bb11 = s0 [ s0 = [ &_32 <- () ] s1 | s1 = [ &_33 <- () ] s2 | s2 = map_or_else'0 {some} {_32} {_33} (fun (_ret: Int32.t) -> [ &_30 <- _ret ] s3) - | s3 = bb17 ] - | bb17 = s0 + | s3 = bb13 ] + | bb13 = s0 [ s0 = [ &_29 <- _30 = ([%#soption'7] (2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_29 = false} (! bb18) | br1 -> {_29} (! bb20) ] ] - | bb20 = return''0 {_0} - | bb18 = {[%#soption'8] false} any - | bb14 = {[%#soption'9] false} any - | bb10 = {[%#soption'10] false} any + | s1 = any [ br0 -> {_29 = false} (! bb15) | br1 -> {_29} (! bb14) ] ] + | bb14 = return''0 {_0} + | bb15 = {[%#soption'8] false} any + | bb12 = {[%#soption'9] false} any + | bb9 = {[%#soption'10] false} any | bb6 = {[%#soption'11] false} any - | bb2 = {[%#soption'12] false} any ] + | bb3 = {[%#soption'12] false} any ] [ & _0: () = Any.any_l () | & none: t_Option = Any.any_l () | & some: t_Option = Any.any_l () @@ -1110,9 +1104,9 @@ module M_option__as_mut [#"option.rs" 77 0 77 15] let%span soption'1 = "option.rs" 83 29 83 30 let%span soption'2 = "option.rs" 84 30 84 31 let%span soption'3 = "option.rs" 85 29 85 30 - let%span soption'4 = "option.rs" 85 12 85 30 - let%span soption'5 = "option.rs" 83 12 83 30 - let%span soption'6 = "option.rs" 81 12 81 35 + let%span soption'4 = "option.rs" 85 4 85 31 + let%span soption'5 = "option.rs" 83 4 83 31 + let%span soption'6 = "option.rs" 81 4 81 36 let%span soption'7 = "../../creusot-contracts/src/std/option.rs" 99 26 99 75 let%span soption'8 = "../../creusot-contracts/src/std/option.rs" 101 20 102 100 let%span soption'9 = "../../creusot-contracts/src/std/option.rs" 79 26 79 51 @@ -1180,39 +1174,39 @@ module M_option__as_mut [#"option.rs" 77 0 77 15] | s3 = as_mut {_7} (fun (_ret: t_Option'0) -> [ &_6 <- _ret ] s4) | s4 = bb1 ] | bb1 = s0 [ s0 = -{resolve'2 _6}- s1 | s1 = is_none {_6} (fun (_ret: bool) -> [ &_4 <- _ret ] s2) | s2 = bb2 ] - | bb2 = any [ br0 -> {_4 = false} (! bb3) | br1 -> {_4} (! bb5) ] - | bb5 = s0 + | bb2 = any [ br0 -> {_4 = false} (! bb4) | br1 -> {_4} (! bb3) ] + | bb3 = s0 [ s0 = MutBorrow.borrow_mut {some} (fun (_ret: MutBorrow.t t_Option) -> [ &_11 <- _ret ] [ &some <- _ret.final ] s1) | s1 = as_mut {_11} (fun (_ret: t_Option'0) -> [ &_10 <- _ret ] s2) - | s2 = bb6 ] - | bb6 = s0 [ s0 = unwrap {_10} (fun (_ret: MutBorrow.t Int32.t) -> [ &_9 <- _ret ] s1) | s1 = bb7 ] - | bb7 = s0 + | s2 = bb5 ] + | bb5 = s0 [ s0 = unwrap {_10} (fun (_ret: MutBorrow.t Int32.t) -> [ &_9 <- _ret ] s1) | s1 = bb6 ] + | bb6 = s0 [ s0 = [ &_9 <- { _9 with current = ([%#soption'0] (2: Int32.t)) } ] s1 | s1 = -{resolve'0 _9}- s2 | s2 = unwrap'0 {some} (fun (_ret: Int32.t) -> [ &_14 <- _ret ] s3) - | s3 = bb8 ] - | bb8 = s0 + | s3 = bb7 ] + | bb7 = s0 [ s0 = [ &_13 <- _14 = ([%#soption'1] (2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_13 = false} (! bb9) | br1 -> {_13} (! bb11) ] ] - | bb11 = s0 + | s1 = any [ br0 -> {_13 = false} (! bb9) | br1 -> {_13} (! bb8) ] ] + | bb8 = s0 [ s0 = MutBorrow.borrow_mut {some} (fun (_ret: MutBorrow.t t_Option) -> [ &_19 <- _ret ] [ &some <- _ret.final ] s1) | s1 = as_mut {_19} (fun (_ret: t_Option'0) -> [ &_18 <- _ret ] s2) - | s2 = bb12 ] - | bb12 = s0 [ s0 = unwrap {_18} (fun (_ret: MutBorrow.t Int32.t) -> [ &_17 <- _ret ] s1) | s1 = bb13 ] - | bb13 = s0 + | s2 = bb10 ] + | bb10 = s0 [ s0 = unwrap {_18} (fun (_ret: MutBorrow.t Int32.t) -> [ &_17 <- _ret ] s1) | s1 = bb11 ] + | bb11 = s0 [ s0 = [ &_17 <- { _17 with current = ([%#soption'2] (1: Int32.t)) } ] s1 | s1 = -{resolve'0 _17}- s2 | s2 = unwrap'0 {some} (fun (_ret: Int32.t) -> [ &_22 <- _ret ] s3) - | s3 = bb14 ] - | bb14 = s0 + | s3 = bb12 ] + | bb12 = s0 [ s0 = [ &_21 <- _22 = ([%#soption'3] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_21 = false} (! bb15) | br1 -> {_21} (! bb17) ] ] - | bb17 = return''0 {_0} - | bb15 = {[%#soption'4] false} any + | s1 = any [ br0 -> {_21 = false} (! bb14) | br1 -> {_21} (! bb13) ] ] + | bb13 = return''0 {_0} + | bb14 = {[%#soption'4] false} any | bb9 = {[%#soption'5] false} any - | bb3 = {[%#soption'6] false} any ] + | bb4 = {[%#soption'6] false} any ] [ & _0: () = Any.any_l () | & none: t_Option = Any.any_l () | & some: t_Option = Any.any_l () @@ -1233,8 +1227,8 @@ end module M_option__as_ref [#"option.rs" 88 0 88 15] let%span soption = "option.rs" 90 33 90 34 let%span soption'0 = "option.rs" 93 39 93 40 - let%span soption'1 = "option.rs" 93 12 93 40 - let%span soption'2 = "option.rs" 92 12 92 35 + let%span soption'1 = "option.rs" 93 4 93 41 + let%span soption'2 = "option.rs" 92 4 92 36 let%span soption'3 = "../../creusot-contracts/src/std/option.rs" 86 26 86 58 let%span soption'4 = "../../creusot-contracts/src/std/option.rs" 88 20 88 89 let%span soption'5 = "../../creusot-contracts/src/std/option.rs" 79 26 79 51 @@ -1270,15 +1264,15 @@ module M_option__as_ref [#"option.rs" 88 0 88 15] | s2 = as_ref {none} (fun (_ret: t_Option'0) -> [ &_6 <- _ret ] s3) | s3 = bb1 ] | bb1 = s0 [ s0 = is_none {_6} (fun (_ret: bool) -> [ &_4 <- _ret ] s1) | s1 = bb2 ] - | bb2 = any [ br0 -> {_4 = false} (! bb3) | br1 -> {_4} (! bb5) ] - | bb5 = s0 [ s0 = as_ref {some} (fun (_ret: t_Option'0) -> [ &_13 <- _ret ] s1) | s1 = bb6 ] - | bb6 = s0 [ s0 = unwrap {_13} (fun (_ret: Int32.t) -> [ &_12 <- _ret ] s1) | s1 = bb7 ] - | bb7 = s0 + | bb2 = any [ br0 -> {_4 = false} (! bb4) | br1 -> {_4} (! bb3) ] + | bb3 = s0 [ s0 = as_ref {some} (fun (_ret: t_Option'0) -> [ &_13 <- _ret ] s1) | s1 = bb5 ] + | bb5 = s0 [ s0 = unwrap {_13} (fun (_ret: Int32.t) -> [ &_12 <- _ret ] s1) | s1 = bb6 ] + | bb6 = s0 [ s0 = [ &_10 <- _12 = ([%#soption'0] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_10 = false} (! bb8) | br1 -> {_10} (! bb10) ] ] - | bb10 = return''0 {_0} + | s1 = any [ br0 -> {_10 = false} (! bb8) | br1 -> {_10} (! bb7) ] ] + | bb7 = return''0 {_0} | bb8 = {[%#soption'1] false} any - | bb3 = {[%#soption'2] false} any ] + | bb4 = {[%#soption'2] false} any ] [ & _0: () = Any.any_l () | & none: t_Option = Any.any_l () | & some: t_Option = Any.any_l () @@ -1298,12 +1292,12 @@ module M_option__replace [#"option.rs" 96 0 96 16] let%span soption'5 = "option.rs" 104 25 104 26 let%span soption'6 = "option.rs" 104 40 104 41 let%span soption'7 = "option.rs" 105 29 105 30 - let%span soption'8 = "option.rs" 105 12 105 30 - let%span soption'9 = "option.rs" 104 12 104 41 - let%span soption'10 = "option.rs" 103 12 103 30 - let%span soption'11 = "option.rs" 102 12 102 41 - let%span soption'12 = "option.rs" 101 12 101 30 - let%span soption'13 = "option.rs" 100 12 100 37 + let%span soption'8 = "option.rs" 105 4 105 31 + let%span soption'9 = "option.rs" 104 4 104 42 + let%span soption'10 = "option.rs" 103 4 103 31 + let%span soption'11 = "option.rs" 102 4 102 42 + let%span soption'12 = "option.rs" 101 4 101 31 + let%span soption'13 = "option.rs" 100 4 100 38 let%span soption'14 = "../../creusot-contracts/src/std/option.rs" 462 26 462 65 let%span soption'15 = "../../creusot-contracts/src/std/option.rs" 79 26 79 51 let%span soption'16 = "../../creusot-contracts/src/std/option.rs" 149 27 149 39 @@ -1338,44 +1332,44 @@ module M_option__replace [#"option.rs" 96 0 96 16] | s3 = replace {_7} {[%#soption'0] (2: Int32.t)} (fun (_ret: t_Option) -> [ &_6 <- _ret ] s4) | s4 = bb1 ] | bb1 = s0 [ s0 = is_none {_6} (fun (_ret: bool) -> [ &_4 <- _ret ] s1) | s1 = bb2 ] - | bb2 = any [ br0 -> {_4 = false} (! bb3) | br1 -> {_4} (! bb5) ] - | bb5 = s0 [ s0 = unwrap {none} (fun (_ret: Int32.t) -> [ &_11 <- _ret ] s1) | s1 = bb6 ] - | bb6 = s0 + | bb2 = any [ br0 -> {_4 = false} (! bb4) | br1 -> {_4} (! bb3) ] + | bb3 = s0 [ s0 = unwrap {none} (fun (_ret: Int32.t) -> [ &_11 <- _ret ] s1) | s1 = bb5 ] + | bb5 = s0 [ s0 = [ &_10 <- _11 = ([%#soption'1] (2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_10 = false} (! bb7) | br1 -> {_10} (! bb9) ] ] - | bb9 = s0 + | s1 = any [ br0 -> {_10 = false} (! bb7) | br1 -> {_10} (! bb6) ] ] + | bb6 = s0 [ s0 = MutBorrow.borrow_mut {some} (fun (_ret: MutBorrow.t t_Option) -> [ &_18 <- _ret ] [ &some <- _ret.final ] s1) | s1 = replace {_18} {[%#soption'2] (2: Int32.t)} (fun (_ret: t_Option) -> [ &_17 <- _ret ] s2) - | s2 = bb10 ] - | bb10 = s0 [ s0 = unwrap {_17} (fun (_ret: Int32.t) -> [ &_16 <- _ret ] s1) | s1 = bb11 ] - | bb11 = s0 + | s2 = bb8 ] + | bb8 = s0 [ s0 = unwrap {_17} (fun (_ret: Int32.t) -> [ &_16 <- _ret ] s1) | s1 = bb9 ] + | bb9 = s0 [ s0 = [ &_15 <- _16 = ([%#soption'3] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_15 = false} (! bb12) | br1 -> {_15} (! bb14) ] ] - | bb14 = s0 [ s0 = unwrap {some} (fun (_ret: Int32.t) -> [ &_22 <- _ret ] s1) | s1 = bb15 ] - | bb15 = s0 + | s1 = any [ br0 -> {_15 = false} (! bb11) | br1 -> {_15} (! bb10) ] ] + | bb10 = s0 [ s0 = unwrap {some} (fun (_ret: Int32.t) -> [ &_22 <- _ret ] s1) | s1 = bb12 ] + | bb12 = s0 [ s0 = [ &_21 <- _22 = ([%#soption'4] (2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_21 = false} (! bb16) | br1 -> {_21} (! bb18) ] ] - | bb18 = s0 + | s1 = any [ br0 -> {_21 = false} (! bb14) | br1 -> {_21} (! bb13) ] ] + | bb13 = s0 [ s0 = MutBorrow.borrow_mut {some} (fun (_ret: MutBorrow.t t_Option) -> [ &_29 <- _ret ] [ &some <- _ret.final ] s1) | s1 = replace {_29} {[%#soption'5] (1: Int32.t)} (fun (_ret: t_Option) -> [ &_28 <- _ret ] s2) - | s2 = bb19 ] - | bb19 = s0 [ s0 = unwrap {_28} (fun (_ret: Int32.t) -> [ &_27 <- _ret ] s1) | s1 = bb20 ] - | bb20 = s0 + | s2 = bb15 ] + | bb15 = s0 [ s0 = unwrap {_28} (fun (_ret: Int32.t) -> [ &_27 <- _ret ] s1) | s1 = bb16 ] + | bb16 = s0 [ s0 = [ &_26 <- _27 = ([%#soption'6] (2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_26 = false} (! bb21) | br1 -> {_26} (! bb23) ] ] - | bb23 = s0 [ s0 = unwrap {some} (fun (_ret: Int32.t) -> [ &_33 <- _ret ] s1) | s1 = bb24 ] - | bb24 = s0 + | s1 = any [ br0 -> {_26 = false} (! bb18) | br1 -> {_26} (! bb17) ] ] + | bb17 = s0 [ s0 = unwrap {some} (fun (_ret: Int32.t) -> [ &_33 <- _ret ] s1) | s1 = bb19 ] + | bb19 = s0 [ s0 = [ &_32 <- _33 = ([%#soption'7] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_32 = false} (! bb25) | br1 -> {_32} (! bb27) ] ] - | bb27 = return''0 {_0} - | bb25 = {[%#soption'8] false} any - | bb21 = {[%#soption'9] false} any - | bb16 = {[%#soption'10] false} any - | bb12 = {[%#soption'11] false} any + | s1 = any [ br0 -> {_32 = false} (! bb21) | br1 -> {_32} (! bb20) ] ] + | bb20 = return''0 {_0} + | bb21 = {[%#soption'8] false} any + | bb18 = {[%#soption'9] false} any + | bb14 = {[%#soption'10] false} any + | bb11 = {[%#soption'11] false} any | bb7 = {[%#soption'12] false} any - | bb3 = {[%#soption'13] false} any ] + | bb4 = {[%#soption'13] false} any ] [ & _0: () = Any.any_l () | & none: t_Option = Any.any_l () | & some: t_Option = Any.any_l () @@ -1411,18 +1405,18 @@ module M_option__and_or_xor [#"option.rs" 108 0 108 19] let%span soption'9 = "option.rs" 124 38 124 39 let%span soption'10 = "option.rs" 125 35 125 36 let%span soption'11 = "option.rs" 126 26 126 27 - let%span soption'12 = "option.rs" 126 12 126 37 - let%span soption'13 = "option.rs" 125 12 125 37 - let%span soption'14 = "option.rs" 124 12 124 40 - let%span soption'15 = "option.rs" 123 12 123 34 - let%span soption'16 = "option.rs" 121 12 121 39 - let%span soption'17 = "option.rs" 120 12 120 36 - let%span soption'18 = "option.rs" 119 12 119 39 - let%span soption'19 = "option.rs" 118 12 118 33 - let%span soption'20 = "option.rs" 116 12 116 40 - let%span soption'21 = "option.rs" 115 12 115 34 - let%span soption'22 = "option.rs" 114 12 114 37 - let%span soption'23 = "option.rs" 113 12 113 34 + let%span soption'12 = "option.rs" 126 4 126 38 + let%span soption'13 = "option.rs" 125 4 125 38 + let%span soption'14 = "option.rs" 124 4 124 41 + let%span soption'15 = "option.rs" 123 4 123 35 + let%span soption'16 = "option.rs" 121 4 121 40 + let%span soption'17 = "option.rs" 120 4 120 37 + let%span soption'18 = "option.rs" 119 4 119 40 + let%span soption'19 = "option.rs" 118 4 118 34 + let%span soption'20 = "option.rs" 116 4 116 41 + let%span soption'21 = "option.rs" 115 4 115 35 + let%span soption'22 = "option.rs" 114 4 114 38 + let%span soption'23 = "option.rs" 113 4 113 35 let%span soption'24 = "../../creusot-contracts/src/std/option.rs" 304 26 304 75 let%span soption'25 = "../../creusot-contracts/src/std/option.rs" 305 26 305 76 let%span soption'26 = "../../creusot-contracts/src/std/option.rs" 24 18 24 67 @@ -1510,33 +1504,33 @@ module M_option__and_or_xor [#"option.rs" 108 0 108 19] [ _const_ret (_const: t_Option) -> [ &_122 <- _const ] s1 ] | s1 = eq {_6} {_122} (fun (_ret: bool) -> [ &_4 <- _ret ] s2) | s2 = bb2 ] - | bb2 = any [ br0 -> {_4 = false} (! bb3) | br1 -> {_4} (! bb5) ] - | bb5 = s0 + | bb2 = any [ br0 -> {_4 = false} (! bb4) | br1 -> {_4} (! bb3) ] + | bb3 = s0 [ s0 = [ &_17 <- C_Some ([%#soption'0] (2: Int32.t)) ] s1 | s1 = and {none} {_17} (fun (_ret: t_Option) -> [ &_15 <- _ret ] s2) - | s2 = bb6 ] - | bb6 = s0 + | s2 = bb5 ] + | bb5 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_None ] s1'0 | s1'0 = [ &_0'0 <- _1 ] s2'0 | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_121 <- _const ] s1 ] | s1 = eq {_15} {_121} (fun (_ret: bool) -> [ &_13 <- _ret ] s2) - | s2 = bb7 ] - | bb7 = any [ br0 -> {_13 = false} (! bb8) | br1 -> {_13} (! bb10) ] - | bb10 = s0 [ s0 = and {some} {none} (fun (_ret: t_Option) -> [ &_24 <- _ret ] s1) | s1 = bb11 ] - | bb11 = s0 + | s2 = bb6 ] + | bb6 = any [ br0 -> {_13 = false} (! bb8) | br1 -> {_13} (! bb7) ] + | bb7 = s0 [ s0 = and {some} {none} (fun (_ret: t_Option) -> [ &_24 <- _ret ] s1) | s1 = bb9 ] + | bb9 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_None ] s1'0 | s1'0 = [ &_0'0 <- _1 ] s2'0 | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_120 <- _const ] s1 ] | s1 = eq {_24} {_120} (fun (_ret: bool) -> [ &_22 <- _ret ] s2) - | s2 = bb12 ] - | bb12 = any [ br0 -> {_22 = false} (! bb13) | br1 -> {_22} (! bb15) ] - | bb15 = s0 + | s2 = bb10 ] + | bb10 = any [ br0 -> {_22 = false} (! bb12) | br1 -> {_22} (! bb11) ] + | bb11 = s0 [ s0 = [ &_35 <- C_Some ([%#soption'1] (2: Int32.t)) ] s1 | s1 = and {some} {_35} (fun (_ret: t_Option) -> [ &_33 <- _ret ] s2) - | s2 = bb16 ] - | bb16 = s0 + | s2 = bb13 ] + | bb13 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_Some ([%#soption'2] (2: Int32.t)) ] s1'0 @@ -1544,22 +1538,22 @@ module M_option__and_or_xor [#"option.rs" 108 0 108 19] | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_119 <- _const ] s1 ] | s1 = eq {_33} {_119} (fun (_ret: bool) -> [ &_31 <- _ret ] s2) - | s2 = bb17 ] - | bb17 = any [ br0 -> {_31 = false} (! bb18) | br1 -> {_31} (! bb20) ] - | bb20 = s0 [ s0 = or {none} {none} (fun (_ret: t_Option) -> [ &_42 <- _ret ] s1) | s1 = bb21 ] - | bb21 = s0 + | s2 = bb14 ] + | bb14 = any [ br0 -> {_31 = false} (! bb16) | br1 -> {_31} (! bb15) ] + | bb15 = s0 [ s0 = or {none} {none} (fun (_ret: t_Option) -> [ &_42 <- _ret ] s1) | s1 = bb17 ] + | bb17 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_None ] s1'0 | s1'0 = [ &_0'0 <- _1 ] s2'0 | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_118 <- _const ] s1 ] | s1 = eq {_42} {_118} (fun (_ret: bool) -> [ &_40 <- _ret ] s2) - | s2 = bb22 ] - | bb22 = any [ br0 -> {_40 = false} (! bb23) | br1 -> {_40} (! bb25) ] - | bb25 = s0 + | s2 = bb18 ] + | bb18 = any [ br0 -> {_40 = false} (! bb20) | br1 -> {_40} (! bb19) ] + | bb19 = s0 [ s0 = [ &_53 <- C_Some ([%#soption'3] (2: Int32.t)) ] s1 | s1 = or {none} {_53} (fun (_ret: t_Option) -> [ &_51 <- _ret ] s2) - | s2 = bb26 ] - | bb26 = s0 + | s2 = bb21 ] + | bb21 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_Some ([%#soption'4] (2: Int32.t)) ] s1'0 @@ -1567,10 +1561,10 @@ module M_option__and_or_xor [#"option.rs" 108 0 108 19] | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_117 <- _const ] s1 ] | s1 = eq {_51} {_117} (fun (_ret: bool) -> [ &_49 <- _ret ] s2) - | s2 = bb27 ] - | bb27 = any [ br0 -> {_49 = false} (! bb28) | br1 -> {_49} (! bb30) ] - | bb30 = s0 [ s0 = or {some} {none} (fun (_ret: t_Option) -> [ &_60 <- _ret ] s1) | s1 = bb31 ] - | bb31 = s0 + | s2 = bb22 ] + | bb22 = any [ br0 -> {_49 = false} (! bb24) | br1 -> {_49} (! bb23) ] + | bb23 = s0 [ s0 = or {some} {none} (fun (_ret: t_Option) -> [ &_60 <- _ret ] s1) | s1 = bb25 ] + | bb25 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_Some ([%#soption'5] (1: Int32.t)) ] s1'0 @@ -1578,13 +1572,13 @@ module M_option__and_or_xor [#"option.rs" 108 0 108 19] | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_116 <- _const ] s1 ] | s1 = eq {_60} {_116} (fun (_ret: bool) -> [ &_58 <- _ret ] s2) - | s2 = bb32 ] - | bb32 = any [ br0 -> {_58 = false} (! bb33) | br1 -> {_58} (! bb35) ] - | bb35 = s0 + | s2 = bb26 ] + | bb26 = any [ br0 -> {_58 = false} (! bb28) | br1 -> {_58} (! bb27) ] + | bb27 = s0 [ s0 = [ &_71 <- C_Some ([%#soption'6] (2: Int32.t)) ] s1 | s1 = or {some} {_71} (fun (_ret: t_Option) -> [ &_69 <- _ret ] s2) - | s2 = bb36 ] - | bb36 = s0 + | s2 = bb29 ] + | bb29 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_Some ([%#soption'7] (1: Int32.t)) ] s1'0 @@ -1592,22 +1586,22 @@ module M_option__and_or_xor [#"option.rs" 108 0 108 19] | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_115 <- _const ] s1 ] | s1 = eq {_69} {_115} (fun (_ret: bool) -> [ &_67 <- _ret ] s2) - | s2 = bb37 ] - | bb37 = any [ br0 -> {_67 = false} (! bb38) | br1 -> {_67} (! bb40) ] - | bb40 = s0 [ s0 = xor {none} {none} (fun (_ret: t_Option) -> [ &_78 <- _ret ] s1) | s1 = bb41 ] - | bb41 = s0 + | s2 = bb30 ] + | bb30 = any [ br0 -> {_67 = false} (! bb32) | br1 -> {_67} (! bb31) ] + | bb31 = s0 [ s0 = xor {none} {none} (fun (_ret: t_Option) -> [ &_78 <- _ret ] s1) | s1 = bb33 ] + | bb33 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_None ] s1'0 | s1'0 = [ &_0'0 <- _1 ] s2'0 | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_114 <- _const ] s1 ] | s1 = eq {_78} {_114} (fun (_ret: bool) -> [ &_76 <- _ret ] s2) - | s2 = bb42 ] - | bb42 = any [ br0 -> {_76 = false} (! bb43) | br1 -> {_76} (! bb45) ] - | bb45 = s0 + | s2 = bb34 ] + | bb34 = any [ br0 -> {_76 = false} (! bb36) | br1 -> {_76} (! bb35) ] + | bb35 = s0 [ s0 = [ &_89 <- C_Some ([%#soption'8] (2: Int32.t)) ] s1 | s1 = xor {none} {_89} (fun (_ret: t_Option) -> [ &_87 <- _ret ] s2) - | s2 = bb46 ] - | bb46 = s0 + | s2 = bb37 ] + | bb37 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_Some ([%#soption'9] (2: Int32.t)) ] s1'0 @@ -1615,10 +1609,10 @@ module M_option__and_or_xor [#"option.rs" 108 0 108 19] | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_113 <- _const ] s1 ] | s1 = eq {_87} {_113} (fun (_ret: bool) -> [ &_85 <- _ret ] s2) - | s2 = bb47 ] - | bb47 = any [ br0 -> {_85 = false} (! bb48) | br1 -> {_85} (! bb50) ] - | bb50 = s0 [ s0 = xor {some} {none} (fun (_ret: t_Option) -> [ &_96 <- _ret ] s1) | s1 = bb51 ] - | bb51 = s0 + | s2 = bb38 ] + | bb38 = any [ br0 -> {_85 = false} (! bb40) | br1 -> {_85} (! bb39) ] + | bb39 = s0 [ s0 = xor {some} {none} (fun (_ret: t_Option) -> [ &_96 <- _ret ] s1) | s1 = bb41 ] + | bb41 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_Some ([%#soption'10] (1: Int32.t)) ] s1'0 @@ -1626,33 +1620,33 @@ module M_option__and_or_xor [#"option.rs" 108 0 108 19] | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_112 <- _const ] s1 ] | s1 = eq {_96} {_112} (fun (_ret: bool) -> [ &_94 <- _ret ] s2) - | s2 = bb52 ] - | bb52 = any [ br0 -> {_94 = false} (! bb53) | br1 -> {_94} (! bb55) ] - | bb55 = s0 + | s2 = bb42 ] + | bb42 = any [ br0 -> {_94 = false} (! bb44) | br1 -> {_94} (! bb43) ] + | bb43 = s0 [ s0 = [ &_107 <- C_Some ([%#soption'11] (2: Int32.t)) ] s1 | s1 = xor {some} {_107} (fun (_ret: t_Option) -> [ &_105 <- _ret ] s2) - | s2 = bb56 ] - | bb56 = s0 + | s2 = bb45 ] + | bb45 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_None ] s1'0 | s1'0 = [ &_0'0 <- _1 ] s2'0 | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_111 <- _const ] s1 ] | s1 = eq {_105} {_111} (fun (_ret: bool) -> [ &_103 <- _ret ] s2) - | s2 = bb57 ] - | bb57 = any [ br0 -> {_103 = false} (! bb58) | br1 -> {_103} (! bb60) ] - | bb60 = return''0 {_0} - | bb58 = {[%#soption'12] false} any - | bb53 = {[%#soption'13] false} any - | bb48 = {[%#soption'14] false} any - | bb43 = {[%#soption'15] false} any - | bb38 = {[%#soption'16] false} any - | bb33 = {[%#soption'17] false} any - | bb28 = {[%#soption'18] false} any - | bb23 = {[%#soption'19] false} any - | bb18 = {[%#soption'20] false} any - | bb13 = {[%#soption'21] false} any + | s2 = bb46 ] + | bb46 = any [ br0 -> {_103 = false} (! bb48) | br1 -> {_103} (! bb47) ] + | bb47 = return''0 {_0} + | bb48 = {[%#soption'12] false} any + | bb44 = {[%#soption'13] false} any + | bb40 = {[%#soption'14] false} any + | bb36 = {[%#soption'15] false} any + | bb32 = {[%#soption'16] false} any + | bb28 = {[%#soption'17] false} any + | bb24 = {[%#soption'18] false} any + | bb20 = {[%#soption'19] false} any + | bb16 = {[%#soption'20] false} any + | bb12 = {[%#soption'21] false} any | bb8 = {[%#soption'22] false} any - | bb3 = {[%#soption'23] false} any ] + | bb4 = {[%#soption'23] false} any ] [ & _0: () = Any.any_l () | & none: t_Option = Any.any_l () | & some: t_Option = Any.any_l () @@ -1703,9 +1697,9 @@ module M_option__and_then [#"option.rs" 129 0 129 17] let%span soption = "option.rs" 131 34 131 35 let%span soption'0 = "option.rs" 132 34 132 35 let%span soption'1 = "option.rs" 142 41 142 45 - let%span soption'2 = "option.rs" 143 12 143 40 - let%span soption'3 = "option.rs" 142 12 142 46 - let%span soption'4 = "option.rs" 134 12 134 66 + let%span soption'2 = "option.rs" 143 4 143 41 + let%span soption'3 = "option.rs" 142 4 142 47 + let%span soption'4 = "option.rs" 134 4 134 67 let%span soption'5 = "../../creusot-contracts/src/std/option.rs" 313 27 316 17 let%span soption'6 = "../../creusot-contracts/src/std/option.rs" 317 26 320 17 let%span soption'7 = "../../creusot-contracts/src/std/option.rs" 24 18 24 67 @@ -1836,12 +1830,12 @@ module M_option__and_then [#"option.rs" 129 0 129 17] [ _const_ret (_const: t_Option) -> [ &_34 <- _const ] s1 ] | s1 = eq {_7} {_34} (fun (_ret: bool) -> [ &_5 <- _ret ] s2) | s2 = bb2 ] - | bb2 = any [ br0 -> {_5 = false} (! bb3) | br1 -> {_5} (! bb5) ] - | bb5 = s0 + | bb2 = any [ br0 -> {_5 = false} (! bb4) | br1 -> {_5} (! bb3) ] + | bb3 = s0 [ s0 = [ &clos <- () ] s1 | s1 = and_then'0 {some1} {clos} (fun (_ret: t_Option) -> [ &_17 <- _ret ] s2) - | s2 = bb6 ] - | bb6 = s0 + | s2 = bb5 ] + | bb5 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_Some ([%#soption'1] (2: Int32.t)) ] s1'0 @@ -1849,21 +1843,21 @@ module M_option__and_then [#"option.rs" 129 0 129 17] | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_33 <- _const ] s1 ] | s1 = eq {_17} {_33} (fun (_ret: bool) -> [ &_15 <- _ret ] s2) - | s2 = bb7 ] - | bb7 = any [ br0 -> {_15 = false} (! bb8) | br1 -> {_15} (! bb10) ] - | bb10 = s0 [ s0 = and_then'0 {some2} {clos} (fun (_ret: t_Option) -> [ &_26 <- _ret ] s1) | s1 = bb11 ] - | bb11 = s0 + | s2 = bb6 ] + | bb6 = any [ br0 -> {_15 = false} (! bb8) | br1 -> {_15} (! bb7) ] + | bb7 = s0 [ s0 = and_then'0 {some2} {clos} (fun (_ret: t_Option) -> [ &_26 <- _ret ] s1) | s1 = bb9 ] + | bb9 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_None ] s1'0 | s1'0 = [ &_0'0 <- _1 ] s2'0 | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_32 <- _const ] s1 ] | s1 = eq {_26} {_32} (fun (_ret: bool) -> [ &_24 <- _ret ] s2) - | s2 = bb12 ] - | bb12 = any [ br0 -> {_24 = false} (! bb13) | br1 -> {_24} (! bb15) ] - | bb15 = return''0 {_0} - | bb13 = {[%#soption'2] false} any + | s2 = bb10 ] + | bb10 = any [ br0 -> {_24 = false} (! bb12) | br1 -> {_24} (! bb11) ] + | bb11 = return''0 {_0} + | bb12 = {[%#soption'2] false} any | bb8 = {[%#soption'3] false} any - | bb3 = {[%#soption'4] false} any ] + | bb4 = {[%#soption'4] false} any ] [ & _0: () = Any.any_l () | & none: t_Option = Any.any_l () | & some1: t_Option = Any.any_l () @@ -1883,9 +1877,9 @@ end module M_option__filter [#"option.rs" 146 0 146 15] let%span soption = "option.rs" 148 33 148 34 let%span soption'0 = "option.rs" 151 45 151 49 - let%span soption'1 = "option.rs" 152 12 152 44 - let%span soption'2 = "option.rs" 151 12 151 50 - let%span soption'3 = "option.rs" 150 12 150 45 + let%span soption'1 = "option.rs" 152 4 152 45 + let%span soption'2 = "option.rs" 151 4 151 51 + let%span soption'3 = "option.rs" 150 4 150 46 let%span soption'4 = "../../creusot-contracts/src/std/option.rs" 330 27 333 17 let%span soption'5 = "../../creusot-contracts/src/std/option.rs" 334 26 340 17 let%span soption'6 = "../../creusot-contracts/src/std/option.rs" 24 18 24 67 @@ -2044,10 +2038,10 @@ module M_option__filter [#"option.rs" 146 0 146 15] [ _const_ret (_const: t_Option) -> [ &_32 <- _const ] s1 ] | s1 = eq {_6} {_32} (fun (_ret: bool) -> [ &_4 <- _ret ] s2) | s2 = bb2 ] - | bb2 = any [ br0 -> {_4 = false} (! bb3) | br1 -> {_4} (! bb5) ] + | bb2 = any [ br0 -> {_4 = false} (! bb4) | br1 -> {_4} (! bb3) ] + | bb3 = s0 + [ s0 = [ &_17 <- () ] s1 | s1 = filter'0 {some} {_17} (fun (_ret: t_Option) -> [ &_15 <- _ret ] s2) | s2 = bb5 ] | bb5 = s0 - [ s0 = [ &_17 <- () ] s1 | s1 = filter'0 {some} {_17} (fun (_ret: t_Option) -> [ &_15 <- _ret ] s2) | s2 = bb6 ] - | bb6 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_Some ([%#soption'0] (1: Int32.t)) ] s1'0 @@ -2055,22 +2049,22 @@ module M_option__filter [#"option.rs" 146 0 146 15] | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_31 <- _const ] s1 ] | s1 = eq {_15} {_31} (fun (_ret: bool) -> [ &_13 <- _ret ] s2) - | s2 = bb7 ] - | bb7 = any [ br0 -> {_13 = false} (! bb8) | br1 -> {_13} (! bb10) ] - | bb10 = s0 - [ s0 = [ &_26 <- () ] s1 | s1 = filter'1 {some} {_26} (fun (_ret: t_Option) -> [ &_24 <- _ret ] s2) | s2 = bb11 ] - | bb11 = s0 + | s2 = bb6 ] + | bb6 = any [ br0 -> {_13 = false} (! bb8) | br1 -> {_13} (! bb7) ] + | bb7 = s0 + [ s0 = [ &_26 <- () ] s1 | s1 = filter'1 {some} {_26} (fun (_ret: t_Option) -> [ &_24 <- _ret ] s2) | s2 = bb9 ] + | bb9 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_None ] s1'0 | s1'0 = [ &_0'0 <- _1 ] s2'0 | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_30 <- _const ] s1 ] | s1 = eq {_24} {_30} (fun (_ret: bool) -> [ &_22 <- _ret ] s2) - | s2 = bb12 ] - | bb12 = any [ br0 -> {_22 = false} (! bb13) | br1 -> {_22} (! bb15) ] - | bb15 = return''0 {_0} - | bb13 = {[%#soption'1] false} any + | s2 = bb10 ] + | bb10 = any [ br0 -> {_22 = false} (! bb12) | br1 -> {_22} (! bb11) ] + | bb11 = return''0 {_0} + | bb12 = {[%#soption'1] false} any | bb8 = {[%#soption'2] false} any - | bb3 = {[%#soption'3] false} any ] + | bb4 = {[%#soption'3] false} any ] [ & _0: () = Any.any_l () | & none: t_Option = Any.any_l () | & some: t_Option = Any.any_l () @@ -2090,9 +2084,9 @@ end module M_option__is_some_and [#"option.rs" 155 0 155 20] let%span soption = "option.rs" 157 34 157 35 let%span soption'0 = "option.rs" 158 34 158 35 - let%span soption'1 = "option.rs" 162 12 162 39 - let%span soption'2 = "option.rs" 161 12 161 42 - let%span soption'3 = "option.rs" 160 12 160 41 + let%span soption'1 = "option.rs" 161 4 161 43 + let%span soption'2 = "option.rs" 162 4 162 40 + let%span soption'3 = "option.rs" 160 4 160 42 let%span soption'4 = "option.rs" 160 39 160 40 let%span soption'5 = "../../creusot-contracts/src/std/option.rs" 62 27 65 17 let%span soption'6 = "../../creusot-contracts/src/std/option.rs" 66 26 69 17 @@ -2208,17 +2202,17 @@ module M_option__is_some_and [#"option.rs" 155 0 155 20] | s3 = [ &_7 <- () ] s4 | s4 = is_some_and {some1} {_7} (fun (_ret: bool) -> [ &_5 <- _ret ] s5) | s5 = bb1 ] - | bb1 = any [ br0 -> {_5 = false} (! bb2) | br1 -> {_5} (! bb4) ] - | bb4 = s0 - [ s0 = [ &_13 <- () ] s1 | s1 = is_some_and'0 {some2} {_13} (fun (_ret: bool) -> [ &_11 <- _ret ] s2) | s2 = bb5 ] - | bb5 = s0 [ s0 = [ &_10 <- not _11 ] s1 | s1 = any [ br0 -> {_10 = false} (! bb6) | br1 -> {_10} (! bb8) ] ] - | bb8 = s0 - [ s0 = [ &_19 <- () ] s1 | s1 = is_some_and'1 {none} {_19} (fun (_ret: bool) -> [ &_17 <- _ret ] s2) | s2 = bb9 ] - | bb9 = s0 [ s0 = [ &_16 <- not _17 ] s1 | s1 = any [ br0 -> {_16 = false} (! bb10) | br1 -> {_16} (! bb12) ] ] - | bb12 = return''0 {_0} - | bb10 = {[%#soption'1] false} any - | bb6 = {[%#soption'2] false} any - | bb2 = {[%#soption'3] false} any ] + | bb1 = any [ br0 -> {_5 = false} (! bb3) | br1 -> {_5} (! bb2) ] + | bb2 = s0 + [ s0 = [ &_12 <- () ] s1 | s1 = is_some_and'0 {some2} {_12} (fun (_ret: bool) -> [ &_10 <- _ret ] s2) | s2 = bb4 ] + | bb4 = any [ br0 -> {_10 = false} (! bb6) | br1 -> {_10} (! bb5) ] + | bb5 = {[%#soption'1] false} any + | bb6 = s0 + [ s0 = [ &_17 <- () ] s1 | s1 = is_some_and'1 {none} {_17} (fun (_ret: bool) -> [ &_15 <- _ret ] s2) | s2 = bb7 ] + | bb7 = any [ br0 -> {_15 = false} (! bb9) | br1 -> {_15} (! bb8) ] + | bb8 = {[%#soption'2] false} any + | bb9 = return''0 {_0} + | bb3 = {[%#soption'3] false} any ] [ & _0: () = Any.any_l () | & none: t_Option = Any.any_l () | & some1: t_Option = Any.any_l () @@ -2226,19 +2220,17 @@ module M_option__is_some_and [#"option.rs" 155 0 155 20] | & _5: bool = Any.any_l () | & _7: () = Any.any_l () | & _10: bool = Any.any_l () - | & _11: bool = Any.any_l () - | & _13: () = Any.any_l () - | & _16: bool = Any.any_l () - | & _17: bool = Any.any_l () - | & _19: () = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] + | & _12: () = Any.any_l () + | & _15: bool = Any.any_l () + | & _17: () = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end module M_option__or_else [#"option.rs" 165 0 165 16] let%span soption = "option.rs" 167 33 167 34 let%span soption'0 = "option.rs" 169 45 169 46 let%span soption'1 = "option.rs" 171 46 171 47 - let%span soption'2 = "option.rs" 171 12 171 48 - let%span soption'3 = "option.rs" 170 12 170 41 - let%span soption'4 = "option.rs" 169 12 169 47 + let%span soption'2 = "option.rs" 171 4 171 49 + let%span soption'3 = "option.rs" 170 4 170 42 + let%span soption'4 = "option.rs" 169 4 169 48 let%span soption'5 = "option.rs" 169 33 169 34 let%span soption'6 = "../../creusot-contracts/src/std/option.rs" 360 27 360 62 let%span soption'7 = "../../creusot-contracts/src/std/option.rs" 361 26 364 17 @@ -2372,20 +2364,20 @@ module M_option__or_else [#"option.rs" 165 0 165 16] [ _const_ret (_const: t_Option) -> [ &_32 <- _const ] s1 ] | s1 = eq {_6} {_32} (fun (_ret: bool) -> [ &_4 <- _ret ] s2) | s2 = bb2 ] - | bb2 = any [ br0 -> {_4 = false} (! bb3) | br1 -> {_4} (! bb5) ] + | bb2 = any [ br0 -> {_4 = false} (! bb4) | br1 -> {_4} (! bb3) ] + | bb3 = s0 + [ s0 = [ &_17 <- () ] s1 | s1 = or_else'0 {none} {_17} (fun (_ret: t_Option) -> [ &_15 <- _ret ] s2) | s2 = bb5 ] | bb5 = s0 - [ s0 = [ &_17 <- () ] s1 | s1 = or_else'0 {none} {_17} (fun (_ret: t_Option) -> [ &_15 <- _ret ] s2) | s2 = bb6 ] - | bb6 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_None ] s1'0 | s1'0 = [ &_0'0 <- _1 ] s2'0 | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_31 <- _const ] s1 ] | s1 = eq {_15} {_31} (fun (_ret: bool) -> [ &_13 <- _ret ] s2) - | s2 = bb7 ] - | bb7 = any [ br0 -> {_13 = false} (! bb8) | br1 -> {_13} (! bb10) ] - | bb10 = s0 - [ s0 = [ &_26 <- () ] s1 | s1 = or_else'1 {some} {_26} (fun (_ret: t_Option) -> [ &_24 <- _ret ] s2) | s2 = bb11 ] - | bb11 = s0 + | s2 = bb6 ] + | bb6 = any [ br0 -> {_13 = false} (! bb8) | br1 -> {_13} (! bb7) ] + | bb7 = s0 + [ s0 = [ &_26 <- () ] s1 | s1 = or_else'1 {some} {_26} (fun (_ret: t_Option) -> [ &_24 <- _ret ] s2) | s2 = bb9 ] + | bb9 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_Some ([%#soption'1] (1: Int32.t)) ] s1'0 @@ -2393,12 +2385,12 @@ module M_option__or_else [#"option.rs" 165 0 165 16] | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_30 <- _const ] s1 ] | s1 = eq {_24} {_30} (fun (_ret: bool) -> [ &_22 <- _ret ] s2) - | s2 = bb12 ] - | bb12 = any [ br0 -> {_22 = false} (! bb13) | br1 -> {_22} (! bb15) ] - | bb15 = return''0 {_0} - | bb13 = {[%#soption'2] false} any + | s2 = bb10 ] + | bb10 = any [ br0 -> {_22 = false} (! bb12) | br1 -> {_22} (! bb11) ] + | bb11 = return''0 {_0} + | bb12 = {[%#soption'2] false} any | bb8 = {[%#soption'3] false} any - | bb3 = {[%#soption'4] false} any ] + | bb4 = {[%#soption'4] false} any ] [ & _0: () = Any.any_l () | & none: t_Option = Any.any_l () | & some: t_Option = Any.any_l () @@ -2425,10 +2417,10 @@ module M_option__insert [#"option.rs" 174 0 174 15] let%span soption'5 = "option.rs" 183 19 183 20 let%span soption'6 = "option.rs" 184 10 184 11 let%span soption'7 = "option.rs" 185 25 185 26 - let%span soption'8 = "option.rs" 185 12 185 27 - let%span soption'9 = "option.rs" 183 12 183 20 - let%span soption'10 = "option.rs" 181 12 181 27 - let%span soption'11 = "option.rs" 179 12 179 20 + let%span soption'8 = "option.rs" 185 4 185 28 + let%span soption'9 = "option.rs" 183 4 183 21 + let%span soption'10 = "option.rs" 181 4 181 28 + let%span soption'11 = "option.rs" 179 4 179 21 let%span soption'12 = "../../creusot-contracts/src/std/option.rs" 389 26 392 17 let%span soption'13 = "../../creusot-contracts/src/std/option.rs" 393 26 393 68 let%span soption'14 = "../../creusot-contracts/src/std/option.rs" 24 18 24 67 @@ -2498,8 +2490,8 @@ module M_option__insert [#"option.rs" 174 0 174 15] | s4 = bb1 ] | bb1 = s0 [ s0 = [ &_6 <- i1.current = ([%#soption'1] (2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_6 = false} (! bb2) | br1 -> {_6} (! bb4) ] ] - | bb4 = s0 + | s1 = any [ br0 -> {_6 = false} (! bb3) | br1 -> {_6} (! bb2) ] ] + | bb2 = s0 [ s0 = [ &i1 <- { i1 with current = ([%#soption'2] (3: Int32.t)) } ] s1 | s1 = -{resolve'1 i1}- s2 | s2 = bb0'0 @@ -2509,17 +2501,17 @@ module M_option__insert [#"option.rs" 174 0 174 15] | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_28 <- _const ] s3 ] | s3 = eq {none} {_28} (fun (_ret: bool) -> [ &_10 <- _ret ] s4) - | s4 = bb5 ] - | bb5 = any [ br0 -> {_10 = false} (! bb6) | br1 -> {_10} (! bb8) ] - | bb8 = s0 + | s4 = bb4 ] + | bb4 = any [ br0 -> {_10 = false} (! bb6) | br1 -> {_10} (! bb5) ] + | bb5 = s0 [ s0 = MutBorrow.borrow_mut {some} (fun (_ret: MutBorrow.t t_Option) -> [ &_16 <- _ret ] [ &some <- _ret.final ] s1) | s1 = insert {_16} {[%#soption'4] (4: Int32.t)} (fun (_ret: MutBorrow.t Int32.t) -> [ &i2 <- _ret ] s2) - | s2 = bb9 ] - | bb9 = s0 + | s2 = bb7 ] + | bb7 = s0 [ s0 = [ &_18 <- i2.current = ([%#soption'5] (4: Int32.t)) ] s1 - | s1 = any [ br0 -> {_18 = false} (! bb10) | br1 -> {_18} (! bb12) ] ] - | bb12 = s0 + | s1 = any [ br0 -> {_18 = false} (! bb9) | br1 -> {_18} (! bb8) ] ] + | bb8 = s0 [ s0 = [ &i2 <- { i2 with current = ([%#soption'6] (5: Int32.t)) } ] s1 | s1 = -{resolve'1 i2}- s2 | s2 = bb0'0 @@ -2529,13 +2521,13 @@ module M_option__insert [#"option.rs" 174 0 174 15] | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_27 <- _const ] s3 ] | s3 = eq {some} {_27} (fun (_ret: bool) -> [ &_22 <- _ret ] s4) - | s4 = bb13 ] - | bb13 = any [ br0 -> {_22 = false} (! bb14) | br1 -> {_22} (! bb16) ] - | bb16 = return''0 {_0} - | bb14 = {[%#soption'8] false} any - | bb10 = s0 [ s0 = -{resolve'1 i2}- s1 | s1 = {[%#soption'9] false} any ] + | s4 = bb10 ] + | bb10 = any [ br0 -> {_22 = false} (! bb12) | br1 -> {_22} (! bb11) ] + | bb11 = return''0 {_0} + | bb12 = {[%#soption'8] false} any + | bb9 = s0 [ s0 = -{resolve'1 i2}- s1 | s1 = {[%#soption'9] false} any ] | bb6 = {[%#soption'10] false} any - | bb2 = s0 [ s0 = -{resolve'1 i1}- s1 | s1 = {[%#soption'11] false} any ] ] + | bb3 = s0 [ s0 = -{resolve'1 i1}- s1 | s1 = {[%#soption'11] false} any ] ] [ & _0: () = Any.any_l () | & none: t_Option = Any.any_l () | & some: t_Option = Any.any_l () @@ -2567,14 +2559,14 @@ module M_option__get_or_insert [#"option.rs" 188 0 188 22] let%span soption'12 = "option.rs" 211 19 211 20 let%span soption'13 = "option.rs" 212 10 212 11 let%span soption'14 = "option.rs" 213 25 213 26 - let%span soption'15 = "option.rs" 213 12 213 27 - let%span soption'16 = "option.rs" 211 12 211 20 - let%span soption'17 = "option.rs" 209 12 209 27 - let%span soption'18 = "option.rs" 207 12 207 20 - let%span soption'19 = "option.rs" 200 12 200 27 - let%span soption'20 = "option.rs" 198 12 198 20 - let%span soption'21 = "option.rs" 196 12 196 27 - let%span soption'22 = "option.rs" 194 12 194 20 + let%span soption'15 = "option.rs" 213 4 213 28 + let%span soption'16 = "option.rs" 211 4 211 21 + let%span soption'17 = "option.rs" 209 4 209 28 + let%span soption'18 = "option.rs" 207 4 207 21 + let%span soption'19 = "option.rs" 200 4 200 28 + let%span soption'20 = "option.rs" 198 4 198 21 + let%span soption'21 = "option.rs" 196 4 196 28 + let%span soption'22 = "option.rs" 194 4 194 21 let%span soption'23 = "../../creusot-contracts/src/std/option.rs" 403 26 406 17 let%span soption'24 = "../../creusot-contracts/src/std/option.rs" 24 18 24 67 let%span soption'25 = "option.rs" 206 40 206 41 @@ -2697,8 +2689,8 @@ module M_option__get_or_insert [#"option.rs" 188 0 188 22] | s4 = bb1 ] | bb1 = s0 [ s0 = [ &_6 <- i1.current = ([%#soption'1] (2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_6 = false} (! bb2) | br1 -> {_6} (! bb4) ] ] - | bb4 = s0 + | s1 = any [ br0 -> {_6 = false} (! bb3) | br1 -> {_6} (! bb2) ] ] + | bb2 = s0 [ s0 = [ &i1 <- { i1 with current = ([%#soption'2] (3: Int32.t)) } ] s1 | s1 = -{resolve'1 i1}- s2 | s2 = bb0'0 @@ -2708,17 +2700,17 @@ module M_option__get_or_insert [#"option.rs" 188 0 188 22] | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_58 <- _const ] s3 ] | s3 = eq {none} {_58} (fun (_ret: bool) -> [ &_10 <- _ret ] s4) - | s4 = bb5 ] - | bb5 = any [ br0 -> {_10 = false} (! bb6) | br1 -> {_10} (! bb8) ] - | bb8 = s0 + | s4 = bb4 ] + | bb4 = any [ br0 -> {_10 = false} (! bb6) | br1 -> {_10} (! bb5) ] + | bb5 = s0 [ s0 = MutBorrow.borrow_mut {some} (fun (_ret: MutBorrow.t t_Option) -> [ &_16 <- _ret ] [ &some <- _ret.final ] s1) | s1 = get_or_insert {_16} {[%#soption'4] (4: Int32.t)} (fun (_ret: MutBorrow.t Int32.t) -> [ &i2 <- _ret ] s2) - | s2 = bb9 ] - | bb9 = s0 + | s2 = bb7 ] + | bb7 = s0 [ s0 = [ &_18 <- i2.current = ([%#soption'5] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_18 = false} (! bb10) | br1 -> {_18} (! bb12) ] ] - | bb12 = s0 + | s1 = any [ br0 -> {_18 = false} (! bb9) | br1 -> {_18} (! bb8) ] ] + | bb8 = s0 [ s0 = [ &i2 <- { i2 with current = ([%#soption'6] (5: Int32.t)) } ] s1 | s1 = -{resolve'1 i2}- s2 | s2 = bb0'0 @@ -2728,9 +2720,9 @@ module M_option__get_or_insert [#"option.rs" 188 0 188 22] | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_57 <- _const ] s3 ] | s3 = eq {some} {_57} (fun (_ret: bool) -> [ &_22 <- _ret ] s4) - | s4 = bb13 ] - | bb13 = any [ br0 -> {_22 = false} (! bb14) | br1 -> {_22} (! bb16) ] - | bb16 = s0 + | s4 = bb10 ] + | bb10 = any [ br0 -> {_22 = false} (! bb12) | br1 -> {_22} (! bb11) ] + | bb11 = s0 [ s0 = [ &_27 <- C_None ] s1 | s1 = [ &none <- _27 ] s2 | s2 = [ &_28 <- C_Some ([%#soption'8] (1: Int32.t)) ] s3 @@ -2739,11 +2731,11 @@ module M_option__get_or_insert [#"option.rs" 188 0 188 22] | s5 = MutBorrow.borrow_mut {none} (fun (_ret: MutBorrow.t t_Option) -> [ &_30 <- _ret ] [ &none <- _ret.final ] s6) | s6 = get_or_insert_with {_30} {_31} (fun (_ret: MutBorrow.t Int32.t) -> [ &i1'0 <- _ret ] s7) - | s7 = bb17 ] - | bb17 = s0 + | s7 = bb13 ] + | bb13 = s0 [ s0 = [ &_33 <- i1'0.current = ([%#soption'9] (2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_33 = false} (! bb18) | br1 -> {_33} (! bb20) ] ] - | bb20 = s0 + | s1 = any [ br0 -> {_33 = false} (! bb15) | br1 -> {_33} (! bb14) ] ] + | bb14 = s0 [ s0 = [ &i1'0 <- { i1'0 with current = ([%#soption'10] (3: Int32.t)) } ] s1 | s1 = -{resolve'1 i1'0}- s2 | s2 = bb0'0 @@ -2753,18 +2745,18 @@ module M_option__get_or_insert [#"option.rs" 188 0 188 22] | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_56 <- _const ] s3 ] | s3 = eq {none} {_56} (fun (_ret: bool) -> [ &_37 <- _ret ] s4) - | s4 = bb21 ] - | bb21 = any [ br0 -> {_37 = false} (! bb22) | br1 -> {_37} (! bb24) ] - | bb24 = s0 + | s4 = bb16 ] + | bb16 = any [ br0 -> {_37 = false} (! bb18) | br1 -> {_37} (! bb17) ] + | bb17 = s0 [ s0 = [ &_44 <- () ] s1 | s1 = MutBorrow.borrow_mut {some} (fun (_ret: MutBorrow.t t_Option) -> [ &_43 <- _ret ] [ &some <- _ret.final ] s2) | s2 = get_or_insert_with'0 {_43} {_44} (fun (_ret: MutBorrow.t Int32.t) -> [ &i2'0 <- _ret ] s3) - | s3 = bb25 ] - | bb25 = s0 + | s3 = bb19 ] + | bb19 = s0 [ s0 = [ &_46 <- i2'0.current = ([%#soption'12] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_46 = false} (! bb26) | br1 -> {_46} (! bb28) ] ] - | bb28 = s0 + | s1 = any [ br0 -> {_46 = false} (! bb21) | br1 -> {_46} (! bb20) ] ] + | bb20 = s0 [ s0 = [ &i2'0 <- { i2'0 with current = ([%#soption'13] (5: Int32.t)) } ] s1 | s1 = -{resolve'1 i2'0}- s2 | s2 = bb0'0 @@ -2774,17 +2766,17 @@ module M_option__get_or_insert [#"option.rs" 188 0 188 22] | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_55 <- _const ] s3 ] | s3 = eq {some} {_55} (fun (_ret: bool) -> [ &_50 <- _ret ] s4) - | s4 = bb29 ] - | bb29 = any [ br0 -> {_50 = false} (! bb30) | br1 -> {_50} (! bb32) ] - | bb32 = return''0 {_0} - | bb30 = {[%#soption'15] false} any - | bb26 = s0 [ s0 = -{resolve'1 i2'0}- s1 | s1 = {[%#soption'16] false} any ] - | bb22 = {[%#soption'17] false} any - | bb18 = s0 [ s0 = -{resolve'1 i1'0}- s1 | s1 = {[%#soption'18] false} any ] - | bb14 = {[%#soption'19] false} any - | bb10 = s0 [ s0 = -{resolve'1 i2}- s1 | s1 = {[%#soption'20] false} any ] + | s4 = bb22 ] + | bb22 = any [ br0 -> {_50 = false} (! bb24) | br1 -> {_50} (! bb23) ] + | bb23 = return''0 {_0} + | bb24 = {[%#soption'15] false} any + | bb21 = s0 [ s0 = -{resolve'1 i2'0}- s1 | s1 = {[%#soption'16] false} any ] + | bb18 = {[%#soption'17] false} any + | bb15 = s0 [ s0 = -{resolve'1 i1'0}- s1 | s1 = {[%#soption'18] false} any ] + | bb12 = {[%#soption'19] false} any + | bb9 = s0 [ s0 = -{resolve'1 i2}- s1 | s1 = {[%#soption'20] false} any ] | bb6 = {[%#soption'21] false} any - | bb2 = s0 [ s0 = -{resolve'1 i1}- s1 | s1 = {[%#soption'22] false} any ] ] + | bb3 = s0 [ s0 = -{resolve'1 i1}- s1 | s1 = {[%#soption'22] false} any ] ] [ & _0: () = Any.any_l () | & none: t_Option = Any.any_l () | & some: t_Option = Any.any_l () @@ -2816,10 +2808,10 @@ end module M_option__take [#"option.rs" 216 0 216 13] let%span soption = "option.rs" 218 37 218 38 let%span soption'0 = "option.rs" 222 36 222 37 - let%span soption'1 = "option.rs" 223 12 223 26 - let%span soption'2 = "option.rs" 222 12 222 37 - let%span soption'3 = "option.rs" 221 12 221 26 - let%span soption'4 = "option.rs" 220 12 220 33 + let%span soption'1 = "option.rs" 223 4 223 27 + let%span soption'2 = "option.rs" 222 4 222 38 + let%span soption'3 = "option.rs" 221 4 221 27 + let%span soption'4 = "option.rs" 220 4 220 34 let%span soption'5 = "../../creusot-contracts/src/std/option.rs" 433 26 433 58 let%span soption'6 = "../../creusot-contracts/src/std/option.rs" 79 26 79 51 let%span soption'7 = "../../creusot-contracts/src/std/option.rs" 149 27 149 39 @@ -2854,25 +2846,25 @@ module M_option__take [#"option.rs" 216 0 216 13] | s3 = take {_7} (fun (_ret: t_Option) -> [ &_6 <- _ret ] s4) | s4 = bb1 ] | bb1 = s0 [ s0 = is_none {_6} (fun (_ret: bool) -> [ &_4 <- _ret ] s1) | s1 = bb2 ] - | bb2 = any [ br0 -> {_4 = false} (! bb3) | br1 -> {_4} (! bb5) ] - | bb5 = s0 [ s0 = is_none {none} (fun (_ret: bool) -> [ &_10 <- _ret ] s1) | s1 = bb6 ] - | bb6 = any [ br0 -> {_10 = false} (! bb7) | br1 -> {_10} (! bb9) ] - | bb9 = s0 + | bb2 = any [ br0 -> {_4 = false} (! bb4) | br1 -> {_4} (! bb3) ] + | bb3 = s0 [ s0 = is_none {none} (fun (_ret: bool) -> [ &_10 <- _ret ] s1) | s1 = bb5 ] + | bb5 = any [ br0 -> {_10 = false} (! bb7) | br1 -> {_10} (! bb6) ] + | bb6 = s0 [ s0 = MutBorrow.borrow_mut {some} (fun (_ret: MutBorrow.t t_Option) -> [ &_17 <- _ret ] [ &some <- _ret.final ] s1) | s1 = take {_17} (fun (_ret: t_Option) -> [ &_16 <- _ret ] s2) - | s2 = bb10 ] - | bb10 = s0 [ s0 = unwrap {_16} (fun (_ret: Int32.t) -> [ &_15 <- _ret ] s1) | s1 = bb11 ] - | bb11 = s0 + | s2 = bb8 ] + | bb8 = s0 [ s0 = unwrap {_16} (fun (_ret: Int32.t) -> [ &_15 <- _ret ] s1) | s1 = bb9 ] + | bb9 = s0 [ s0 = [ &_14 <- _15 = ([%#soption'0] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_14 = false} (! bb12) | br1 -> {_14} (! bb14) ] ] - | bb14 = s0 [ s0 = is_none {some} (fun (_ret: bool) -> [ &_20 <- _ret ] s1) | s1 = bb15 ] - | bb15 = any [ br0 -> {_20 = false} (! bb16) | br1 -> {_20} (! bb18) ] - | bb18 = return''0 {_0} - | bb16 = {[%#soption'1] false} any - | bb12 = {[%#soption'2] false} any + | s1 = any [ br0 -> {_14 = false} (! bb11) | br1 -> {_14} (! bb10) ] ] + | bb10 = s0 [ s0 = is_none {some} (fun (_ret: bool) -> [ &_20 <- _ret ] s1) | s1 = bb12 ] + | bb12 = any [ br0 -> {_20 = false} (! bb14) | br1 -> {_20} (! bb13) ] + | bb13 = return''0 {_0} + | bb14 = {[%#soption'1] false} any + | bb11 = {[%#soption'2] false} any | bb7 = {[%#soption'3] false} any - | bb3 = {[%#soption'4] false} any ] + | bb4 = {[%#soption'4] false} any ] [ & _0: () = Any.any_l () | & none: t_Option = Any.any_l () | & some: t_Option = Any.any_l () @@ -2890,11 +2882,11 @@ module M_option__take_if [#"option.rs" 226 0 226 16] let%span soption = "option.rs" 228 37 228 38 let%span soption'0 = "option.rs" 232 25 232 26 let%span soption'1 = "option.rs" 238 19 238 20 - let%span soption'2 = "option.rs" 240 12 240 24 - let%span soption'3 = "option.rs" 234 8 238 21 - let%span soption'4 = "option.rs" 232 12 232 27 - let%span soption'5 = "option.rs" 231 12 231 45 - let%span soption'6 = "option.rs" 230 12 230 46 + let%span soption'2 = "option.rs" 240 4 240 25 + let%span soption'3 = "option.rs" 233 4 239 5 + let%span soption'4 = "option.rs" 232 4 232 28 + let%span soption'5 = "option.rs" 231 4 231 46 + let%span soption'6 = "option.rs" 230 4 230 47 let%span soption'7 = "../../creusot-contracts/src/std/option.rs" 438 27 441 17 let%span soption'8 = "../../creusot-contracts/src/std/option.rs" 442 26 451 17 let%span soption'9 = "../../creusot-contracts/src/std/option.rs" 24 18 24 67 @@ -3088,22 +3080,22 @@ module M_option__take_if [#"option.rs" 226 0 226 16] [ _const_ret (_const: t_Option) -> [ &_46 <- _const ] s1 ] | s1 = eq {_6} {_46} (fun (_ret: bool) -> [ &_4 <- _ret ] s2) | s2 = bb2 ] - | bb2 = any [ br0 -> {_4 = false} (! bb3) | br1 -> {_4} (! bb5) ] - | bb5 = s0 + | bb2 = any [ br0 -> {_4 = false} (! bb4) | br1 -> {_4} (! bb3) ] + | bb3 = s0 [ s0 = [ &_17 <- () ] s1 | s1 = MutBorrow.borrow_mut {some} (fun (_ret: MutBorrow.t t_Option) -> [ &_16 <- _ret ] [ &some <- _ret.final ] s2) | s2 = take_if'0 {_16} {_17} (fun (_ret: t_Option) -> [ &_15 <- _ret ] s3) - | s3 = bb6 ] - | bb6 = s0 + | s3 = bb5 ] + | bb5 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_None ] s1'0 | s1'0 = [ &_0'0 <- _1 ] s2'0 | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_45 <- _const ] s1 ] | s1 = eq {_15} {_45} (fun (_ret: bool) -> [ &_13 <- _ret ] s2) - | s2 = bb7 ] - | bb7 = any [ br0 -> {_13 = false} (! bb8) | br1 -> {_13} (! bb10) ] - | bb10 = s0 + | s2 = bb6 ] + | bb6 = any [ br0 -> {_13 = false} (! bb8) | br1 -> {_13} (! bb7) ] + | bb7 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_Some ([%#soption'0] (1: Int32.t)) ] s1'0 @@ -3111,15 +3103,15 @@ module M_option__take_if [#"option.rs" 226 0 226 16] | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_44 <- _const ] s1 ] | s1 = eq {some} {_44} (fun (_ret: bool) -> [ &_22 <- _ret ] s2) - | s2 = bb11 ] - | bb11 = any [ br0 -> {_22 = false} (! bb12) | br1 -> {_22} (! bb14) ] - | bb14 = s0 + | s2 = bb9 ] + | bb9 = any [ br0 -> {_22 = false} (! bb11) | br1 -> {_22} (! bb10) ] + | bb10 = s0 [ s0 = [ &_32 <- () ] s1 | s1 = MutBorrow.borrow_mut {some} (fun (_ret: MutBorrow.t t_Option) -> [ &_31 <- _ret ] [ &some <- _ret.final ] s2) | s2 = take_if'1 {_31} {_32} (fun (_ret: t_Option) -> [ &_30 <- _ret ] s3) - | s3 = bb15 ] - | bb15 = s0 + | s3 = bb12 ] + | bb12 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_Some ([%#soption'1] (3: Int32.t)) ] s1'0 @@ -3127,22 +3119,22 @@ module M_option__take_if [#"option.rs" 226 0 226 16] | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_43 <- _const ] s1 ] | s1 = eq {_30} {_43} (fun (_ret: bool) -> [ &_28 <- _ret ] s2) - | s2 = bb16 ] - | bb16 = any [ br0 -> {_28 = false} (! bb17) | br1 -> {_28} (! bb19) ] - | bb19 = s0 + | s2 = bb13 ] + | bb13 = any [ br0 -> {_28 = false} (! bb15) | br1 -> {_28} (! bb14) ] + | bb14 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_None ] s1'0 | s1'0 = [ &_0'0 <- _1 ] s2'0 | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_42 <- _const ] s1 ] | s1 = eq {some} {_42} (fun (_ret: bool) -> [ &_37 <- _ret ] s2) - | s2 = bb20 ] - | bb20 = any [ br0 -> {_37 = false} (! bb21) | br1 -> {_37} (! bb23) ] - | bb23 = return''0 {_0} - | bb21 = {[%#soption'2] false} any - | bb17 = {[%#soption'3] false} any - | bb12 = {[%#soption'4] false} any + | s2 = bb16 ] + | bb16 = any [ br0 -> {_37 = false} (! bb18) | br1 -> {_37} (! bb17) ] + | bb17 = return''0 {_0} + | bb18 = {[%#soption'2] false} any + | bb15 = {[%#soption'3] false} any + | bb11 = {[%#soption'4] false} any | bb8 = {[%#soption'5] false} any - | bb3 = {[%#soption'6] false} any ] + | bb4 = {[%#soption'6] false} any ] [ & _0: () = Any.any_l () | & none: t_Option = Any.any_l () | & some: t_Option = Any.any_l () @@ -3172,14 +3164,14 @@ module M_option__copied_cloned [#"option.rs" 243 0 243 22] let%span soption'1 = "option.rs" 251 47 251 48 let%span soption'2 = "option.rs" 254 47 254 48 let%span soption'3 = "option.rs" 256 47 256 48 - let%span soption'4 = "option.rs" 256 12 256 48 - let%span soption'5 = "option.rs" 255 12 255 44 - let%span soption'6 = "option.rs" 254 12 254 48 - let%span soption'7 = "option.rs" 253 12 253 44 - let%span soption'8 = "option.rs" 251 12 251 48 - let%span soption'9 = "option.rs" 250 12 250 44 - let%span soption'10 = "option.rs" 249 12 249 48 - let%span soption'11 = "option.rs" 248 12 248 44 + let%span soption'4 = "option.rs" 256 4 256 49 + let%span soption'5 = "option.rs" 255 4 255 45 + let%span soption'6 = "option.rs" 254 4 254 49 + let%span soption'7 = "option.rs" 253 4 253 45 + let%span soption'8 = "option.rs" 251 4 251 49 + let%span soption'9 = "option.rs" 250 4 250 45 + let%span soption'10 = "option.rs" 249 4 249 49 + let%span soption'11 = "option.rs" 248 4 248 45 let%span soption'12 = "../../creusot-contracts/src/std/option.rs" 86 26 86 58 let%span soption'13 = "../../creusot-contracts/src/std/option.rs" 88 20 88 89 let%span soption'14 = "../../creusot-contracts/src/std/option.rs" 497 26 500 17 @@ -3339,68 +3331,68 @@ module M_option__copied_cloned [#"option.rs" 243 0 243 22] | s3 = bb1 ] | bb1 = s0 [ s0 = copied {_7} (fun (_ret: t_Option) -> [ &_6 <- _ret ] s1) | s1 = bb2 ] | bb2 = s0 [ s0 = is_none {_6} (fun (_ret: bool) -> [ &_4 <- _ret ] s1) | s1 = bb3 ] - | bb3 = any [ br0 -> {_4 = false} (! bb4) | br1 -> {_4} (! bb6) ] - | bb6 = s0 [ s0 = as_ref {some} (fun (_ret: t_Option'0) -> [ &_14 <- _ret ] s1) | s1 = bb7 ] - | bb7 = s0 [ s0 = copied {_14} (fun (_ret: t_Option) -> [ &_13 <- _ret ] s1) | s1 = bb8 ] - | bb8 = s0 [ s0 = unwrap {_13} (fun (_ret: Int32.t) -> [ &_12 <- _ret ] s1) | s1 = bb9 ] - | bb9 = s0 + | bb3 = any [ br0 -> {_4 = false} (! bb5) | br1 -> {_4} (! bb4) ] + | bb4 = s0 [ s0 = as_ref {some} (fun (_ret: t_Option'0) -> [ &_14 <- _ret ] s1) | s1 = bb6 ] + | bb6 = s0 [ s0 = copied {_14} (fun (_ret: t_Option) -> [ &_13 <- _ret ] s1) | s1 = bb7 ] + | bb7 = s0 [ s0 = unwrap {_13} (fun (_ret: Int32.t) -> [ &_12 <- _ret ] s1) | s1 = bb8 ] + | bb8 = s0 [ s0 = [ &_11 <- _12 = ([%#soption'0] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_11 = false} (! bb10) | br1 -> {_11} (! bb12) ] ] - | bb12 = s0 + | s1 = any [ br0 -> {_11 = false} (! bb10) | br1 -> {_11} (! bb9) ] ] + | bb9 = s0 [ s0 = MutBorrow.borrow_mut {none} (fun (_ret: MutBorrow.t t_Option) -> [ &_22 <- _ret ] [ &none <- _ret.final ] s1) | s1 = as_mut {_22} (fun (_ret: t_Option'1) -> [ &_21 <- _ret ] s2) - | s2 = bb13 ] - | bb13 = s0 [ s0 = copied'0 {_21} (fun (_ret: t_Option) -> [ &_20 <- _ret ] s1) | s1 = bb14 ] - | bb14 = s0 [ s0 = is_none {_20} (fun (_ret: bool) -> [ &_18 <- _ret ] s1) | s1 = bb15 ] - | bb15 = any [ br0 -> {_18 = false} (! bb16) | br1 -> {_18} (! bb18) ] - | bb18 = s0 + | s2 = bb11 ] + | bb11 = s0 [ s0 = copied'0 {_21} (fun (_ret: t_Option) -> [ &_20 <- _ret ] s1) | s1 = bb12 ] + | bb12 = s0 [ s0 = is_none {_20} (fun (_ret: bool) -> [ &_18 <- _ret ] s1) | s1 = bb13 ] + | bb13 = any [ br0 -> {_18 = false} (! bb15) | br1 -> {_18} (! bb14) ] + | bb14 = s0 [ s0 = MutBorrow.borrow_mut {some} (fun (_ret: MutBorrow.t t_Option) -> [ &_29 <- _ret ] [ &some <- _ret.final ] s1) | s1 = as_mut {_29} (fun (_ret: t_Option'1) -> [ &_28 <- _ret ] s2) - | s2 = bb19 ] - | bb19 = s0 [ s0 = copied'0 {_28} (fun (_ret: t_Option) -> [ &_27 <- _ret ] s1) | s1 = bb20 ] - | bb20 = s0 [ s0 = unwrap {_27} (fun (_ret: Int32.t) -> [ &_26 <- _ret ] s1) | s1 = bb21 ] - | bb21 = s0 + | s2 = bb16 ] + | bb16 = s0 [ s0 = copied'0 {_28} (fun (_ret: t_Option) -> [ &_27 <- _ret ] s1) | s1 = bb17 ] + | bb17 = s0 [ s0 = unwrap {_27} (fun (_ret: Int32.t) -> [ &_26 <- _ret ] s1) | s1 = bb18 ] + | bb18 = s0 [ s0 = [ &_25 <- _26 = ([%#soption'1] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_25 = false} (! bb22) | br1 -> {_25} (! bb24) ] ] - | bb24 = s0 [ s0 = as_ref {none} (fun (_ret: t_Option'0) -> [ &_35 <- _ret ] s1) | s1 = bb25 ] - | bb25 = s0 [ s0 = cloned {_35} (fun (_ret: t_Option) -> [ &_34 <- _ret ] s1) | s1 = bb26 ] - | bb26 = s0 [ s0 = is_none {_34} (fun (_ret: bool) -> [ &_32 <- _ret ] s1) | s1 = bb27 ] - | bb27 = any [ br0 -> {_32 = false} (! bb28) | br1 -> {_32} (! bb30) ] - | bb30 = s0 [ s0 = as_ref {some} (fun (_ret: t_Option'0) -> [ &_42 <- _ret ] s1) | s1 = bb31 ] - | bb31 = s0 [ s0 = cloned {_42} (fun (_ret: t_Option) -> [ &_41 <- _ret ] s1) | s1 = bb32 ] - | bb32 = s0 [ s0 = unwrap {_41} (fun (_ret: Int32.t) -> [ &_40 <- _ret ] s1) | s1 = bb33 ] - | bb33 = s0 + | s1 = any [ br0 -> {_25 = false} (! bb20) | br1 -> {_25} (! bb19) ] ] + | bb19 = s0 [ s0 = as_ref {none} (fun (_ret: t_Option'0) -> [ &_35 <- _ret ] s1) | s1 = bb21 ] + | bb21 = s0 [ s0 = cloned {_35} (fun (_ret: t_Option) -> [ &_34 <- _ret ] s1) | s1 = bb22 ] + | bb22 = s0 [ s0 = is_none {_34} (fun (_ret: bool) -> [ &_32 <- _ret ] s1) | s1 = bb23 ] + | bb23 = any [ br0 -> {_32 = false} (! bb25) | br1 -> {_32} (! bb24) ] + | bb24 = s0 [ s0 = as_ref {some} (fun (_ret: t_Option'0) -> [ &_42 <- _ret ] s1) | s1 = bb26 ] + | bb26 = s0 [ s0 = cloned {_42} (fun (_ret: t_Option) -> [ &_41 <- _ret ] s1) | s1 = bb27 ] + | bb27 = s0 [ s0 = unwrap {_41} (fun (_ret: Int32.t) -> [ &_40 <- _ret ] s1) | s1 = bb28 ] + | bb28 = s0 [ s0 = [ &_39 <- _40 = ([%#soption'2] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_39 = false} (! bb34) | br1 -> {_39} (! bb36) ] ] - | bb36 = s0 + | s1 = any [ br0 -> {_39 = false} (! bb30) | br1 -> {_39} (! bb29) ] ] + | bb29 = s0 [ s0 = MutBorrow.borrow_mut {none} (fun (_ret: MutBorrow.t t_Option) -> [ &_50 <- _ret ] [ &none <- _ret.final ] s1) | s1 = as_mut {_50} (fun (_ret: t_Option'1) -> [ &_49 <- _ret ] s2) - | s2 = bb37 ] - | bb37 = s0 [ s0 = cloned'0 {_49} (fun (_ret: t_Option) -> [ &_48 <- _ret ] s1) | s1 = bb38 ] - | bb38 = s0 [ s0 = is_none {_48} (fun (_ret: bool) -> [ &_46 <- _ret ] s1) | s1 = bb39 ] - | bb39 = any [ br0 -> {_46 = false} (! bb40) | br1 -> {_46} (! bb42) ] - | bb42 = s0 + | s2 = bb31 ] + | bb31 = s0 [ s0 = cloned'0 {_49} (fun (_ret: t_Option) -> [ &_48 <- _ret ] s1) | s1 = bb32 ] + | bb32 = s0 [ s0 = is_none {_48} (fun (_ret: bool) -> [ &_46 <- _ret ] s1) | s1 = bb33 ] + | bb33 = any [ br0 -> {_46 = false} (! bb35) | br1 -> {_46} (! bb34) ] + | bb34 = s0 [ s0 = MutBorrow.borrow_mut {some} (fun (_ret: MutBorrow.t t_Option) -> [ &_57 <- _ret ] [ &some <- _ret.final ] s1) | s1 = as_mut {_57} (fun (_ret: t_Option'1) -> [ &_56 <- _ret ] s2) - | s2 = bb43 ] - | bb43 = s0 [ s0 = cloned'0 {_56} (fun (_ret: t_Option) -> [ &_55 <- _ret ] s1) | s1 = bb44 ] - | bb44 = s0 [ s0 = unwrap {_55} (fun (_ret: Int32.t) -> [ &_54 <- _ret ] s1) | s1 = bb45 ] - | bb45 = s0 + | s2 = bb36 ] + | bb36 = s0 [ s0 = cloned'0 {_56} (fun (_ret: t_Option) -> [ &_55 <- _ret ] s1) | s1 = bb37 ] + | bb37 = s0 [ s0 = unwrap {_55} (fun (_ret: Int32.t) -> [ &_54 <- _ret ] s1) | s1 = bb38 ] + | bb38 = s0 [ s0 = [ &_53 <- _54 = ([%#soption'3] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_53 = false} (! bb46) | br1 -> {_53} (! bb48) ] ] - | bb48 = return''0 {_0} - | bb46 = {[%#soption'4] false} any - | bb40 = {[%#soption'5] false} any - | bb34 = {[%#soption'6] false} any - | bb28 = {[%#soption'7] false} any - | bb22 = {[%#soption'8] false} any - | bb16 = {[%#soption'9] false} any + | s1 = any [ br0 -> {_53 = false} (! bb40) | br1 -> {_53} (! bb39) ] ] + | bb39 = return''0 {_0} + | bb40 = {[%#soption'4] false} any + | bb35 = {[%#soption'5] false} any + | bb30 = {[%#soption'6] false} any + | bb25 = {[%#soption'7] false} any + | bb20 = {[%#soption'8] false} any + | bb15 = {[%#soption'9] false} any | bb10 = {[%#soption'10] false} any - | bb4 = {[%#soption'11] false} any ] + | bb5 = {[%#soption'11] false} any ] [ & _0: () = Any.any_l () | & none: t_Option = Any.any_l () | & some: t_Option = Any.any_l () @@ -3446,14 +3438,14 @@ module M_option__zip_unzip [#"option.rs" 259 0 259 18] let%span soption'4 = "option.rs" 271 52 271 56 let%span soption'5 = "option.rs" 277 33 277 34 let%span soption'6 = "option.rs" 278 33 278 37 - let%span soption'7 = "option.rs" 278 12 278 38 - let%span soption'8 = "option.rs" 277 12 277 35 - let%span soption'9 = "option.rs" 276 12 276 32 - let%span soption'10 = "option.rs" 275 12 275 32 - let%span soption'11 = "option.rs" 268 12 268 54 - let%span soption'12 = "option.rs" 267 12 267 43 - let%span soption'13 = "option.rs" 266 12 266 43 - let%span soption'14 = "option.rs" 265 12 265 43 + let%span soption'7 = "option.rs" 278 4 278 39 + let%span soption'8 = "option.rs" 277 4 277 36 + let%span soption'9 = "option.rs" 276 4 276 33 + let%span soption'10 = "option.rs" 275 4 275 33 + let%span soption'11 = "option.rs" 268 4 268 55 + let%span soption'12 = "option.rs" 267 4 267 44 + let%span soption'13 = "option.rs" 266 4 266 44 + let%span soption'14 = "option.rs" 265 4 265 44 let%span soption'15 = "../../creusot-contracts/src/std/option.rs" 468 26 472 17 let%span soption'16 = "../../creusot-contracts/src/std/option.rs" 24 18 24 67 let%span soption'17 = "../../creusot-contracts/src/std/option.rs" 483 26 486 17 @@ -3599,27 +3591,27 @@ module M_option__zip_unzip [#"option.rs" 259 0 259 18] [ _const_ret (_const: t_Option'1) -> [ &_80 <- _const ] s1 ] | s1 = eq {_8} {_80} (fun (_ret: bool) -> [ &_6 <- _ret ] s2) | s2 = bb2 ] - | bb2 = any [ br0 -> {_6 = false} (! bb3) | br1 -> {_6} (! bb5) ] - | bb5 = s0 [ s0 = zip {none_int} {some_bool} (fun (_ret: t_Option'1) -> [ &_17 <- _ret ] s1) | s1 = bb6 ] - | bb6 = s0 + | bb2 = any [ br0 -> {_6 = false} (! bb4) | br1 -> {_6} (! bb3) ] + | bb3 = s0 [ s0 = zip {none_int} {some_bool} (fun (_ret: t_Option'1) -> [ &_17 <- _ret ] s1) | s1 = bb5 ] + | bb5 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_None'1 ] s1'0 | s1'0 = [ &_0'0 <- _1 ] s2'0 | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option'1 = Any.any_l () | & _1: t_Option'1 = Any.any_l () ] [ _const_ret (_const: t_Option'1) -> [ &_79 <- _const ] s1 ] | s1 = eq {_17} {_79} (fun (_ret: bool) -> [ &_15 <- _ret ] s2) - | s2 = bb7 ] - | bb7 = any [ br0 -> {_15 = false} (! bb8) | br1 -> {_15} (! bb10) ] - | bb10 = s0 [ s0 = zip {some_int} {none_bool} (fun (_ret: t_Option'1) -> [ &_26 <- _ret ] s1) | s1 = bb11 ] - | bb11 = s0 + | s2 = bb6 ] + | bb6 = any [ br0 -> {_15 = false} (! bb8) | br1 -> {_15} (! bb7) ] + | bb7 = s0 [ s0 = zip {some_int} {none_bool} (fun (_ret: t_Option'1) -> [ &_26 <- _ret ] s1) | s1 = bb9 ] + | bb9 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_None'1 ] s1'0 | s1'0 = [ &_0'0 <- _1 ] s2'0 | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option'1 = Any.any_l () | & _1: t_Option'1 = Any.any_l () ] [ _const_ret (_const: t_Option'1) -> [ &_78 <- _const ] s1 ] | s1 = eq {_26} {_78} (fun (_ret: bool) -> [ &_24 <- _ret ] s2) - | s2 = bb12 ] - | bb12 = any [ br0 -> {_24 = false} (! bb13) | br1 -> {_24} (! bb15) ] - | bb15 = s0 [ s0 = zip {some_int} {some_bool} (fun (_ret: t_Option'1) -> [ &_35 <- _ret ] s1) | s1 = bb16 ] - | bb16 = s0 + | s2 = bb10 ] + | bb10 = any [ br0 -> {_24 = false} (! bb12) | br1 -> {_24} (! bb11) ] + | bb11 = s0 [ s0 = zip {some_int} {some_bool} (fun (_ret: t_Option'1) -> [ &_35 <- _ret ] s1) | s1 = bb13 ] + | bb13 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_2 <- { _p0 = ([%#soption'1] (1: Int32.t)); _p1 = ([%#soption'2] true) } ] s1'0 @@ -3629,32 +3621,32 @@ module M_option__zip_unzip [#"option.rs" 259 0 259 18] [ & _0'0: t_Option'1 = Any.any_l () | & _1: t_Option'1 = Any.any_l () | & _2: tuple = Any.any_l () ] [ _const_ret (_const: t_Option'1) -> [ &_77 <- _const ] s1 ] | s1 = eq {_35} {_77} (fun (_ret: bool) -> [ &_33 <- _ret ] s2) - | s2 = bb17 ] - | bb17 = any [ br0 -> {_33 = false} (! bb18) | br1 -> {_33} (! bb20) ] - | bb20 = s0 + | s2 = bb14 ] + | bb14 = any [ br0 -> {_33 = false} (! bb16) | br1 -> {_33} (! bb15) ] + | bb15 = s0 [ s0 = [ &none_zipped <- C_None'1 ] s1 | s1 = [ &_44 <- { _p0 = ([%#soption'3] (1: Int32.t)); _p1 = ([%#soption'4] true) } ] s2 | s2 = [ &some_zipped <- C_Some'1 _44 ] s3 | s3 = unzip {none_zipped} (fun (_ret: tuple'0) -> [ &none_unzip <- _ret ] s4) - | s4 = bb21 ] - | bb21 = s0 [ s0 = unzip {some_zipped} (fun (_ret: tuple'0) -> [ &some_unzip <- _ret ] s1) | s1 = bb22 ] - | bb22 = s0 + | s4 = bb17 ] + | bb17 = s0 [ s0 = unzip {some_zipped} (fun (_ret: tuple'0) -> [ &some_unzip <- _ret ] s1) | s1 = bb18 ] + | bb18 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_None ] s1'0 | s1'0 = [ &_0'0 <- _1 ] s2'0 | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_76 <- _const ] s1 ] | s1 = eq'0 {none_unzip._p0'0} {_76} (fun (_ret: bool) -> [ &_50 <- _ret ] s2) - | s2 = bb23 ] - | bb23 = any [ br0 -> {_50 = false} (! bb24) | br1 -> {_50} (! bb26) ] - | bb26 = s0 + | s2 = bb19 ] + | bb19 = any [ br0 -> {_50 = false} (! bb21) | br1 -> {_50} (! bb20) ] + | bb20 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_None'0 ] s1'0 | s1'0 = [ &_0'0 <- _1 ] s2'0 | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option'0 = Any.any_l () | & _1: t_Option'0 = Any.any_l () ] [ _const_ret (_const: t_Option'0) -> [ &_75 <- _const ] s1 ] | s1 = eq'1 {none_unzip._p1'0} {_75} (fun (_ret: bool) -> [ &_56 <- _ret ] s2) - | s2 = bb27 ] - | bb27 = any [ br0 -> {_56 = false} (! bb28) | br1 -> {_56} (! bb30) ] - | bb30 = s0 + | s2 = bb22 ] + | bb22 = any [ br0 -> {_56 = false} (! bb24) | br1 -> {_56} (! bb23) ] + | bb23 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_Some ([%#soption'5] (1: Int32.t)) ] s1'0 @@ -3662,9 +3654,9 @@ module M_option__zip_unzip [#"option.rs" 259 0 259 18] | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_74 <- _const ] s1 ] | s1 = eq'0 {some_unzip._p0'0} {_74} (fun (_ret: bool) -> [ &_62 <- _ret ] s2) - | s2 = bb31 ] - | bb31 = any [ br0 -> {_62 = false} (! bb32) | br1 -> {_62} (! bb34) ] - | bb34 = s0 + | s2 = bb25 ] + | bb25 = any [ br0 -> {_62 = false} (! bb27) | br1 -> {_62} (! bb26) ] + | bb26 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_Some'0 ([%#soption'6] true) ] s1'0 @@ -3672,17 +3664,17 @@ module M_option__zip_unzip [#"option.rs" 259 0 259 18] | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option'0 = Any.any_l () | & _1: t_Option'0 = Any.any_l () ] [ _const_ret (_const: t_Option'0) -> [ &_73 <- _const ] s1 ] | s1 = eq'1 {some_unzip._p1'0} {_73} (fun (_ret: bool) -> [ &_68 <- _ret ] s2) - | s2 = bb35 ] - | bb35 = any [ br0 -> {_68 = false} (! bb36) | br1 -> {_68} (! bb38) ] - | bb38 = return''0 {_0} - | bb36 = {[%#soption'7] false} any - | bb32 = {[%#soption'8] false} any - | bb28 = {[%#soption'9] false} any - | bb24 = {[%#soption'10] false} any - | bb18 = {[%#soption'11] false} any - | bb13 = {[%#soption'12] false} any + | s2 = bb28 ] + | bb28 = any [ br0 -> {_68 = false} (! bb30) | br1 -> {_68} (! bb29) ] + | bb29 = return''0 {_0} + | bb30 = {[%#soption'7] false} any + | bb27 = {[%#soption'8] false} any + | bb24 = {[%#soption'9] false} any + | bb21 = {[%#soption'10] false} any + | bb16 = {[%#soption'11] false} any + | bb12 = {[%#soption'12] false} any | bb8 = {[%#soption'13] false} any - | bb3 = {[%#soption'14] false} any ] + | bb4 = {[%#soption'14] false} any ] [ & _0: () = Any.any_l () | & none_int: t_Option = Any.any_l () | & none_bool: t_Option'0 = Any.any_l () @@ -3719,9 +3711,9 @@ module M_option__transpose [#"option.rs" 281 0 281 18] let%span soption'0 = "option.rs" 284 55 284 59 let%span soption'1 = "option.rs" 287 49 287 50 let%span soption'2 = "option.rs" 288 49 288 53 - let%span soption'3 = "option.rs" 288 12 288 53 - let%span soption'4 = "option.rs" 287 12 287 51 - let%span soption'5 = "option.rs" 286 12 286 45 + let%span soption'3 = "option.rs" 288 4 288 54 + let%span soption'4 = "option.rs" 287 4 287 52 + let%span soption'5 = "option.rs" 286 4 286 46 let%span soption'6 = "../../creusot-contracts/src/std/option.rs" 557 26 561 17 let%span soption'7 = "../../creusot-contracts/src/std/option.rs" 24 18 24 67 let%span soption'8 = "../../creusot-contracts/src/std/option.rs" 14 8 17 9 @@ -3801,10 +3793,10 @@ module M_option__transpose [#"option.rs" 281 0 281 18] [ _const_ret (_const: t_Option'0) -> [ &_31 <- _const ] s1 ] | s1 = eq {_9} {_31} (fun (_ret: bool) -> [ &_7 <- _ret ] s2) | s2 = bb3 ] - | bb3 = any [ br0 -> {_7 = false} (! bb4) | br1 -> {_7} (! bb6) ] - | bb6 = s0 [ s0 = transpose {some_ok} (fun (_ret: t_Result'0) -> [ &_19 <- _ret ] s1) | s1 = bb7 ] - | bb7 = s0 [ s0 = unwrap {_19} (fun (_ret: t_Option'0) -> [ &_18 <- _ret ] s1) | s1 = bb8 ] - | bb8 = s0 + | bb3 = any [ br0 -> {_7 = false} (! bb5) | br1 -> {_7} (! bb4) ] + | bb4 = s0 [ s0 = transpose {some_ok} (fun (_ret: t_Result'0) -> [ &_19 <- _ret ] s1) | s1 = bb6 ] + | bb6 = s0 [ s0 = unwrap {_19} (fun (_ret: t_Option'0) -> [ &_18 <- _ret ] s1) | s1 = bb7 ] + | bb7 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_Some'0 ([%#soption'1] (1: Int32.t)) ] s1'0 @@ -3812,15 +3804,15 @@ module M_option__transpose [#"option.rs" 281 0 281 18] | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option'0 = Any.any_l () | & _1: t_Option'0 = Any.any_l () ] [ _const_ret (_const: t_Option'0) -> [ &_30 <- _const ] s1 ] | s1 = eq {_18} {_30} (fun (_ret: bool) -> [ &_16 <- _ret ] s2) - | s2 = bb9 ] - | bb9 = any [ br0 -> {_16 = false} (! bb10) | br1 -> {_16} (! bb12) ] - | bb12 = s0 [ s0 = transpose {some_err} (fun (_ret: t_Result'0) -> [ &_27 <- _ret ] s1) | s1 = bb13 ] - | bb13 = s0 [ s0 = unwrap_err {_27} (fun (_ret: bool) -> [ &_26 <- _ret ] s1) | s1 = bb14 ] - | bb14 = s0 [ s0 = [ &_25 <- _26 ] s1 | s1 = any [ br0 -> {_25 = false} (! bb15) | br1 -> {_25} (! bb17) ] ] - | bb17 = return''0 {_0} - | bb15 = {[%#soption'3] false} any + | s2 = bb8 ] + | bb8 = any [ br0 -> {_16 = false} (! bb10) | br1 -> {_16} (! bb9) ] + | bb9 = s0 [ s0 = transpose {some_err} (fun (_ret: t_Result'0) -> [ &_27 <- _ret ] s1) | s1 = bb11 ] + | bb11 = s0 [ s0 = unwrap_err {_27} (fun (_ret: bool) -> [ &_26 <- _ret ] s1) | s1 = bb12 ] + | bb12 = s0 [ s0 = [ &_25 <- _26 ] s1 | s1 = any [ br0 -> {_25 = false} (! bb14) | br1 -> {_25} (! bb13) ] ] + | bb13 = return''0 {_0} + | bb14 = {[%#soption'3] false} any | bb10 = {[%#soption'4] false} any - | bb4 = {[%#soption'5] false} any ] + | bb5 = {[%#soption'5] false} any ] [ & _0: () = Any.any_l () | & none: t_Option = Any.any_l () | & some_ok: t_Option = Any.any_l () @@ -3842,9 +3834,9 @@ end module M_option__flatten [#"option.rs" 291 0 291 16] let%span soption = "option.rs" 296 45 296 46 let%span soption'0 = "option.rs" 297 38 297 39 - let%span soption'1 = "option.rs" 297 12 297 39 - let%span soption'2 = "option.rs" 295 12 295 35 - let%span soption'3 = "option.rs" 293 12 293 35 + let%span soption'1 = "option.rs" 297 4 297 40 + let%span soption'2 = "option.rs" 295 4 295 36 + let%span soption'3 = "option.rs" 293 4 293 36 let%span soption'4 = "../../creusot-contracts/src/std/option.rs" 573 26 573 57 let%span soption'5 = "../../creusot-contracts/src/std/option.rs" 574 26 574 62 let%span soption'6 = "../../creusot-contracts/src/std/option.rs" 79 26 79 51 @@ -3877,27 +3869,27 @@ module M_option__flatten [#"option.rs" 291 0 291 16] [ bb0 = s0 [ s0 = [ &opt <- C_None'0 ] s1 | s1 = flatten {opt} (fun (_ret: t_Option) -> [ &_5 <- _ret ] s2) | s2 = bb1 ] | bb1 = s0 [ s0 = is_none {_5} (fun (_ret: bool) -> [ &_3 <- _ret ] s1) | s1 = bb2 ] - | bb2 = any [ br0 -> {_3 = false} (! bb3) | br1 -> {_3} (! bb5) ] - | bb5 = s0 + | bb2 = any [ br0 -> {_3 = false} (! bb4) | br1 -> {_3} (! bb3) ] + | bb3 = s0 [ s0 = [ &_9 <- C_None ] s1 | s1 = [ &opt'0 <- C_Some'0 _9 ] s2 | s2 = flatten {opt'0} (fun (_ret: t_Option) -> [ &_13 <- _ret ] s3) - | s3 = bb6 ] - | bb6 = s0 [ s0 = is_none {_13} (fun (_ret: bool) -> [ &_11 <- _ret ] s1) | s1 = bb7 ] - | bb7 = any [ br0 -> {_11 = false} (! bb8) | br1 -> {_11} (! bb10) ] - | bb10 = s0 + | s3 = bb5 ] + | bb5 = s0 [ s0 = is_none {_13} (fun (_ret: bool) -> [ &_11 <- _ret ] s1) | s1 = bb6 ] + | bb6 = any [ br0 -> {_11 = false} (! bb8) | br1 -> {_11} (! bb7) ] + | bb7 = s0 [ s0 = [ &_17 <- C_Some ([%#soption] (1: Int32.t)) ] s1 | s1 = [ &opt'1 <- C_Some'0 _17 ] s2 | s2 = flatten {opt'1} (fun (_ret: t_Option) -> [ &_21 <- _ret ] s3) - | s3 = bb11 ] - | bb11 = s0 [ s0 = unwrap {_21} (fun (_ret: Int32.t) -> [ &_20 <- _ret ] s1) | s1 = bb12 ] - | bb12 = s0 + | s3 = bb9 ] + | bb9 = s0 [ s0 = unwrap {_21} (fun (_ret: Int32.t) -> [ &_20 <- _ret ] s1) | s1 = bb10 ] + | bb10 = s0 [ s0 = [ &_19 <- _20 = ([%#soption'0] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_19 = false} (! bb13) | br1 -> {_19} (! bb15) ] ] - | bb15 = return''0 {_0} - | bb13 = {[%#soption'1] false} any + | s1 = any [ br0 -> {_19 = false} (! bb12) | br1 -> {_19} (! bb11) ] ] + | bb11 = return''0 {_0} + | bb12 = {[%#soption'1] false} any | bb8 = {[%#soption'2] false} any - | bb3 = {[%#soption'3] false} any ] + | bb4 = {[%#soption'3] false} any ] [ & _0: () = Any.any_l () | & opt: t_Option'0 = Any.any_l () | & _3: bool = Any.any_l () @@ -3922,62 +3914,58 @@ module M_option__resolve [#"option.rs" 300 0 300 16] let%span soption'5 = "option.rs" 313 16 313 17 let%span soption'6 = "option.rs" 316 17 316 18 let%span soption'7 = "option.rs" 316 27 316 28 - let%span soption'8 = "option.rs" 316 12 316 28 - let%span soption'9 = "option.rs" 319 16 319 17 - let%span soption'10 = "option.rs" 322 17 322 18 - let%span soption'11 = "option.rs" 324 16 324 17 - let%span soption'12 = "option.rs" 325 16 325 17 - let%span soption'13 = "option.rs" 329 17 329 18 - let%span soption'14 = "option.rs" 329 27 329 28 - let%span soption'15 = "option.rs" 329 12 329 28 - let%span soption'16 = "option.rs" 332 16 332 17 - let%span soption'17 = "option.rs" 333 16 333 17 - let%span soption'18 = "option.rs" 336 12 336 13 - let%span soption'19 = "option.rs" 337 17 337 18 - let%span soption'20 = "option.rs" 337 27 337 28 - let%span soption'21 = "option.rs" 337 12 337 28 - let%span soption'22 = "option.rs" 340 16 340 17 - let%span soption'23 = "option.rs" 341 16 341 17 - let%span soption'24 = "option.rs" 344 12 344 13 - let%span soption'25 = "option.rs" 345 17 345 18 - let%span soption'26 = "option.rs" 345 27 345 28 - let%span soption'27 = "option.rs" 345 12 345 28 - let%span soption'28 = "option.rs" 348 16 348 17 - let%span soption'29 = "option.rs" 351 17 351 18 - let%span soption'30 = "option.rs" 354 16 354 17 - let%span soption'31 = "option.rs" 357 17 357 18 - let%span soption'32 = "option.rs" 360 17 360 18 - let%span soption'33 = "option.rs" 360 12 360 18 - let%span soption'34 = "option.rs" 357 12 357 18 - let%span soption'35 = "option.rs" 351 12 351 18 - let%span soption'36 = "option.rs" 345 12 345 28 - let%span soption'37 = "option.rs" 337 12 337 28 - let%span soption'38 = "option.rs" 329 12 329 28 - let%span soption'39 = "option.rs" 322 12 322 18 - let%span soption'40 = "option.rs" 316 12 316 28 - let%span soption'41 = "option.rs" 311 12 311 18 - let%span soption'42 = "option.rs" 305 12 305 18 - let%span soption'43 = "option.rs" 304 12 304 37 - let%span soption'44 = "option.rs" 304 32 304 36 - let%span soption'45 = "../../creusot-contracts/src/std/option.rs" 62 27 65 17 - let%span soption'46 = "../../creusot-contracts/src/std/option.rs" 66 26 69 17 - let%span soption'47 = "../../creusot-contracts/src/std/option.rs" 304 26 304 75 - let%span soption'48 = "../../creusot-contracts/src/std/option.rs" 305 26 305 76 - let%span soption'49 = "../../creusot-contracts/src/std/option.rs" 351 26 351 57 - let%span soption'50 = "../../creusot-contracts/src/std/option.rs" 352 26 352 76 - let%span soption'51 = "option.rs" 321 27 321 32 - let%span soption'52 = "../../creusot-contracts/src/std/option.rs" 330 27 333 17 - let%span soption'53 = "../../creusot-contracts/src/std/option.rs" 334 26 340 17 - let%span soption'54 = "../../creusot-contracts/src/std/option.rs" 375 26 380 17 - let%span soption'55 = "../../creusot-contracts/src/std/option.rs" 389 26 392 17 - let%span soption'56 = "../../creusot-contracts/src/std/option.rs" 393 26 393 68 - let%span soption'57 = "../../creusot-contracts/src/std/option.rs" 403 26 406 17 - let%span soption'58 = "../../creusot-contracts/src/std/option.rs" 468 26 472 17 - let%span soption'59 = "../../creusot-contracts/src/std/option.rs" 527 26 530 17 - let%span soption'60 = "../../creusot-contracts/src/std/option.rs" 540 26 544 17 - let%span soption'61 = "option.rs" 304 28 304 31 - let%span soption'62 = "../../creusot-contracts/src/std/option.rs" 772 8 775 9 - let%span soption'63 = "option.rs" 321 23 321 26 + let%span soption'8 = "option.rs" 319 16 319 17 + let%span soption'9 = "option.rs" 322 17 322 18 + let%span soption'10 = "option.rs" 324 16 324 17 + let%span soption'11 = "option.rs" 325 16 325 17 + let%span soption'12 = "option.rs" 329 17 329 18 + let%span soption'13 = "option.rs" 329 27 329 28 + let%span soption'14 = "option.rs" 332 16 332 17 + let%span soption'15 = "option.rs" 333 16 333 17 + let%span soption'16 = "option.rs" 336 12 336 13 + let%span soption'17 = "option.rs" 337 17 337 18 + let%span soption'18 = "option.rs" 337 27 337 28 + let%span soption'19 = "option.rs" 340 16 340 17 + let%span soption'20 = "option.rs" 341 16 341 17 + let%span soption'21 = "option.rs" 344 12 344 13 + let%span soption'22 = "option.rs" 345 17 345 18 + let%span soption'23 = "option.rs" 345 27 345 28 + let%span soption'24 = "option.rs" 348 16 348 17 + let%span soption'25 = "option.rs" 351 17 351 18 + let%span soption'26 = "option.rs" 354 16 354 17 + let%span soption'27 = "option.rs" 357 17 357 18 + let%span soption'28 = "option.rs" 360 17 360 18 + let%span soption'29 = "option.rs" 360 4 360 19 + let%span soption'30 = "option.rs" 357 4 357 19 + let%span soption'31 = "option.rs" 351 4 351 19 + let%span soption'32 = "option.rs" 345 4 345 29 + let%span soption'33 = "option.rs" 337 4 337 29 + let%span soption'34 = "option.rs" 329 4 329 29 + let%span soption'35 = "option.rs" 322 4 322 19 + let%span soption'36 = "option.rs" 316 4 316 29 + let%span soption'37 = "option.rs" 311 4 311 19 + let%span soption'38 = "option.rs" 305 4 305 19 + let%span soption'39 = "option.rs" 304 4 304 38 + let%span soption'40 = "option.rs" 304 32 304 36 + let%span soption'41 = "../../creusot-contracts/src/std/option.rs" 62 27 65 17 + let%span soption'42 = "../../creusot-contracts/src/std/option.rs" 66 26 69 17 + let%span soption'43 = "../../creusot-contracts/src/std/option.rs" 304 26 304 75 + let%span soption'44 = "../../creusot-contracts/src/std/option.rs" 305 26 305 76 + let%span soption'45 = "../../creusot-contracts/src/std/option.rs" 351 26 351 57 + let%span soption'46 = "../../creusot-contracts/src/std/option.rs" 352 26 352 76 + let%span soption'47 = "option.rs" 321 27 321 32 + let%span soption'48 = "../../creusot-contracts/src/std/option.rs" 330 27 333 17 + let%span soption'49 = "../../creusot-contracts/src/std/option.rs" 334 26 340 17 + let%span soption'50 = "../../creusot-contracts/src/std/option.rs" 375 26 380 17 + let%span soption'51 = "../../creusot-contracts/src/std/option.rs" 389 26 392 17 + let%span soption'52 = "../../creusot-contracts/src/std/option.rs" 393 26 393 68 + let%span soption'53 = "../../creusot-contracts/src/std/option.rs" 403 26 406 17 + let%span soption'54 = "../../creusot-contracts/src/std/option.rs" 468 26 472 17 + let%span soption'55 = "../../creusot-contracts/src/std/option.rs" 527 26 530 17 + let%span soption'56 = "../../creusot-contracts/src/std/option.rs" 540 26 544 17 + let%span soption'57 = "option.rs" 304 28 304 31 + let%span soption'58 = "../../creusot-contracts/src/std/option.rs" 772 8 775 9 + let%span soption'59 = "option.rs" 321 23 321 26 let%span snum = "../../creusot-contracts/src/std/num.rs" 39 26 39 41 let%span sops = "../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../creusot-contracts/src/std/ops.rs" 164 14 164 100 @@ -4008,7 +3996,7 @@ module M_option__resolve [#"option.rs" 300 0 300 16] let rec closure1 [#"option.rs" 304 28 304 31] [@coma:extspec] (self: ()) (_0: MutBorrow.t Int32.t) (return' (x: bool)) = bb0 - [ bb0 = s0 [ s0 = -{resolve'0 _2}- s1 | s1 = [ &_0'0 <- [%#soption'44] true ] s2 | s2 = return' {_0'0} ] ] + [ bb0 = s0 [ s0 = -{resolve'0 _2}- s1 | s1 = [ &_0'0 <- [%#soption'40] true ] s2 | s2 = return' {_0'0} ] ] [ & _0'0: bool = Any.any_l () | & _2: MutBorrow.t Int32.t = _0 ] meta "rewrite_def" predicate closure1'pre @@ -4016,22 +4004,22 @@ module M_option__resolve [#"option.rs" 300 0 300 16] meta "rewrite_def" predicate closure1'post'return' predicate precondition [@inline:trivial] (self: ()) (args: MutBorrow.t Int32.t) = - [%#soption'61] let _0 = args in closure1'pre self _0 + [%#soption'57] let _0 = args in closure1'pre self _0 meta "rewrite_def" predicate precondition predicate postcondition_once [@inline:trivial] (self: ()) (args: MutBorrow.t Int32.t) (result: bool) = - [%#soption'61] let _0 = args in closure1'post'return' self _0 result + [%#soption'57] let _0 = args in closure1'post'return' self _0 result meta "rewrite_def" predicate postcondition_once let rec is_some_and (self_: t_Option) (f: ()) (return' (x: bool)) = - {[@expl:is_some_and requires] [%#soption'45] match self_ with + {[@expl:is_some_and requires] [%#soption'41] match self_ with | C_None -> true | C_Some t -> precondition f t end} any - [ return''0 (result: bool) -> {[%#soption'46] match self_ with + [ return''0 (result: bool) -> {[%#soption'42] match self_ with | C_None -> result = false | C_Some t -> postcondition_once f t result end} @@ -4044,7 +4032,7 @@ module M_option__resolve [#"option.rs" 300 0 300 16] meta "rewrite_def" predicate resolve'1 predicate resolve'2 [@inline:trivial] (self: t_Option'0) = - [%#soption'62] match self with + [%#soption'58] match self with | C_Some'0 x -> resolve'1 x | C_None'0 -> true end @@ -4052,7 +4040,7 @@ module M_option__resolve [#"option.rs" 300 0 300 16] meta "rewrite_def" predicate resolve'2 predicate resolve'3 [@inline:trivial] (self: t_Option) = - [%#soption'62] match self with + [%#soption'58] match self with | C_Some x -> resolve'0 x | C_None -> true end @@ -4060,13 +4048,13 @@ module M_option__resolve [#"option.rs" 300 0 300 16] meta "rewrite_def" predicate resolve'3 let rec and (self_: t_Option) (optb: t_Option'0) (return' (x: t_Option'0)) = any - [ return''0 (result: t_Option'0) -> {[%#soption'47] self_ = C_None -> result = C_None'0 /\ resolve'2 optb} - {[%#soption'48] self_ = C_None \/ result = optb /\ resolve'3 self_} + [ return''0 (result: t_Option'0) -> {[%#soption'43] self_ = C_None -> result = C_None'0 /\ resolve'2 optb} + {[%#soption'44] self_ = C_None \/ result = optb /\ resolve'3 self_} (! return' {result}) ] let rec or (self_: t_Option) (optb: t_Option) (return' (x: t_Option)) = any - [ return''0 (result: t_Option) -> {[%#soption'49] self_ = C_None -> result = optb} - {[%#soption'50] self_ = C_None \/ result = self_ /\ resolve'3 optb} + [ return''0 (result: t_Option) -> {[%#soption'45] self_ = C_None -> result = optb} + {[%#soption'46] self_ = C_None \/ result = self_ /\ resolve'3 optb} (! return' {result}) ] predicate resolve'4 [@inline:trivial] (_0: t_Option) = resolve'3 _0 @@ -4075,29 +4063,29 @@ module M_option__resolve [#"option.rs" 300 0 300 16] let rec closure0 [#"option.rs" 321 23 321 26] [@coma:extspec] (self: ()) (_0: MutBorrow.t Int32.t) (return' (x: bool)) = bb0 - [ bb0 = s0 [ s0 = [ &_0'0 <- [%#soption'51] false ] s1 | s1 = return' {_0'0} ] ] [ & _0'0: bool = Any.any_l () ] + [ bb0 = s0 [ s0 = [ &_0'0 <- [%#soption'47] false ] s1 | s1 = return' {_0'0} ] ] [ & _0'0: bool = Any.any_l () ] meta "rewrite_def" predicate closure0'pre meta "rewrite_def" predicate closure0'post'return' predicate precondition'0 [@inline:trivial] (self: ()) (args: MutBorrow.t Int32.t) = - [%#soption'63] let _0 = args in closure0'pre self _0 + [%#soption'59] let _0 = args in closure0'pre self _0 meta "rewrite_def" predicate precondition'0 predicate postcondition_once'0 [@inline:trivial] (self: ()) (args: MutBorrow.t Int32.t) (result: bool) = - [%#soption'63] let _0 = args in closure0'post'return' self _0 result + [%#soption'59] let _0 = args in closure0'post'return' self _0 result meta "rewrite_def" predicate postcondition_once'0 let rec filter (self_: t_Option) (predicate': ()) (return' (x: t_Option)) = - {[@expl:filter requires] [%#soption'52] match self_ with + {[@expl:filter requires] [%#soption'48] match self_ with | C_None -> true | C_Some t -> precondition'0 predicate' t end} any - [ return''0 (result: t_Option) -> {[%#soption'53] match self_ with + [ return''0 (result: t_Option) -> {[%#soption'49] match self_ with | C_None -> result = C_None | C_Some t -> match result with | C_None -> postcondition_once'0 predicate' t false /\ resolve'0 t @@ -4109,7 +4097,7 @@ module M_option__resolve [#"option.rs" 300 0 300 16] type tuple = { _p0: t_Option; _p1: t_Option } let rec xor (self_: t_Option) (optb: t_Option) (return' (x: t_Option)) = any - [ return''0 (result: t_Option) -> {[%#soption'54] match { _p0 = self_; _p1 = optb } with + [ return''0 (result: t_Option) -> {[%#soption'50] match { _p0 = self_; _p1 = optb } with | {_p0 = C_None; _p1 = C_None} -> result = C_None | {_p0 = C_Some t1; _p1 = C_Some t2} -> result = C_None /\ resolve'0 t1 /\ resolve'0 t2 | {_p0 = C_Some t; _p1 = C_None} -> result = C_Some t @@ -4119,11 +4107,11 @@ module M_option__resolve [#"option.rs" 300 0 300 16] let rec insert (self_: MutBorrow.t t_Option) (value: MutBorrow.t Int32.t) (return' (x: MutBorrow.t (MutBorrow.t Int32.t))) = any - [ return''0 (result: MutBorrow.t (MutBorrow.t Int32.t)) -> {[%#soption'55] match self_.current with + [ return''0 (result: MutBorrow.t (MutBorrow.t Int32.t)) -> {[%#soption'51] match self_.current with | C_Some t -> resolve'0 t | C_None -> true end} - {[%#soption'56] result.current = value /\ self_.final = C_Some (result.final)} + {[%#soption'52] result.current = value /\ self_.final = C_Some (result.final)} (! return' {result}) ] predicate resolve'5 [@inline:trivial] (self: MutBorrow.t (MutBorrow.t Int32.t)) = @@ -4137,7 +4125,7 @@ module M_option__resolve [#"option.rs" 300 0 300 16] let rec get_or_insert (self_: MutBorrow.t t_Option) (value: MutBorrow.t Int32.t) (return' (x: MutBorrow.t (MutBorrow.t Int32.t))) = any - [ return''0 (result: MutBorrow.t (MutBorrow.t Int32.t)) -> {[%#soption'57] match self_.current with + [ return''0 (result: MutBorrow.t (MutBorrow.t Int32.t)) -> {[%#soption'53] match self_.current with | C_None -> result.current = value /\ self_.final = C_Some (result.final) | C_Some _ -> self_.current = C_Some (result.current) /\ self_.final = C_Some (result.final) /\ resolve'0 value end} @@ -4150,7 +4138,7 @@ module M_option__resolve [#"option.rs" 300 0 300 16] type tuple'1 = { _p0'1: t_Option; _p1'1: t_Option'0 } let rec zip (self_: t_Option) (other: t_Option'0) (return' (x: t_Option'1)) = any - [ return''0 (result: t_Option'1) -> {[%#soption'58] match { _p0'1 = self_; _p1'1 = other } with + [ return''0 (result: t_Option'1) -> {[%#soption'54] match { _p0'1 = self_; _p1'1 = other } with | {_p0'1 = C_None} -> result = C_None'1 /\ resolve'2 other | {_p1'1 = C_None'0} -> result = C_None'1 /\ resolve'3 self_ | {_p0'1 = C_Some t; _p1'1 = C_Some'0 u} -> result = C_Some'1 { _p0'0 = t; _p1'0 = u } @@ -4166,7 +4154,7 @@ module M_option__resolve [#"option.rs" 300 0 300 16] meta "rewrite_def" predicate resolve'8 predicate resolve'9 [@inline:trivial] (self: t_Option'1) = - [%#soption'62] match self with + [%#soption'58] match self with | C_Some'1 x -> resolve'8 x | C_None'1 -> true end @@ -4178,7 +4166,7 @@ module M_option__resolve [#"option.rs" 300 0 300 16] meta "rewrite_def" predicate resolve'10 let rec copied (self_: t_Option) (return' (x: t_Option'0)) = any - [ return''0 (result: t_Option'0) -> {[%#soption'59] match self_ with + [ return''0 (result: t_Option'0) -> {[%#soption'55] match self_ with | C_None -> result = C_None'0 | C_Some s -> result = C_Some'0 (s.current) /\ s.final = s.current end} @@ -4246,7 +4234,7 @@ module M_option__resolve [#"option.rs" 300 0 300 16] [ return''0 (result: Int32.t) -> {[%#snum] result = self_} (! return' {result}) ] let rec cloned (self_: t_Option) (return' (x: t_Option'0)) = any - [ return''0 (result: t_Option'0) -> {[%#soption'60] match { _p0'1 = self_; _p1'1 = result } with + [ return''0 (result: t_Option'0) -> {[%#soption'56] match { _p0'1 = self_; _p1'1 = result } with | {_p0'1 = C_None; _p1'1 = C_None'0} -> true | {_p0'1 = C_Some s; _p1'1 = C_Some'0 r} -> postcondition () s.current r /\ s.final = s.current | _ -> false @@ -4266,22 +4254,22 @@ module M_option__resolve [#"option.rs" 300 0 300 16] | s3 = [ &_7 <- () ] s4 | s4 = is_some_and {opt} {_7} (fun (_ret: bool) -> [ &_5 <- _ret ] s5) | s5 = bb1 ] - | bb1 = any [ br0 -> {_5 = false} (! bb2) | br1 -> {_5} (! bb4) ] - | bb4 = s0 + | bb1 = any [ br0 -> {_5 = false} (! bb3) | br1 -> {_5} (! bb2) ] + | bb2 = s0 [ s0 = [ &_10 <- x = ([%#soption'0] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_10 = false} (! bb5) | br1 -> {_10} (! bb7) ] ] - | bb7 = s0 + | s1 = any [ br0 -> {_10 = false} (! bb5) | br1 -> {_10} (! bb4) ] ] + | bb4 = s0 [ s0 = [ &x'0 <- [%#soption'1] (1: Int32.t) ] s1 | s1 = MutBorrow.borrow_mut {x'0} (fun (_ret: MutBorrow.t Int32.t) -> [ &_15 <- _ret ] [ &x'0 <- _ret.final ] s2) | s2 = [ &opt'0 <- C_Some _15 ] s3 | s3 = [ &_18 <- C_Some'0 ([%#soption'2] (2: Int32.t)) ] s4 | s4 = and {opt'0} {_18} (fun (_ret: t_Option'0) -> [ &_16 <- _ret ] s5) - | s5 = bb8 ] - | bb8 = s0 + | s5 = bb6 ] + | bb6 = s0 [ s0 = [ &_20 <- x'0 = ([%#soption'3] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_20 = false} (! bb9) | br1 -> {_20} (! bb11) ] ] - | bb11 = s0 + | s1 = any [ br0 -> {_20 = false} (! bb8) | br1 -> {_20} (! bb7) ] ] + | bb7 = s0 [ s0 = [ &x'1 <- [%#soption'4] (1: Int32.t) ] s1 | s1 = [ &y <- [%#soption'5] (2: Int32.t) ] s2 | s2 = MutBorrow.borrow_mut {x'1} @@ -4291,29 +4279,29 @@ module M_option__resolve [#"option.rs" 300 0 300 16] (fun (_ret: MutBorrow.t Int32.t) -> [ &_29 <- _ret ] [ &y <- _ret.final ] s5) | s5 = [ &_28 <- C_Some _29 ] s6 | s6 = or {_28} {opt'1} (fun (_ret: t_Option) -> [ &_27 <- _ret ] s7) - | s7 = bb12 ] - | bb12 = s0 + | s7 = bb9 ] + | bb9 = s0 [ s0 = -{resolve'4 _27}- s1 - | s1 = [ &_33 <- x'1 = ([%#soption'6] (1: Int32.t)) ] s2 - | s2 = any [ br0 -> {_33 = false} (! bb14) | br1 -> {_33} (! bb13) ] ] - | bb13 = s0 [ s0 = [ &_32 <- y = ([%#soption'7] (2: Int32.t)) ] s1 | s1 = bb15 ] - | bb14 = s0 [ s0 = [ &_32 <- [%#soption'8] false ] s1 | s1 = bb15 ] - | bb15 = any [ br0 -> {_32 = false} (! bb16) | br1 -> {_32} (! bb18) ] - | bb18 = s0 - [ s0 = [ &x'2 <- [%#soption'9] (1: Int32.t) ] s1 + | s1 = [ &_32 <- x'1 = ([%#soption'6] (1: Int32.t)) ] s2 + | s2 = any [ br0 -> {_32 = false} (! bb14) | br1 -> {_32} (! bb10) ] ] + | bb10 = s0 + [ s0 = [ &_34 <- y = ([%#soption'7] (2: Int32.t)) ] s1 + | s1 = any [ br0 -> {_34 = false} (! bb14) | br1 -> {_34} (! bb11) ] ] + | bb11 = s0 + [ s0 = [ &x'2 <- [%#soption'8] (1: Int32.t) ] s1 | s1 = MutBorrow.borrow_mut {x'2} (fun (_ret: MutBorrow.t Int32.t) -> [ &_39 <- _ret ] [ &x'2 <- _ret.final ] s2) | s2 = [ &opt'2 <- C_Some _39 ] s3 | s3 = [ &_42 <- () ] s4 | s4 = filter {opt'2} {_42} (fun (_ret: t_Option) -> [ &_40 <- _ret ] s5) - | s5 = bb19 ] - | bb19 = s0 + | s5 = bb15 ] + | bb15 = s0 [ s0 = -{resolve'4 _40}- s1 - | s1 = [ &_44 <- x'2 = ([%#soption'10] (1: Int32.t)) ] s2 - | s2 = any [ br0 -> {_44 = false} (! bb20) | br1 -> {_44} (! bb22) ] ] - | bb22 = s0 - [ s0 = [ &x'3 <- [%#soption'11] (1: Int32.t) ] s1 - | s1 = [ &y'0 <- [%#soption'12] (2: Int32.t) ] s2 + | s1 = [ &_44 <- x'2 = ([%#soption'9] (1: Int32.t)) ] s2 + | s2 = any [ br0 -> {_44 = false} (! bb17) | br1 -> {_44} (! bb16) ] ] + | bb16 = s0 + [ s0 = [ &x'3 <- [%#soption'10] (1: Int32.t) ] s1 + | s1 = [ &y'0 <- [%#soption'11] (2: Int32.t) ] s2 | s2 = MutBorrow.borrow_mut {x'3} (fun (_ret: MutBorrow.t Int32.t) -> [ &_50 <- _ret ] [ &x'3 <- _ret.final ] s3) | s3 = [ &optx <- C_Some _50 ] s4 @@ -4321,17 +4309,17 @@ module M_option__resolve [#"option.rs" 300 0 300 16] (fun (_ret: MutBorrow.t Int32.t) -> [ &_52 <- _ret ] [ &y'0 <- _ret.final ] s5) | s5 = [ &opty <- C_Some _52 ] s6 | s6 = xor {optx} {opty} (fun (_ret: t_Option) -> [ &_53 <- _ret ] s7) - | s7 = bb23 ] - | bb23 = s0 + | s7 = bb18 ] + | bb18 = s0 [ s0 = -{resolve'4 _53}- s1 - | s1 = [ &_58 <- x'3 = ([%#soption'13] (1: Int32.t)) ] s2 - | s2 = any [ br0 -> {_58 = false} (! bb25) | br1 -> {_58} (! bb24) ] ] - | bb24 = s0 [ s0 = [ &_57 <- y'0 = ([%#soption'14] (2: Int32.t)) ] s1 | s1 = bb26 ] - | bb25 = s0 [ s0 = [ &_57 <- [%#soption'15] false ] s1 | s1 = bb26 ] - | bb26 = any [ br0 -> {_57 = false} (! bb27) | br1 -> {_57} (! bb29) ] - | bb29 = s0 - [ s0 = [ &x'4 <- [%#soption'16] (1: Int32.t) ] s1 - | s1 = [ &y'1 <- [%#soption'17] (2: Int32.t) ] s2 + | s1 = [ &_57 <- x'3 = ([%#soption'12] (1: Int32.t)) ] s2 + | s2 = any [ br0 -> {_57 = false} (! bb23) | br1 -> {_57} (! bb19) ] ] + | bb19 = s0 + [ s0 = [ &_59 <- y'0 = ([%#soption'13] (2: Int32.t)) ] s1 + | s1 = any [ br0 -> {_59 = false} (! bb23) | br1 -> {_59} (! bb20) ] ] + | bb20 = s0 + [ s0 = [ &x'4 <- [%#soption'14] (1: Int32.t) ] s1 + | s1 = [ &y'1 <- [%#soption'15] (2: Int32.t) ] s2 | s2 = MutBorrow.borrow_mut {x'4} (fun (_ret: MutBorrow.t Int32.t) -> [ &_65 <- _ret ] [ &x'4 <- _ret.final ] s3) | s3 = [ &opt'3 <- C_Some _65 ] s4 @@ -4342,20 +4330,20 @@ module M_option__resolve [#"option.rs" 300 0 300 16] | s6 = MutBorrow.borrow_final {_69.current} {MutBorrow.get_id _69} (fun (_ret: MutBorrow.t Int32.t) -> [ &_68 <- _ret ] [ &_69 <- { _69 with current = _ret.final } ] s7) | s7 = insert {_67} {_68} (fun (_ret: MutBorrow.t (MutBorrow.t Int32.t)) -> [ &bor <- _ret ] s8) - | s8 = bb30 ] - | bb30 = s0 + | s8 = bb24 ] + | bb24 = s0 [ s0 = -{resolve'0 _69}- s1 - | s1 = [ &bor <- { bor with current = { bor.current with current = ([%#soption'18] (3: Int32.t)) } } ] s2 + | s1 = [ &bor <- { bor with current = { bor.current with current = ([%#soption'16] (3: Int32.t)) } } ] s2 | s2 = -{resolve'6 bor}- s3 | s3 = -{resolve'4 opt'3}- s4 - | s4 = [ &_72 <- x'4 = ([%#soption'19] (1: Int32.t)) ] s5 - | s5 = any [ br0 -> {_72 = false} (! bb32) | br1 -> {_72} (! bb31) ] ] - | bb31 = s0 [ s0 = [ &_71 <- y'1 = ([%#soption'20] (3: Int32.t)) ] s1 | s1 = bb33 ] - | bb32 = s0 [ s0 = [ &_71 <- [%#soption'21] false ] s1 | s1 = bb33 ] - | bb33 = any [ br0 -> {_71 = false} (! bb34) | br1 -> {_71} (! bb36) ] - | bb36 = s0 - [ s0 = [ &x'5 <- [%#soption'22] (1: Int32.t) ] s1 - | s1 = [ &y'2 <- [%#soption'23] (2: Int32.t) ] s2 + | s4 = [ &_71 <- x'4 = ([%#soption'17] (1: Int32.t)) ] s5 + | s5 = any [ br0 -> {_71 = false} (! bb29) | br1 -> {_71} (! bb25) ] ] + | bb25 = s0 + [ s0 = [ &_73 <- y'1 = ([%#soption'18] (3: Int32.t)) ] s1 + | s1 = any [ br0 -> {_73 = false} (! bb29) | br1 -> {_73} (! bb26) ] ] + | bb26 = s0 + [ s0 = [ &x'5 <- [%#soption'19] (1: Int32.t) ] s1 + | s1 = [ &y'2 <- [%#soption'20] (2: Int32.t) ] s2 | s2 = MutBorrow.borrow_mut {x'5} (fun (_ret: MutBorrow.t Int32.t) -> [ &_79 <- _ret ] [ &x'5 <- _ret.final ] s3) | s3 = [ &opt'4 <- C_Some _79 ] s4 @@ -4366,60 +4354,60 @@ module M_option__resolve [#"option.rs" 300 0 300 16] | s6 = MutBorrow.borrow_final {_83.current} {MutBorrow.get_id _83} (fun (_ret: MutBorrow.t Int32.t) -> [ &_82 <- _ret ] [ &_83 <- { _83 with current = _ret.final } ] s7) | s7 = get_or_insert {_81} {_82} (fun (_ret: MutBorrow.t (MutBorrow.t Int32.t)) -> [ &bor'0 <- _ret ] s8) - | s8 = bb37 ] - | bb37 = s0 + | s8 = bb30 ] + | bb30 = s0 [ s0 = -{resolve'0 _83}- s1 - | s1 = [ &bor'0 <- { bor'0 with current = { bor'0.current with current = ([%#soption'24] (3: Int32.t)) } } ] s2 + | s1 = [ &bor'0 <- { bor'0 with current = { bor'0.current with current = ([%#soption'21] (3: Int32.t)) } } ] s2 | s2 = -{resolve'6 bor'0}- s3 | s3 = -{resolve'4 opt'4}- s4 - | s4 = [ &_86 <- x'5 = ([%#soption'25] (3: Int32.t)) ] s5 - | s5 = any [ br0 -> {_86 = false} (! bb39) | br1 -> {_86} (! bb38) ] ] - | bb38 = s0 [ s0 = [ &_85 <- y'2 = ([%#soption'26] (2: Int32.t)) ] s1 | s1 = bb40 ] - | bb39 = s0 [ s0 = [ &_85 <- [%#soption'27] false ] s1 | s1 = bb40 ] - | bb40 = any [ br0 -> {_85 = false} (! bb41) | br1 -> {_85} (! bb43) ] - | bb43 = s0 - [ s0 = [ &x'6 <- [%#soption'28] (1: Int32.t) ] s1 + | s4 = [ &_85 <- x'5 = ([%#soption'22] (3: Int32.t)) ] s5 + | s5 = any [ br0 -> {_85 = false} (! bb35) | br1 -> {_85} (! bb31) ] ] + | bb31 = s0 + [ s0 = [ &_87 <- y'2 = ([%#soption'23] (2: Int32.t)) ] s1 + | s1 = any [ br0 -> {_87 = false} (! bb35) | br1 -> {_87} (! bb32) ] ] + | bb32 = s0 + [ s0 = [ &x'6 <- [%#soption'24] (1: Int32.t) ] s1 | s1 = MutBorrow.borrow_mut {x'6} (fun (_ret: MutBorrow.t Int32.t) -> [ &_92 <- _ret ] [ &x'6 <- _ret.final ] s2) | s2 = [ &opt'5 <- C_Some _92 ] s3 | s3 = [ &_95 <- C_None'0 ] s4 | s4 = zip {opt'5} {_95} (fun (_ret: t_Option'1) -> [ &_93 <- _ret ] s5) - | s5 = bb44 ] - | bb44 = s0 + | s5 = bb36 ] + | bb36 = s0 [ s0 = -{resolve'10 _93}- s1 - | s1 = [ &_97 <- x'6 = ([%#soption'29] (1: Int32.t)) ] s2 - | s2 = any [ br0 -> {_97 = false} (! bb45) | br1 -> {_97} (! bb47) ] ] - | bb47 = s0 - [ s0 = [ &x'7 <- [%#soption'30] (1: Int32.t) ] s1 + | s1 = [ &_97 <- x'6 = ([%#soption'25] (1: Int32.t)) ] s2 + | s2 = any [ br0 -> {_97 = false} (! bb38) | br1 -> {_97} (! bb37) ] ] + | bb37 = s0 + [ s0 = [ &x'7 <- [%#soption'26] (1: Int32.t) ] s1 | s1 = MutBorrow.borrow_mut {x'7} (fun (_ret: MutBorrow.t Int32.t) -> [ &_102 <- _ret ] [ &x'7 <- _ret.final ] s2) | s2 = [ &opt'6 <- C_Some _102 ] s3 | s3 = copied {opt'6} (fun (_ret: t_Option'0) -> [ &_103 <- _ret ] s4) - | s4 = bb48 ] - | bb48 = s0 - [ s0 = [ &_106 <- x'7 = ([%#soption'31] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_106 = false} (! bb49) | br1 -> {_106} (! bb51) ] ] - | bb51 = s0 + | s4 = bb39 ] + | bb39 = s0 + [ s0 = [ &_106 <- x'7 = ([%#soption'27] (1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_106 = false} (! bb41) | br1 -> {_106} (! bb40) ] ] + | bb40 = s0 [ s0 = MutBorrow.borrow_mut {x'7} (fun (_ret: MutBorrow.t Int32.t) -> [ &_110 <- _ret ] [ &x'7 <- _ret.final ] s1) | s1 = [ &opt'7 <- C_Some _110 ] s2 | s2 = cloned {opt'7} (fun (_ret: t_Option'0) -> [ &_111 <- _ret ] s3) - | s3 = bb52 ] - | bb52 = s0 - [ s0 = [ &_114 <- x'7 = ([%#soption'32] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_114 = false} (! bb53) | br1 -> {_114} (! bb55) ] ] - | bb55 = return''0 {_0} - | bb53 = {[%#soption'33] false} any - | bb49 = {[%#soption'34] false} any - | bb45 = {[%#soption'35] false} any - | bb41 = {[%#soption'36] false} any - | bb34 = {[%#soption'37] false} any - | bb27 = {[%#soption'38] false} any - | bb20 = {[%#soption'39] false} any - | bb16 = {[%#soption'40] false} any - | bb9 = {[%#soption'41] false} any - | bb5 = {[%#soption'42] false} any - | bb2 = {[%#soption'43] false} any ] + | s3 = bb42 ] + | bb42 = s0 + [ s0 = [ &_114 <- x'7 = ([%#soption'28] (1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_114 = false} (! bb44) | br1 -> {_114} (! bb43) ] ] + | bb43 = return''0 {_0} + | bb44 = {[%#soption'29] false} any + | bb41 = {[%#soption'30] false} any + | bb38 = {[%#soption'31] false} any + | bb35 = {[%#soption'32] false} any + | bb29 = {[%#soption'33] false} any + | bb23 = {[%#soption'34] false} any + | bb17 = {[%#soption'35] false} any + | bb14 = {[%#soption'36] false} any + | bb8 = {[%#soption'37] false} any + | bb5 = {[%#soption'38] false} any + | bb3 = {[%#soption'39] false} any ] [ & _0: () = Any.any_l () | & x: Int32.t = Any.any_l () | & opt: t_Option = Any.any_l () @@ -4441,7 +4429,7 @@ module M_option__resolve [#"option.rs" 300 0 300 16] | & _28: t_Option = Any.any_l () | & _29: MutBorrow.t Int32.t = Any.any_l () | & _32: bool = Any.any_l () - | & _33: bool = Any.any_l () + | & _34: bool = Any.any_l () | & x'2: Int32.t = Any.any_l () | & opt'2: t_Option = Any.any_l () | & _39: MutBorrow.t Int32.t = Any.any_l () @@ -4456,7 +4444,7 @@ module M_option__resolve [#"option.rs" 300 0 300 16] | & _52: MutBorrow.t Int32.t = Any.any_l () | & _53: t_Option = Any.any_l () | & _57: bool = Any.any_l () - | & _58: bool = Any.any_l () + | & _59: bool = Any.any_l () | & x'4: Int32.t = Any.any_l () | & y'1: Int32.t = Any.any_l () | & opt'3: t_Option = Any.any_l () @@ -4466,7 +4454,7 @@ module M_option__resolve [#"option.rs" 300 0 300 16] | & _68: MutBorrow.t Int32.t = Any.any_l () | & _69: MutBorrow.t Int32.t = Any.any_l () | & _71: bool = Any.any_l () - | & _72: bool = Any.any_l () + | & _73: bool = Any.any_l () | & x'5: Int32.t = Any.any_l () | & y'2: Int32.t = Any.any_l () | & opt'4: t_Option = Any.any_l () @@ -4476,7 +4464,7 @@ module M_option__resolve [#"option.rs" 300 0 300 16] | & _82: MutBorrow.t Int32.t = Any.any_l () | & _83: MutBorrow.t Int32.t = Any.any_l () | & _85: bool = Any.any_l () - | & _86: bool = Any.any_l () + | & _87: bool = Any.any_l () | & x'6: Int32.t = Any.any_l () | & opt'5: t_Option = Any.any_l () | & _92: MutBorrow.t Int32.t = Any.any_l () diff --git a/tests/should_succeed/permcell.coma b/tests/should_succeed/permcell.coma index 4ee47a4dcd..648e2b2ff3 100644 --- a/tests/should_succeed/permcell.coma +++ b/tests/should_succeed/permcell.coma @@ -5,9 +5,9 @@ module M_permcell__foo [#"permcell.rs" 5 0 5 19] let%span spermcell'2 = "permcell.rs" 13 50 13 51 let%span spermcell'3 = "permcell.rs" 15 49 15 50 let%span spermcell'4 = "permcell.rs" 15 57 15 58 - let%span spermcell'5 = "permcell.rs" 15 12 15 58 - let%span spermcell'6 = "permcell.rs" 13 12 13 51 - let%span spermcell'7 = "permcell.rs" 8 12 8 51 + let%span spermcell'5 = "permcell.rs" 15 4 15 59 + let%span spermcell'6 = "permcell.rs" 13 4 13 52 + let%span spermcell'7 = "permcell.rs" 8 4 8 52 let%span spermcell'8 = "permcell.rs" 4 10 4 22 let%span spermcell'9 = "../../creusot-contracts/src/cell/permcell.rs" 96 14 96 44 let%span spermcell'10 = "../../creusot-contracts/src/cell/permcell.rs" 97 14 97 35 @@ -135,37 +135,37 @@ module M_permcell__foo [#"permcell.rs" 5 0 5 19] | bb2 = s0 [ s0 = borrow'0 {p} {_10} (fun (_ret: Int32.t) -> [ &_8 <- _ret ] s1) | s1 = bb3 ] | bb3 = s0 [ s0 = [ &_6 <- _8 = ([%#spermcell'0] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_6 = false} (! bb4) | br1 -> {_6} (! bb6) ] ] - | bb6 = s0 + | s1 = any [ br0 -> {_6 = false} (! bb5) | br1 -> {_6} (! bb4) ] ] + | bb4 = s0 [ s0 = MutBorrow.borrow_mut {own} (fun (_ret: MutBorrow.t t_PermCellOwn) -> [ &_17 <- _ret ] [ &own <- _ret.final ] s1) | s1 = borrow_mut {_17} (fun (_ret: MutBorrow.t t_PermCellOwn) -> [ &_16 <- _ret ] s2) - | s2 = bb7 ] - | bb7 = s0 [ s0 = borrow_mut'0 {p} {_16} (fun (_ret: MutBorrow.t Int32.t) -> [ &_14 <- _ret ] s1) | s1 = bb8 ] - | bb8 = s0 + | s2 = bb6 ] + | bb6 = s0 [ s0 = borrow_mut'0 {p} {_16} (fun (_ret: MutBorrow.t Int32.t) -> [ &_14 <- _ret ] s1) | s1 = bb7 ] + | bb7 = s0 [ s0 = [ &_14 <- { _14 with current = ([%#spermcell'1] (2: Int32.t)) } ] s1 | s1 = -{resolve'0 _14}- s2 | s2 = borrow {own} (fun (_ret: t_PermCellOwn) -> [ &_23 <- _ret ] s3) - | s3 = bb9 ] - | bb9 = s0 [ s0 = borrow'0 {p} {_23} (fun (_ret: Int32.t) -> [ &_21 <- _ret ] s1) | s1 = bb10 ] - | bb10 = s0 + | s3 = bb8 ] + | bb8 = s0 [ s0 = borrow'0 {p} {_23} (fun (_ret: Int32.t) -> [ &_21 <- _ret ] s1) | s1 = bb9 ] + | bb9 = s0 [ s0 = [ &_19 <- _21 = ([%#spermcell'2] (2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_19 = false} (! bb11) | br1 -> {_19} (! bb13) ] ] - | bb13 = s0 + | s1 = any [ br0 -> {_19 = false} (! bb11) | br1 -> {_19} (! bb10) ] ] + | bb10 = s0 [ s0 = MutBorrow.borrow_mut {own} (fun (_ret: MutBorrow.t t_PermCellOwn) -> [ &_31 <- _ret ] [ &own <- _ret.final ] s1) | s1 = borrow_mut {_31} (fun (_ret: MutBorrow.t t_PermCellOwn) -> [ &_30 <- _ret ] s2) - | s2 = bb14 ] - | bb14 = s0 - [ s0 = replace {p} {_30} {[%#spermcell'3] (3: Int32.t)} (fun (_ret: Int32.t) -> [ &_28 <- _ret ] s1) | s1 = bb15 ] - | bb15 = s0 + | s2 = bb12 ] + | bb12 = s0 + [ s0 = replace {p} {_30} {[%#spermcell'3] (3: Int32.t)} (fun (_ret: Int32.t) -> [ &_28 <- _ret ] s1) | s1 = bb13 ] + | bb13 = s0 [ s0 = [ &_27 <- _28 = ([%#spermcell'4] (2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_27 = false} (! bb16) | br1 -> {_27} (! bb18) ] ] - | bb18 = s0 [ s0 = into_inner {p} {own} (fun (_ret: Int32.t) -> [ &_0 <- _ret ] s1) | s1 = bb19 ] - | bb19 = return''0 {_0} - | bb16 = {[%#spermcell'5] false} any + | s1 = any [ br0 -> {_27 = false} (! bb15) | br1 -> {_27} (! bb14) ] ] + | bb14 = s0 [ s0 = into_inner {p} {own} (fun (_ret: Int32.t) -> [ &_0 <- _ret ] s1) | s1 = bb16 ] + | bb16 = return''0 {_0} + | bb15 = {[%#spermcell'5] false} any | bb11 = {[%#spermcell'6] false} any - | bb4 = {[%#spermcell'7] false} any ] + | bb5 = {[%#spermcell'7] false} any ] [ & _0: Int32.t = Any.any_l () | & p: t_PermCell = Any.any_l () | & own: t_PermCellOwn = Any.any_l () diff --git a/tests/should_succeed/projection_toggle.coma b/tests/should_succeed/projection_toggle.coma index 949c4b5425..5b798d3059 100644 --- a/tests/should_succeed/projection_toggle.coma +++ b/tests/should_succeed/projection_toggle.coma @@ -105,7 +105,7 @@ module M_projection_toggle__f [#"projection_toggle.rs" 9 0 9 10] let%span sprojection_toggle'1 = "projection_toggle.rs" 13 24 13 28 let%span sprojection_toggle'2 = "projection_toggle.rs" 15 10 15 11 let%span sprojection_toggle'3 = "projection_toggle.rs" 16 17 16 19 - let%span sprojection_toggle'4 = "projection_toggle.rs" 16 12 16 19 + let%span sprojection_toggle'4 = "projection_toggle.rs" 16 4 16 20 let%span sprojection_toggle'5 = "projection_toggle.rs" 4 10 4 80 let%span sresolve = "../../creusot-contracts/src/resolve.rs" 44 20 44 34 @@ -156,9 +156,9 @@ module M_projection_toggle__f [#"projection_toggle.rs" 9 0 9 10] (fun (_ret: Int32.t) -> [ &x <- { x with current = _ret } ] s3) | s3 = -{resolve'0 x}- s4 | s4 = [ &_9 <- a = ([%#sprojection_toggle'3] (15: Int32.t)) ] s5 - | s5 = any [ br0 -> {_9 = false} (! bb2) | br1 -> {_9} (! bb4) ] ] - | bb4 = return''0 {_0} - | bb2 = {[%#sprojection_toggle'4] false} any ] + | s5 = any [ br0 -> {_9 = false} (! bb3) | br1 -> {_9} (! bb2) ] ] + | bb2 = return''0 {_0} + | bb3 = {[%#sprojection_toggle'4] false} any ] [ & _0: () = Any.any_l () | & a: Int32.t = Any.any_l () | & b: Int32.t = Any.any_l () diff --git a/tests/should_succeed/red_black_tree.coma b/tests/should_succeed/red_black_tree.coma index 98ad2249ec..1f44d03df9 100644 --- a/tests/should_succeed/red_black_tree.coma +++ b/tests/should_succeed/red_black_tree.coma @@ -4274,7 +4274,7 @@ module M_red_black_tree__qyi3529752165842986389__insert_rec [#"red_black_tree.rs let%span sred_black_tree'27 = "red_black_tree.rs" 248 16 248 48 let%span sred_black_tree'28 = "red_black_tree.rs" 279 12 282 13 let%span sred_black_tree'29 = "red_black_tree.rs" 35 12 39 13 - let%span sred_black_tree'30 = "red_black_tree.rs" 1 0 979 4 + let%span sred_black_tree'30 = "red_black_tree.rs" 1 0 987 4 let%span sred_black_tree'31 = "red_black_tree.rs" 392 8 394 9 let%span sred_black_tree'32 = "red_black_tree.rs" 145 12 145 89 let%span sred_black_tree'33 = "red_black_tree.rs" 347 14 348 75 @@ -6491,7 +6491,7 @@ module M_red_black_tree__qyi3529752165842986389__delete_rec [#"red_black_tree.rs let%span sred_black_tree'84 = "red_black_tree.rs" 35 12 39 13 let%span sred_black_tree'85 = "red_black_tree.rs" 289 12 295 13 let%span sred_black_tree'86 = "red_black_tree.rs" 279 12 282 13 - let%span sred_black_tree'87 = "red_black_tree.rs" 1 0 979 4 + let%span sred_black_tree'87 = "red_black_tree.rs" 1 0 987 4 let%span sred_black_tree'88 = "red_black_tree.rs" 392 8 394 9 let%span sred_black_tree'89 = "red_black_tree.rs" 145 12 145 89 let%span sred_black_tree'90 = "red_black_tree.rs" 347 14 348 75 @@ -10224,7 +10224,7 @@ module M_red_black_tree__qyi1722927563742988856__get [#"red_black_tree.rs" 874 4 let%span sred_black_tree'15 = "red_black_tree.rs" 83 14 83 92 let%span sred_black_tree'16 = "red_black_tree.rs" 89 12 98 13 let%span sred_black_tree'17 = "red_black_tree.rs" 207 12 208 104 - let%span sred_black_tree'18 = "red_black_tree.rs" 1 0 979 4 + let%span sred_black_tree'18 = "red_black_tree.rs" 1 0 987 4 let%span sred_black_tree'19 = "red_black_tree.rs" 750 20 750 27 let%span sred_black_tree'20 = "red_black_tree.rs" 53 12 60 13 let%span sred_black_tree'21 = "red_black_tree.rs" 760 8 762 9 @@ -10635,7 +10635,7 @@ module M_red_black_tree__qyi1722927563742988856__get_mut [#"red_black_tree.rs" 8 let%span sred_black_tree'30 = "red_black_tree.rs" 360 20 360 61 let%span sred_black_tree'31 = "red_black_tree.rs" 207 12 208 104 let%span sred_black_tree'32 = "red_black_tree.rs" 303 20 303 102 - let%span sred_black_tree'33 = "red_black_tree.rs" 1 0 979 4 + let%span sred_black_tree'33 = "red_black_tree.rs" 1 0 987 4 let%span sred_black_tree'34 = "red_black_tree.rs" 53 12 60 13 let%span sred_black_tree'35 = "red_black_tree.rs" 760 8 762 9 let%span sred_black_tree'36 = "red_black_tree.rs" 377 8 379 9 diff --git a/tests/should_succeed/resolve_uninit.coma b/tests/should_succeed/resolve_uninit.coma index 0aa95fdcd2..f858c56e06 100644 --- a/tests/should_succeed/resolve_uninit.coma +++ b/tests/should_succeed/resolve_uninit.coma @@ -1,7 +1,7 @@ module M_resolve_uninit__maybe_uninit [#"resolve_uninit.rs" 5 0 5 51] let%span sresolve_uninit = "resolve_uninit.rs" 5 41 5 42 let%span sresolve_uninit'0 = "resolve_uninit.rs" 5 50 5 51 - let%span sresolve_uninit'1 = "resolve_uninit.rs" 1 0 140 4 + let%span sresolve_uninit'1 = "resolve_uninit.rs" 1 0 139 4 use creusot.prelude.Any @@ -49,7 +49,7 @@ end module M_resolve_uninit__init_join [#"resolve_uninit.rs" 15 0 15 37] let%span sresolve_uninit = "resolve_uninit.rs" 27 9 27 10 let%span sresolve_uninit'0 = "resolve_uninit.rs" 28 17 28 18 - let%span sresolve_uninit'1 = "resolve_uninit.rs" 28 12 28 18 + let%span sresolve_uninit'1 = "resolve_uninit.rs" 28 4 28 19 let%span sresolve = "../../creusot-contracts/src/resolve.rs" 44 20 44 34 use creusot.prelude.MutBorrow @@ -83,8 +83,8 @@ module M_resolve_uninit__init_join [#"resolve_uninit.rs" 15 0 15 37] (fun (_ret: MutBorrow.t Int32.t) -> [ &_9 <- _ret ] [ &_10 <- { _10 with current = _ret.final } ] s6) | s6 = [ &y <- _9 ] s7 | s7 = -{resolve'0 _10}- s8 - | s8 = bb8 ] - | bb8 = s0 [ s0 = -{resolve'0 z}- s1 | s1 = bb3 ] + | s8 = bb7 ] + | bb7 = s0 [ s0 = -{resolve'0 z}- s1 | s1 = bb3 ] | bb2 = s0 [ s0 = MutBorrow.borrow_mut {x'0} (fun (_ret: MutBorrow.t Int32.t) -> [ &_12 <- _ret ] [ &x'0 <- _ret.final ] s1) @@ -97,9 +97,9 @@ module M_resolve_uninit__init_join [#"resolve_uninit.rs" 15 0 15 37] [ s0 = [ &y <- { y with current = ([%#sresolve_uninit] (5: Int32.t)) } ] s1 | s1 = -{resolve'0 y}- s2 | s2 = [ &_14 <- x'0 = ([%#sresolve_uninit'0] (5: Int32.t)) ] s3 - | s3 = any [ br0 -> {_14 = false} (! bb4) | br1 -> {_14} (! bb6) ] ] - | bb6 = return''0 {_0} - | bb4 = {[%#sresolve_uninit'1] false} any ] + | s3 = any [ br0 -> {_14 = false} (! bb5) | br1 -> {_14} (! bb4) ] ] + | bb4 = return''0 {_0} + | bb5 = {[%#sresolve_uninit'1] false} any ] [ & _0: () = Any.any_l () | & b'0: bool = b | & x'0: Int32.t = x diff --git a/tests/should_succeed/resource_algebras/excl.coma b/tests/should_succeed/resource_algebras/excl.coma index 8169e61614..a4382595e6 100644 --- a/tests/should_succeed/resource_algebras/excl.coma +++ b/tests/should_succeed/resource_algebras/excl.coma @@ -1,6 +1,6 @@ module M_excl__exclusivity [#"excl.rs" 6 0 6 72] let%span sexcl = "excl.rs" 9 16 9 21 - let%span sexcl'0 = "excl.rs" 9 16 9 21 + let%span sexcl'0 = "excl.rs" 9 8 9 22 let%span sexcl'1 = "excl.rs" 4 10 4 26 let%span sexcl'2 = "excl.rs" 5 10 5 18 let%span sexcl'3 = "../../../creusot-contracts/src/logic/ra/excl.rs" 16 8 16 12 @@ -92,7 +92,7 @@ module M_excl__exclusivity [#"excl.rs" 6 0 6 72] [ bb0 = s0 [ s0 = id_ghost {x'0.current} (fun (_ret: t_Id) -> [ &_7 <- _ret ] s1) | s1 = bb1 ] | bb1 = s0 [ s0 = id_ghost {y'0} (fun (_ret: t_Id) -> [ &_10 <- _ret ] s1) | s1 = bb2 ] | bb2 = s0 [ s0 = eq {_7} {_10} (fun (_ret: bool) -> [ &_5 <- _ret ] s1) | s1 = bb3 ] - | bb3 = any [ br0 -> {_5 = false} (! bb9) | br1 -> {_5} (! bb4) ] + | bb3 = any [ br0 -> {_5 = false} (! bb8) | br1 -> {_5} (! bb4) ] | bb4 = s0 [ s0 = MutBorrow.borrow_final {x'0.current} {MutBorrow.get_id x'0} (fun (_ret: MutBorrow.t t_Resource) -> [ &_13 <- _ret ] [ &x'0 <- { x'0 with current = _ret.final } ] s1) @@ -100,10 +100,10 @@ module M_excl__exclusivity [#"excl.rs" 6 0 6 72] | s2 = bb5 ] | bb5 = s0 [ s0 = -{resolve'0 x'0}- s1 - | s1 = any [ br0 -> {([%#sexcl] false) = false} (! bb6) | br1 -> {[%#sexcl] false} (! bb10) ] ] + | s1 = any [ br0 -> {([%#sexcl] false) = false} (! bb6) | br1 -> {[%#sexcl] false} (! bb9) ] ] | bb6 = {[%#sexcl'0] false} any - | bb9 = s0 [ s0 = -{resolve'0 x'0}- s1 | s1 = bb10 ] - | bb10 = return''0 {_0} ] + | bb8 = s0 [ s0 = -{resolve'0 x'0}- s1 | s1 = bb9 ] + | bb9 = return''0 {_0} ] [ & _0: () = Any.any_l () | & x'0: MutBorrow.t t_Resource = x | & y'0: t_Resource = y diff --git a/tests/should_succeed/result/own.coma b/tests/should_succeed/result/own.coma index b6c013ca81..573f58c30c 100644 --- a/tests/should_succeed/result/own.coma +++ b/tests/should_succeed/result/own.coma @@ -762,7 +762,7 @@ module M_own__qyi9370700355788413623__unwrap_or_default [#"own.rs" 130 4 132 19] let%span sown'0 = "own.rs" 130 38 130 39 let%span sown'1 = "own.rs" 128 14 128 67 let%span sown'2 = "own.rs" 129 14 129 95 - let%span sown'3 = "own.rs" 1 0 140 4 + let%span sown'3 = "own.rs" 1 0 139 4 let%span sown'4 = "own.rs" 15 8 18 9 let%span sops = "../../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../../creusot-contracts/src/std/ops.rs" 164 14 164 100 @@ -1171,7 +1171,7 @@ module M_own__qyi1738359920797260731__cloned [#"own.rs" 180 4 182 17] (* OwnResu let%span sown = "own.rs" 180 18 180 22 let%span sown'0 = "own.rs" 180 27 180 42 let%span sown'1 = "own.rs" 175 14 179 5 - let%span sown'2 = "own.rs" 1 0 237 4 + let%span sown'2 = "own.rs" 1 0 236 4 let%span sinvariant = "../../../creusot-contracts/src/invariant.rs" 90 8 90 18 let%span sops = "../../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../../creusot-contracts/src/std/ops.rs" 164 14 164 100 @@ -1423,7 +1423,7 @@ module M_own__qyi10690551671874530681__cloned [#"own.rs" 211 4 213 17] (* OwnRes let%span sown = "own.rs" 211 18 211 22 let%span sown'0 = "own.rs" 211 27 211 42 let%span sown'1 = "own.rs" 206 14 210 5 - let%span sown'2 = "own.rs" 1 0 237 4 + let%span sown'2 = "own.rs" 1 0 236 4 let%span sinvariant = "../../../creusot-contracts/src/invariant.rs" 99 20 99 44 let%span sinvariant'0 = "../../../creusot-contracts/src/invariant.rs" 90 8 90 18 let%span sresolve = "../../../creusot-contracts/src/resolve.rs" 44 20 44 34 diff --git a/tests/should_succeed/result/result.coma b/tests/should_succeed/result/result.coma index b2b60d4dcd..490b36f6bc 100644 --- a/tests/should_succeed/result/result.coma +++ b/tests/should_succeed/result/result.coma @@ -1,125 +1,123 @@ module M_result__test_result [#"result.rs" 3 0 3 20] let%span sresult = "result.rs" 4 38 4 39 let%span sresult'0 = "result.rs" 5 40 5 42 - let%span sresult'1 = "result.rs" 8 12 8 38 - let%span sresult'2 = "result.rs" 10 12 10 40 - let%span sresult'3 = "result.rs" 13 32 13 33 - let%span sresult'4 = "result.rs" 17 34 17 36 - let%span sresult'5 = "result.rs" 20 37 20 38 - let%span sresult'6 = "result.rs" 21 42 21 44 - let%span sresult'7 = "result.rs" 23 28 23 29 - let%span sresult'8 = "result.rs" 24 27 24 28 - let%span sresult'9 = "result.rs" 25 28 25 29 - let%span sresult'10 = "result.rs" 26 27 26 28 - let%span sresult'11 = "result.rs" 27 33 27 34 - let%span sresult'12 = "result.rs" 28 32 28 33 - let%span sresult'13 = "result.rs" 29 33 29 35 - let%span sresult'14 = "result.rs" 30 32 30 34 - let%span sresult'15 = "result.rs" 33 27 33 28 - let%span sresult'16 = "result.rs" 37 32 37 34 - let%span sresult'17 = "result.rs" 40 25 40 26 - let%span sresult'18 = "result.rs" 40 31 40 32 - let%span sresult'19 = "result.rs" 41 26 41 27 - let%span sresult'20 = "result.rs" 41 32 41 33 - let%span sresult'21 = "result.rs" 43 38 43 39 - let%span sresult'22 = "result.rs" 44 39 44 40 - let%span sresult'23 = "result.rs" 47 30 47 32 - let%span sresult'24 = "result.rs" 47 51 47 53 - let%span sresult'25 = "result.rs" 48 22 48 23 - let%span sresult'26 = "result.rs" 48 38 48 39 - let%span sresult'27 = "result.rs" 49 31 49 33 - let%span sresult'28 = "result.rs" 49 52 49 54 - let%span sresult'29 = "result.rs" 50 23 50 24 - let%span sresult'30 = "result.rs" 50 43 50 45 - let%span sresult'31 = "result.rs" 53 22 53 24 - let%span sresult'32 = "result.rs" 53 39 53 40 - let%span sresult'33 = "result.rs" 54 28 54 29 - let%span sresult'34 = "result.rs" 54 44 54 45 - let%span sresult'35 = "result.rs" 55 23 55 25 - let%span sresult'36 = "result.rs" 55 44 55 46 - let%span sresult'37 = "result.rs" 56 29 56 30 - let%span sresult'38 = "result.rs" 56 45 56 46 - let%span sresult'39 = "result.rs" 59 45 59 46 - let%span sresult'40 = "result.rs" 60 51 60 53 - let%span sresult'41 = "result.rs" 61 45 61 46 - let%span sresult'42 = "result.rs" 62 51 62 53 - let%span sresult'43 = "result.rs" 64 45 64 46 - let%span sresult'44 = "result.rs" 65 51 65 53 - let%span sresult'45 = "result.rs" 66 45 66 46 - let%span sresult'46 = "result.rs" 67 51 67 53 - let%span sresult'47 = "result.rs" 72 48 72 49 - let%span sresult'48 = "result.rs" 73 49 73 50 - let%span sresult'49 = "result.rs" 74 44 74 46 - let%span sresult'50 = "result.rs" 75 53 75 55 - let%span sresult'51 = "result.rs" 75 12 75 55 - let%span sresult'52 = "result.rs" 73 12 73 50 - let%span sresult'53 = "result.rs" 71 12 71 37 - let%span sresult'54 = "result.rs" 67 12 67 53 - let%span sresult'55 = "result.rs" 66 12 66 46 - let%span sresult'56 = "result.rs" 65 12 65 53 - let%span sresult'57 = "result.rs" 64 12 64 46 - let%span sresult'58 = "result.rs" 62 12 62 53 - let%span sresult'59 = "result.rs" 61 12 61 46 - let%span sresult'60 = "result.rs" 60 12 60 53 - let%span sresult'61 = "result.rs" 59 12 59 46 - let%span sresult'62 = "result.rs" 56 12 56 46 - let%span sresult'63 = "result.rs" 55 12 55 46 - let%span sresult'64 = "result.rs" 54 12 54 45 - let%span sresult'65 = "result.rs" 53 12 53 40 - let%span sresult'66 = "result.rs" 50 12 50 45 - let%span sresult'67 = "result.rs" 49 12 49 54 - let%span sresult'68 = "result.rs" 48 12 48 39 - let%span sresult'69 = "result.rs" 47 12 47 53 - let%span sresult'70 = "result.rs" 44 12 44 40 - let%span sresult'71 = "result.rs" 43 12 43 39 - let%span sresult'72 = "result.rs" 41 12 41 33 - let%span sresult'73 = "result.rs" 40 12 40 32 - let%span sresult'74 = "result.rs" 37 12 37 34 - let%span sresult'75 = "result.rs" 33 12 33 28 - let%span sresult'76 = "result.rs" 30 12 30 34 - let%span sresult'77 = "result.rs" 28 12 28 33 - let%span sresult'78 = "result.rs" 26 12 26 28 - let%span sresult'79 = "result.rs" 24 12 24 28 - let%span sresult'80 = "result.rs" 21 12 21 44 - let%span sresult'81 = "result.rs" 20 12 20 38 - let%span sresult'82 = "result.rs" 17 12 17 36 - let%span sresult'83 = "result.rs" 16 12 16 30 - let%span sresult'84 = "result.rs" 14 12 14 30 - let%span sresult'85 = "result.rs" 13 12 13 33 - let%span sresult'86 = "result.rs" 10 12 10 40 - let%span sresult'87 = "result.rs" 8 12 8 38 - let%span sresult'88 = "../../../creusot-contracts/src/std/result.rs" 22 26 22 63 - let%span sresult'89 = "../../../creusot-contracts/src/std/result.rs" 26 26 26 64 - let%span sresult'90 = "../../../creusot-contracts/src/std/result.rs" 30 26 30 74 - let%span sresult'91 = "../../../creusot-contracts/src/std/result.rs" 31 26 31 74 - let%span sresult'92 = "../../../creusot-contracts/src/std/result.rs" 35 26 35 73 - let%span sresult'93 = "../../../creusot-contracts/src/std/result.rs" 36 26 36 75 - let%span sresult'94 = "../../../creusot-contracts/src/std/result.rs" 40 26 40 75 - let%span sresult'95 = "../../../creusot-contracts/src/std/result.rs" 41 26 41 77 - let%span sresult'96 = "../../../creusot-contracts/src/std/result.rs" 52 27 52 53 - let%span sresult'97 = "../../../creusot-contracts/src/std/result.rs" 53 26 53 44 - let%span sresult'98 = "../../../creusot-contracts/src/std/result.rs" 66 27 66 54 - let%span sresult'99 = "../../../creusot-contracts/src/std/result.rs" 67 26 67 45 - let%span sresult'100 = "../../../creusot-contracts/src/std/result.rs" 46 20 47 94 - let%span sresult'101 = "../../../creusot-contracts/src/std/result.rs" 73 26 73 68 - let%span sresult'102 = "../../../creusot-contracts/src/std/result.rs" 74 26 74 77 - let%span sresult'103 = "../../../creusot-contracts/src/std/result.rs" 77 26 77 68 - let%span sresult'104 = "../../../creusot-contracts/src/std/result.rs" 78 26 78 96 - let%span sresult'105 = "../../../creusot-contracts/src/std/result.rs" 84 26 84 72 - let%span sresult'106 = "../../../creusot-contracts/src/std/result.rs" 85 26 85 74 - let%span sresult'107 = "../../../creusot-contracts/src/std/result.rs" 89 26 89 72 - let%span sresult'108 = "../../../creusot-contracts/src/std/result.rs" 90 26 90 73 - let%span sresult'109 = "../../../creusot-contracts/src/std/result.rs" 96 26 96 74 - let%span sresult'110 = "../../../creusot-contracts/src/std/result.rs" 97 26 97 74 - let%span sresult'111 = "../../../creusot-contracts/src/std/result.rs" 111 26 111 93 - let%span sresult'112 = "../../../creusot-contracts/src/std/result.rs" 112 26 112 74 - let%span sresult'113 = "../../../creusot-contracts/src/std/result.rs" 102 26 102 74 - let%span sresult'114 = "../../../creusot-contracts/src/std/result.rs" 103 26 103 74 - let%span sresult'115 = "../../../creusot-contracts/src/std/result.rs" 117 26 117 93 - let%span sresult'116 = "../../../creusot-contracts/src/std/result.rs" 118 26 118 74 - let%span sresult'117 = "../../../creusot-contracts/src/std/result.rs" 126 26 126 61 - let%span sresult'118 = "../../../creusot-contracts/src/std/result.rs" 127 26 127 84 - let%span sresult'119 = "../../../creusot-contracts/src/std/result.rs" 128 26 128 80 + let%span sresult'1 = "result.rs" 13 32 13 33 + let%span sresult'2 = "result.rs" 17 34 17 36 + let%span sresult'3 = "result.rs" 20 37 20 38 + let%span sresult'4 = "result.rs" 21 42 21 44 + let%span sresult'5 = "result.rs" 23 28 23 29 + let%span sresult'6 = "result.rs" 24 27 24 28 + let%span sresult'7 = "result.rs" 25 28 25 29 + let%span sresult'8 = "result.rs" 26 27 26 28 + let%span sresult'9 = "result.rs" 27 33 27 34 + let%span sresult'10 = "result.rs" 28 32 28 33 + let%span sresult'11 = "result.rs" 29 33 29 35 + let%span sresult'12 = "result.rs" 30 32 30 34 + let%span sresult'13 = "result.rs" 33 27 33 28 + let%span sresult'14 = "result.rs" 37 32 37 34 + let%span sresult'15 = "result.rs" 40 25 40 26 + let%span sresult'16 = "result.rs" 40 31 40 32 + let%span sresult'17 = "result.rs" 41 26 41 27 + let%span sresult'18 = "result.rs" 41 32 41 33 + let%span sresult'19 = "result.rs" 43 38 43 39 + let%span sresult'20 = "result.rs" 44 39 44 40 + let%span sresult'21 = "result.rs" 47 30 47 32 + let%span sresult'22 = "result.rs" 47 51 47 53 + let%span sresult'23 = "result.rs" 48 22 48 23 + let%span sresult'24 = "result.rs" 48 38 48 39 + let%span sresult'25 = "result.rs" 49 31 49 33 + let%span sresult'26 = "result.rs" 49 52 49 54 + let%span sresult'27 = "result.rs" 50 23 50 24 + let%span sresult'28 = "result.rs" 50 43 50 45 + let%span sresult'29 = "result.rs" 53 22 53 24 + let%span sresult'30 = "result.rs" 53 39 53 40 + let%span sresult'31 = "result.rs" 54 28 54 29 + let%span sresult'32 = "result.rs" 54 44 54 45 + let%span sresult'33 = "result.rs" 55 23 55 25 + let%span sresult'34 = "result.rs" 55 44 55 46 + let%span sresult'35 = "result.rs" 56 29 56 30 + let%span sresult'36 = "result.rs" 56 45 56 46 + let%span sresult'37 = "result.rs" 59 45 59 46 + let%span sresult'38 = "result.rs" 60 51 60 53 + let%span sresult'39 = "result.rs" 61 45 61 46 + let%span sresult'40 = "result.rs" 62 51 62 53 + let%span sresult'41 = "result.rs" 64 45 64 46 + let%span sresult'42 = "result.rs" 65 51 65 53 + let%span sresult'43 = "result.rs" 66 45 66 46 + let%span sresult'44 = "result.rs" 67 51 67 53 + let%span sresult'45 = "result.rs" 72 48 72 49 + let%span sresult'46 = "result.rs" 73 49 73 50 + let%span sresult'47 = "result.rs" 74 44 74 46 + let%span sresult'48 = "result.rs" 75 53 75 55 + let%span sresult'49 = "result.rs" 75 4 75 56 + let%span sresult'50 = "result.rs" 73 4 73 51 + let%span sresult'51 = "result.rs" 71 4 71 38 + let%span sresult'52 = "result.rs" 67 4 67 54 + let%span sresult'53 = "result.rs" 66 4 66 47 + let%span sresult'54 = "result.rs" 65 4 65 54 + let%span sresult'55 = "result.rs" 64 4 64 47 + let%span sresult'56 = "result.rs" 62 4 62 54 + let%span sresult'57 = "result.rs" 61 4 61 47 + let%span sresult'58 = "result.rs" 60 4 60 54 + let%span sresult'59 = "result.rs" 59 4 59 47 + let%span sresult'60 = "result.rs" 56 4 56 47 + let%span sresult'61 = "result.rs" 55 4 55 47 + let%span sresult'62 = "result.rs" 54 4 54 46 + let%span sresult'63 = "result.rs" 53 4 53 41 + let%span sresult'64 = "result.rs" 50 4 50 46 + let%span sresult'65 = "result.rs" 49 4 49 55 + let%span sresult'66 = "result.rs" 48 4 48 40 + let%span sresult'67 = "result.rs" 47 4 47 54 + let%span sresult'68 = "result.rs" 44 4 44 41 + let%span sresult'69 = "result.rs" 43 4 43 40 + let%span sresult'70 = "result.rs" 41 4 41 34 + let%span sresult'71 = "result.rs" 40 4 40 33 + let%span sresult'72 = "result.rs" 37 4 37 35 + let%span sresult'73 = "result.rs" 33 4 33 29 + let%span sresult'74 = "result.rs" 30 4 30 35 + let%span sresult'75 = "result.rs" 28 4 28 34 + let%span sresult'76 = "result.rs" 26 4 26 29 + let%span sresult'77 = "result.rs" 24 4 24 29 + let%span sresult'78 = "result.rs" 21 4 21 45 + let%span sresult'79 = "result.rs" 20 4 20 39 + let%span sresult'80 = "result.rs" 17 4 17 37 + let%span sresult'81 = "result.rs" 16 4 16 31 + let%span sresult'82 = "result.rs" 14 4 14 31 + let%span sresult'83 = "result.rs" 13 4 13 34 + let%span sresult'84 = "result.rs" 10 4 10 41 + let%span sresult'85 = "result.rs" 8 4 8 39 + let%span sresult'86 = "../../../creusot-contracts/src/std/result.rs" 22 26 22 63 + let%span sresult'87 = "../../../creusot-contracts/src/std/result.rs" 26 26 26 64 + let%span sresult'88 = "../../../creusot-contracts/src/std/result.rs" 30 26 30 74 + let%span sresult'89 = "../../../creusot-contracts/src/std/result.rs" 31 26 31 74 + let%span sresult'90 = "../../../creusot-contracts/src/std/result.rs" 35 26 35 73 + let%span sresult'91 = "../../../creusot-contracts/src/std/result.rs" 36 26 36 75 + let%span sresult'92 = "../../../creusot-contracts/src/std/result.rs" 40 26 40 75 + let%span sresult'93 = "../../../creusot-contracts/src/std/result.rs" 41 26 41 77 + let%span sresult'94 = "../../../creusot-contracts/src/std/result.rs" 52 27 52 53 + let%span sresult'95 = "../../../creusot-contracts/src/std/result.rs" 53 26 53 44 + let%span sresult'96 = "../../../creusot-contracts/src/std/result.rs" 66 27 66 54 + let%span sresult'97 = "../../../creusot-contracts/src/std/result.rs" 67 26 67 45 + let%span sresult'98 = "../../../creusot-contracts/src/std/result.rs" 46 20 47 94 + let%span sresult'99 = "../../../creusot-contracts/src/std/result.rs" 73 26 73 68 + let%span sresult'100 = "../../../creusot-contracts/src/std/result.rs" 74 26 74 77 + let%span sresult'101 = "../../../creusot-contracts/src/std/result.rs" 77 26 77 68 + let%span sresult'102 = "../../../creusot-contracts/src/std/result.rs" 78 26 78 96 + let%span sresult'103 = "../../../creusot-contracts/src/std/result.rs" 84 26 84 72 + let%span sresult'104 = "../../../creusot-contracts/src/std/result.rs" 85 26 85 74 + let%span sresult'105 = "../../../creusot-contracts/src/std/result.rs" 89 26 89 72 + let%span sresult'106 = "../../../creusot-contracts/src/std/result.rs" 90 26 90 73 + let%span sresult'107 = "../../../creusot-contracts/src/std/result.rs" 96 26 96 74 + let%span sresult'108 = "../../../creusot-contracts/src/std/result.rs" 97 26 97 74 + let%span sresult'109 = "../../../creusot-contracts/src/std/result.rs" 111 26 111 93 + let%span sresult'110 = "../../../creusot-contracts/src/std/result.rs" 112 26 112 74 + let%span sresult'111 = "../../../creusot-contracts/src/std/result.rs" 102 26 102 74 + let%span sresult'112 = "../../../creusot-contracts/src/std/result.rs" 103 26 103 74 + let%span sresult'113 = "../../../creusot-contracts/src/std/result.rs" 117 26 117 93 + let%span sresult'114 = "../../../creusot-contracts/src/std/result.rs" 118 26 118 74 + let%span sresult'115 = "../../../creusot-contracts/src/std/result.rs" 126 26 126 61 + let%span sresult'116 = "../../../creusot-contracts/src/std/result.rs" 127 26 127 84 + let%span sresult'117 = "../../../creusot-contracts/src/std/result.rs" 128 26 128 80 let%span soption = "../../../creusot-contracts/src/std/option.rs" 149 27 149 39 let%span soption'0 = "../../../creusot-contracts/src/std/option.rs" 150 26 150 46 let%span soption'1 = "../../../creusot-contracts/src/std/option.rs" 79 26 79 51 @@ -143,16 +141,16 @@ module M_result__test_result [#"result.rs" 3 0 3 20] type t_Result = C_Ok Int32.t | C_Err Int32.t let rec is_ok (self_: t_Result) (return' (x: bool)) = any - [ return''0 (result: bool) -> {[%#sresult'88] result = (exists t: Int32.t. self_ = C_Ok t)} (! return' {result}) ] + [ return''0 (result: bool) -> {[%#sresult'86] result = (exists t: Int32.t. self_ = C_Ok t)} (! return' {result}) ] let rec is_err (self_: t_Result) (return' (x: bool)) = any - [ return''0 (result: bool) -> {[%#sresult'89] result = (exists e: Int32.t. self_ = C_Err e)} (! return' {result}) ] + [ return''0 (result: bool) -> {[%#sresult'87] result = (exists e: Int32.t. self_ = C_Err e)} (! return' {result}) ] type t_Option = C_None | C_Some Int32.t let rec ok (self_: t_Result) (return' (x: t_Option)) = any - [ return''0 (result: t_Option) -> {[%#sresult'90] forall t: Int32.t. self_ = C_Ok t -> result = C_Some t} - {[%#sresult'91] (exists e: Int32.t. self_ = C_Err e) -> result = C_None} + [ return''0 (result: t_Option) -> {[%#sresult'88] forall t: Int32.t. self_ = C_Ok t -> result = C_Some t} + {[%#sresult'89] (exists e: Int32.t. self_ = C_Err e) -> result = C_None} (! return' {result}) ] let rec unwrap (self_: t_Option) (return' (x: Int32.t)) = {[@expl:unwrap requires] [%#soption] self_ <> C_None} @@ -162,37 +160,37 @@ module M_result__test_result [#"result.rs" 3 0 3 20] [ return''0 (result: bool) -> {[%#soption'1] result = (self_ = C_None)} (! return' {result}) ] let rec err (self_: t_Result) (return' (x: t_Option)) = any - [ return''0 (result: t_Option) -> {[%#sresult'92] (exists t: Int32.t. self_ = C_Ok t) -> result = C_None} - {[%#sresult'93] forall e: Int32.t. self_ = C_Err e -> result = C_Some e} + [ return''0 (result: t_Option) -> {[%#sresult'90] (exists t: Int32.t. self_ = C_Ok t) -> result = C_None} + {[%#sresult'91] forall e: Int32.t. self_ = C_Err e -> result = C_Some e} (! return' {result}) ] type t_Result'0 = C_Ok'0 Int32.t | C_Err'0 Int32.t let rec as_ref (self_: t_Result) (return' (x: t_Result'0)) = any - [ return''0 (result: t_Result'0) -> {[%#sresult'94] forall t: Int32.t. self_ = C_Ok t -> result = C_Ok'0 t} - {[%#sresult'95] forall e: Int32.t. self_ = C_Err e -> result = C_Err'0 e} + [ return''0 (result: t_Result'0) -> {[%#sresult'92] forall t: Int32.t. self_ = C_Ok t -> result = C_Ok'0 t} + {[%#sresult'93] forall e: Int32.t. self_ = C_Err e -> result = C_Err'0 e} (! return' {result}) ] let rec unwrap'0 (self_: t_Result'0) (return' (x: Int32.t)) = - {[@expl:unwrap requires] [%#sresult'96] exists t: Int32.t. self_ = C_Ok'0 t} - any [ return''0 (result: Int32.t) -> {[%#sresult'97] C_Ok'0 result = self_} (! return' {result}) ] + {[@expl:unwrap requires] [%#sresult'94] exists t: Int32.t. self_ = C_Ok'0 t} + any [ return''0 (result: Int32.t) -> {[%#sresult'95] C_Ok'0 result = self_} (! return' {result}) ] let rec unwrap_err (self_: t_Result'0) (return' (x: Int32.t)) = - {[@expl:unwrap_err requires] [%#sresult'98] exists e: Int32.t. self_ = C_Err'0 e} - any [ return''0 (result: Int32.t) -> {[%#sresult'99] C_Err'0 result = self_} (! return' {result}) ] + {[@expl:unwrap_err requires] [%#sresult'96] exists e: Int32.t. self_ = C_Err'0 e} + any [ return''0 (result: Int32.t) -> {[%#sresult'97] C_Err'0 result = self_} (! return' {result}) ] type t_Result'1 = C_Ok'1 (MutBorrow.t Int32.t) | C_Err'1 (MutBorrow.t Int32.t) let rec as_mut (self_: MutBorrow.t t_Result) (return' (x: t_Result'1)) = any - [ return''0 (result: t_Result'1) -> {[%#sresult'100] exists t: MutBorrow.t Int32.t. self_.current = C_Ok (t.current) + [ return''0 (result: t_Result'1) -> {[%#sresult'98] exists t: MutBorrow.t Int32.t. self_.current = C_Ok (t.current) /\ self_.final = C_Ok (t.final) /\ result = C_Ok'1 t \/ (exists e: MutBorrow.t Int32.t. self_.current = C_Err (e.current) /\ self_.final = C_Err (e.final) /\ result = C_Err'1 e)} (! return' {result}) ] let rec unwrap'1 (self_: t_Result'1) (return' (x: MutBorrow.t Int32.t)) = - {[@expl:unwrap requires] [%#sresult'96] exists t: MutBorrow.t Int32.t. self_ = C_Ok'1 t} - any [ return''0 (result: MutBorrow.t Int32.t) -> {[%#sresult'97] C_Ok'1 result = self_} (! return' {result}) ] + {[@expl:unwrap requires] [%#sresult'94] exists t: MutBorrow.t Int32.t. self_ = C_Ok'1 t} + any [ return''0 (result: MutBorrow.t Int32.t) -> {[%#sresult'95] C_Ok'1 result = self_} (! return' {result}) ] predicate resolve [@inline:trivial] (self: MutBorrow.t Int32.t) = [%#sresolve] self.final = self.current @@ -203,20 +201,20 @@ module M_result__test_result [#"result.rs" 3 0 3 20] meta "rewrite_def" predicate resolve'0 let rec unwrap'2 (self_: t_Result) (return' (x: Int32.t)) = - {[@expl:unwrap requires] [%#sresult'96] exists t: Int32.t. self_ = C_Ok t} - any [ return''0 (result: Int32.t) -> {[%#sresult'97] C_Ok result = self_} (! return' {result}) ] + {[@expl:unwrap requires] [%#sresult'94] exists t: Int32.t. self_ = C_Ok t} + any [ return''0 (result: Int32.t) -> {[%#sresult'95] C_Ok result = self_} (! return' {result}) ] let rec unwrap_err'0 (self_: t_Result'1) (return' (x: MutBorrow.t Int32.t)) = - {[@expl:unwrap_err requires] [%#sresult'98] exists e: MutBorrow.t Int32.t. self_ = C_Err'1 e} - any [ return''0 (result: MutBorrow.t Int32.t) -> {[%#sresult'99] C_Err'1 result = self_} (! return' {result}) ] + {[@expl:unwrap_err requires] [%#sresult'96] exists e: MutBorrow.t Int32.t. self_ = C_Err'1 e} + any [ return''0 (result: MutBorrow.t Int32.t) -> {[%#sresult'97] C_Err'1 result = self_} (! return' {result}) ] let rec unwrap_err'1 (self_: t_Result) (return' (x: Int32.t)) = - {[@expl:unwrap_err requires] [%#sresult'98] exists e: Int32.t. self_ = C_Err e} - any [ return''0 (result: Int32.t) -> {[%#sresult'99] C_Err result = self_} (! return' {result}) ] + {[@expl:unwrap_err requires] [%#sresult'96] exists e: Int32.t. self_ = C_Err e} + any [ return''0 (result: Int32.t) -> {[%#sresult'97] C_Err result = self_} (! return' {result}) ] let rec unwrap_or (self_: t_Result) (default: Int32.t) (return' (x: Int32.t)) = any - [ return''0 (result: Int32.t) -> {[%#sresult'101] forall t: Int32.t. self_ = C_Ok t -> result = t} - {[%#sresult'102] (exists e: Int32.t. self_ = C_Err e) -> result = default} + [ return''0 (result: Int32.t) -> {[%#sresult'99] forall t: Int32.t. self_ = C_Ok t -> result = t} + {[%#sresult'100] (exists e: Int32.t. self_ = C_Err e) -> result = default} (! return' {result}) ] predicate postcondition_once [@inline:trivial] (self: ()) (args: ()) (result: Int32.t) = @@ -281,60 +279,60 @@ module M_result__test_result [#"result.rs" 3 0 3 20] [ return''0 (result: Int32.t) -> {[%#snum] result = (0: Int32.t)} (! return' {result}) ] let rec unwrap_or_default (self_: t_Result) (return' (x: Int32.t)) = any - [ return''0 (result: Int32.t) -> {[%#sresult'103] forall t: Int32.t. self_ = C_Ok t -> result = t} - {[%#sresult'104] (exists e: Int32.t. self_ = C_Err e) -> postcondition () () result} + [ return''0 (result: Int32.t) -> {[%#sresult'101] forall t: Int32.t. self_ = C_Ok t -> result = t} + {[%#sresult'102] (exists e: Int32.t. self_ = C_Err e) -> postcondition () () result} (! return' {result}) ] let rec and (self_: t_Result) (res: t_Result) (return' (x: t_Result)) = any - [ return''0 (result: t_Result) -> {[%#sresult'105] (exists t: Int32.t. self_ = C_Ok t) -> result = res} - {[%#sresult'106] forall e: Int32.t. self_ = C_Err e -> result = C_Err e} + [ return''0 (result: t_Result) -> {[%#sresult'103] (exists t: Int32.t. self_ = C_Ok t) -> result = res} + {[%#sresult'104] forall e: Int32.t. self_ = C_Err e -> result = C_Err e} (! return' {result}) ] let rec or (self_: t_Result) (res: t_Result) (return' (x: t_Result)) = any - [ return''0 (result: t_Result) -> {[%#sresult'107] forall t: Int32.t. self_ = C_Ok t -> result = C_Ok t} - {[%#sresult'108] (exists e: Int32.t. self_ = C_Err e) -> result = res} + [ return''0 (result: t_Result) -> {[%#sresult'105] forall t: Int32.t. self_ = C_Ok t -> result = C_Ok t} + {[%#sresult'106] (exists e: Int32.t. self_ = C_Err e) -> result = res} (! return' {result}) ] type t_Result'2 = C_Ok'2 Int32.t | C_Err'2 Int32.t let rec copied (self_: t_Result'0) (return' (x: t_Result'2)) = any - [ return''0 (result: t_Result'2) -> {[%#sresult'109] forall t: Int32.t. self_ = C_Ok'0 t -> result = C_Ok'2 t} - {[%#sresult'110] forall e: Int32.t. self_ = C_Err'0 e -> result = C_Err'2 e} + [ return''0 (result: t_Result'2) -> {[%#sresult'107] forall t: Int32.t. self_ = C_Ok'0 t -> result = C_Ok'2 t} + {[%#sresult'108] forall e: Int32.t. self_ = C_Err'0 e -> result = C_Err'2 e} (! return' {result}) ] let rec unwrap'3 (self_: t_Result'2) (return' (x: Int32.t)) = - {[@expl:unwrap requires] [%#sresult'96] exists t: Int32.t. self_ = C_Ok'2 t} - any [ return''0 (result: Int32.t) -> {[%#sresult'97] C_Ok'2 result = self_} (! return' {result}) ] + {[@expl:unwrap requires] [%#sresult'94] exists t: Int32.t. self_ = C_Ok'2 t} + any [ return''0 (result: Int32.t) -> {[%#sresult'95] C_Ok'2 result = self_} (! return' {result}) ] let rec unwrap_err'2 (self_: t_Result'2) (return' (x: Int32.t)) = - {[@expl:unwrap_err requires] [%#sresult'98] exists e: Int32.t. self_ = C_Err'2 e} - any [ return''0 (result: Int32.t) -> {[%#sresult'99] C_Err'2 result = self_} (! return' {result}) ] + {[@expl:unwrap_err requires] [%#sresult'96] exists e: Int32.t. self_ = C_Err'2 e} + any [ return''0 (result: Int32.t) -> {[%#sresult'97] C_Err'2 result = self_} (! return' {result}) ] type t_Result'3 = C_Ok'3 Int32.t | C_Err'3 (MutBorrow.t Int32.t) let rec copied'0 (self_: t_Result'1) (return' (x: t_Result'3)) = any - [ return''0 (result: t_Result'3) -> {[%#sresult'111] forall t: MutBorrow.t Int32.t. self_ = C_Ok'1 t + [ return''0 (result: t_Result'3) -> {[%#sresult'109] forall t: MutBorrow.t Int32.t. self_ = C_Ok'1 t -> result = C_Ok'3 (t.current) /\ resolve t} - {[%#sresult'112] forall e: MutBorrow.t Int32.t. self_ = C_Err'1 e -> result = C_Err'3 e} + {[%#sresult'110] forall e: MutBorrow.t Int32.t. self_ = C_Err'1 e -> result = C_Err'3 e} (! return' {result}) ] let rec unwrap'4 (self_: t_Result'3) (return' (x: Int32.t)) = - {[@expl:unwrap requires] [%#sresult'96] exists t: Int32.t. self_ = C_Ok'3 t} - any [ return''0 (result: Int32.t) -> {[%#sresult'97] C_Ok'3 result = self_} (! return' {result}) ] + {[@expl:unwrap requires] [%#sresult'94] exists t: Int32.t. self_ = C_Ok'3 t} + any [ return''0 (result: Int32.t) -> {[%#sresult'95] C_Ok'3 result = self_} (! return' {result}) ] let rec unwrap_err'3 (self_: t_Result'3) (return' (x: MutBorrow.t Int32.t)) = - {[@expl:unwrap_err requires] [%#sresult'98] exists e: MutBorrow.t Int32.t. self_ = C_Err'3 e} - any [ return''0 (result: MutBorrow.t Int32.t) -> {[%#sresult'99] C_Err'3 result = self_} (! return' {result}) ] + {[@expl:unwrap_err requires] [%#sresult'96] exists e: MutBorrow.t Int32.t. self_ = C_Err'3 e} + any [ return''0 (result: MutBorrow.t Int32.t) -> {[%#sresult'97] C_Err'3 result = self_} (! return' {result}) ] let rec cloned (self_: t_Result'0) (return' (x: t_Result'2)) = any - [ return''0 (result: t_Result'2) -> {[%#sresult'113] forall t: Int32.t. self_ = C_Ok'0 t -> result = C_Ok'2 t} - {[%#sresult'114] forall e: Int32.t. self_ = C_Err'0 e -> result = C_Err'2 e} + [ return''0 (result: t_Result'2) -> {[%#sresult'111] forall t: Int32.t. self_ = C_Ok'0 t -> result = C_Ok'2 t} + {[%#sresult'112] forall e: Int32.t. self_ = C_Err'0 e -> result = C_Err'2 e} (! return' {result}) ] let rec cloned'0 (self_: t_Result'1) (return' (x: t_Result'3)) = any - [ return''0 (result: t_Result'3) -> {[%#sresult'115] forall t: MutBorrow.t Int32.t. self_ = C_Ok'1 t + [ return''0 (result: t_Result'3) -> {[%#sresult'113] forall t: MutBorrow.t Int32.t. self_ = C_Ok'1 t -> result = C_Ok'3 (t.current) /\ resolve t} - {[%#sresult'116] forall e: MutBorrow.t Int32.t. self_ = C_Err'1 e -> result = C_Err'3 e} + {[%#sresult'114] forall e: MutBorrow.t Int32.t. self_ = C_Err'1 e -> result = C_Err'3 e} (! return' {result}) ] type t_Result'4 = C_Ok'4 t_Option | C_Err'4 Int32.t @@ -342,9 +340,9 @@ module M_result__test_result [#"result.rs" 3 0 3 20] type t_Option'0 = C_None'0 | C_Some'0 t_Result let rec transpose (self_: t_Result'4) (return' (x: t_Option'0)) = any - [ return''0 (result: t_Option'0) -> {[%#sresult'117] self_ = C_Ok'4 (C_None) -> result = C_None'0} - {[%#sresult'118] forall t: Int32.t. self_ = C_Ok'4 (C_Some t) -> result = C_Some'0 (C_Ok t)} - {[%#sresult'119] forall e: Int32.t. self_ = C_Err'4 e -> result = C_Some'0 (C_Err e)} + [ return''0 (result: t_Option'0) -> {[%#sresult'115] self_ = C_Ok'4 (C_None) -> result = C_None'0} + {[%#sresult'116] forall t: Int32.t. self_ = C_Ok'4 (C_Some t) -> result = C_Some'0 (C_Ok t)} + {[%#sresult'117] forall e: Int32.t. self_ = C_Err'4 e -> result = C_Some'0 (C_Err e)} (! return' {result}) ] let rec is_none'0 (self_: t_Option'0) (return' (x: bool)) = any @@ -361,459 +359,453 @@ module M_result__test_result [#"result.rs" 3 0 3 20] [ bb0 = s0 [ s0 = [ &ok'0 <- C_Ok ([%#sresult] (1: Int32.t)) ] s1 | s1 = [ &err'0 <- C_Err ([%#sresult'0] (-1: Int32.t)) ] s2 - | s2 = is_ok {ok'0} (fun (_ret: bool) -> [ &_5 <- _ret ] s3) + | s2 = is_ok {ok'0} (fun (_ret: bool) -> [ &_4 <- _ret ] s3) | s3 = bb1 ] - | bb1 = any [ br0 -> {_5 = false} (! bb3) | br1 -> {_5} (! bb2) ] - | bb2 = s0 [ s0 = is_ok {err'0} (fun (_ret: bool) -> [ &_7 <- _ret ] s1) | s1 = bb4 ] - | bb4 = s0 [ s0 = [ &_4 <- not _7 ] s1 | s1 = bb5 ] - | bb3 = s0 [ s0 = [ &_4 <- [%#sresult'1] false ] s1 | s1 = bb5 ] - | bb5 = any [ br0 -> {_4 = false} (! bb6) | br1 -> {_4} (! bb8) ] - | bb8 = s0 [ s0 = is_err {err'0} (fun (_ret: bool) -> [ &_12 <- _ret ] s1) | s1 = bb9 ] - | bb9 = any [ br0 -> {_12 = false} (! bb11) | br1 -> {_12} (! bb10) ] - | bb10 = s0 [ s0 = is_err {ok'0} (fun (_ret: bool) -> [ &_14 <- _ret ] s1) | s1 = bb12 ] - | bb12 = s0 [ s0 = [ &_11 <- not _14 ] s1 | s1 = bb13 ] - | bb11 = s0 [ s0 = [ &_11 <- [%#sresult'2] false ] s1 | s1 = bb13 ] - | bb13 = any [ br0 -> {_11 = false} (! bb14) | br1 -> {_11} (! bb16) ] - | bb16 = s0 [ s0 = ok {ok'0} (fun (_ret: t_Option) -> [ &_20 <- _ret ] s1) | s1 = bb17 ] - | bb17 = s0 [ s0 = unwrap {_20} (fun (_ret: Int32.t) -> [ &_19 <- _ret ] s1) | s1 = bb18 ] - | bb18 = s0 - [ s0 = [ &_18 <- _19 = ([%#sresult'3] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_18 = false} (! bb19) | br1 -> {_18} (! bb21) ] ] - | bb21 = s0 [ s0 = ok {err'0} (fun (_ret: t_Option) -> [ &_26 <- _ret ] s1) | s1 = bb22 ] - | bb22 = s0 [ s0 = is_none {_26} (fun (_ret: bool) -> [ &_24 <- _ret ] s1) | s1 = bb23 ] - | bb23 = any [ br0 -> {_24 = false} (! bb24) | br1 -> {_24} (! bb26) ] - | bb26 = s0 [ s0 = err {ok'0} (fun (_ret: t_Option) -> [ &_32 <- _ret ] s1) | s1 = bb27 ] - | bb27 = s0 [ s0 = is_none {_32} (fun (_ret: bool) -> [ &_30 <- _ret ] s1) | s1 = bb28 ] - | bb28 = any [ br0 -> {_30 = false} (! bb29) | br1 -> {_30} (! bb31) ] - | bb31 = s0 [ s0 = err {err'0} (fun (_ret: t_Option) -> [ &_38 <- _ret ] s1) | s1 = bb32 ] - | bb32 = s0 [ s0 = unwrap {_38} (fun (_ret: Int32.t) -> [ &_37 <- _ret ] s1) | s1 = bb33 ] - | bb33 = s0 - [ s0 = [ &_36 <- _37 = ([%#sresult'4] (-1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_36 = false} (! bb34) | br1 -> {_36} (! bb36) ] ] - | bb36 = s0 [ s0 = as_ref {ok'0} (fun (_ret: t_Result'0) -> [ &_45 <- _ret ] s1) | s1 = bb37 ] - | bb37 = s0 [ s0 = unwrap'0 {_45} (fun (_ret: Int32.t) -> [ &_44 <- _ret ] s1) | s1 = bb38 ] - | bb38 = s0 - [ s0 = [ &_42 <- _44 = ([%#sresult'5] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_42 = false} (! bb39) | br1 -> {_42} (! bb41) ] ] - | bb41 = s0 [ s0 = as_ref {err'0} (fun (_ret: t_Result'0) -> [ &_52 <- _ret ] s1) | s1 = bb42 ] - | bb42 = s0 [ s0 = unwrap_err {_52} (fun (_ret: Int32.t) -> [ &_51 <- _ret ] s1) | s1 = bb43 ] - | bb43 = s0 - [ s0 = [ &_49 <- _51 = ([%#sresult'6] (-1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_49 = false} (! bb44) | br1 -> {_49} (! bb46) ] ] - | bb46 = s0 + | bb1 = any [ br0 -> {_4 = false} (! bb7) | br1 -> {_4} (! bb2) ] + | bb2 = s0 [ s0 = is_ok {err'0} (fun (_ret: bool) -> [ &_6 <- _ret ] s1) | s1 = bb3 ] + | bb3 = any [ br0 -> {_6 = false} (! bb5) | br1 -> {_6} (! bb7) ] + | bb5 = s0 [ s0 = is_err {err'0} (fun (_ret: bool) -> [ &_10 <- _ret ] s1) | s1 = bb8 ] + | bb8 = any [ br0 -> {_10 = false} (! bb14) | br1 -> {_10} (! bb9) ] + | bb9 = s0 [ s0 = is_err {ok'0} (fun (_ret: bool) -> [ &_12 <- _ret ] s1) | s1 = bb10 ] + | bb10 = any [ br0 -> {_12 = false} (! bb12) | br1 -> {_12} (! bb14) ] + | bb12 = s0 [ s0 = ok {ok'0} (fun (_ret: t_Option) -> [ &_18 <- _ret ] s1) | s1 = bb15 ] + | bb15 = s0 [ s0 = unwrap {_18} (fun (_ret: Int32.t) -> [ &_17 <- _ret ] s1) | s1 = bb16 ] + | bb16 = s0 + [ s0 = [ &_16 <- _17 = ([%#sresult'1] (1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_16 = false} (! bb18) | br1 -> {_16} (! bb17) ] ] + | bb17 = s0 [ s0 = ok {err'0} (fun (_ret: t_Option) -> [ &_24 <- _ret ] s1) | s1 = bb19 ] + | bb19 = s0 [ s0 = is_none {_24} (fun (_ret: bool) -> [ &_22 <- _ret ] s1) | s1 = bb20 ] + | bb20 = any [ br0 -> {_22 = false} (! bb22) | br1 -> {_22} (! bb21) ] + | bb21 = s0 [ s0 = err {ok'0} (fun (_ret: t_Option) -> [ &_30 <- _ret ] s1) | s1 = bb23 ] + | bb23 = s0 [ s0 = is_none {_30} (fun (_ret: bool) -> [ &_28 <- _ret ] s1) | s1 = bb24 ] + | bb24 = any [ br0 -> {_28 = false} (! bb26) | br1 -> {_28} (! bb25) ] + | bb25 = s0 [ s0 = err {err'0} (fun (_ret: t_Option) -> [ &_36 <- _ret ] s1) | s1 = bb27 ] + | bb27 = s0 [ s0 = unwrap {_36} (fun (_ret: Int32.t) -> [ &_35 <- _ret ] s1) | s1 = bb28 ] + | bb28 = s0 + [ s0 = [ &_34 <- _35 = ([%#sresult'2] (-1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_34 = false} (! bb30) | br1 -> {_34} (! bb29) ] ] + | bb29 = s0 [ s0 = as_ref {ok'0} (fun (_ret: t_Result'0) -> [ &_43 <- _ret ] s1) | s1 = bb31 ] + | bb31 = s0 [ s0 = unwrap'0 {_43} (fun (_ret: Int32.t) -> [ &_42 <- _ret ] s1) | s1 = bb32 ] + | bb32 = s0 + [ s0 = [ &_40 <- _42 = ([%#sresult'3] (1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_40 = false} (! bb34) | br1 -> {_40} (! bb33) ] ] + | bb33 = s0 [ s0 = as_ref {err'0} (fun (_ret: t_Result'0) -> [ &_50 <- _ret ] s1) | s1 = bb35 ] + | bb35 = s0 [ s0 = unwrap_err {_50} (fun (_ret: Int32.t) -> [ &_49 <- _ret ] s1) | s1 = bb36 ] + | bb36 = s0 + [ s0 = [ &_47 <- _49 = ([%#sresult'4] (-1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_47 = false} (! bb38) | br1 -> {_47} (! bb37) ] ] + | bb37 = s0 [ s0 = MutBorrow.borrow_mut {ok'0} - (fun (_ret: MutBorrow.t t_Result) -> [ &_57 <- _ret ] [ &ok'0 <- _ret.final ] s1) - | s1 = as_mut {_57} (fun (_ret: t_Result'1) -> [ &_56 <- _ret ] s2) - | s2 = bb47 ] - | bb47 = s0 [ s0 = unwrap'1 {_56} (fun (_ret: MutBorrow.t Int32.t) -> [ &_55 <- _ret ] s1) | s1 = bb48 ] - | bb48 = s0 - [ s0 = [ &_55 <- { _55 with current = ([%#sresult'7] (0: Int32.t)) } ] s1 - | s1 = -{resolve'0 _55}- s2 - | s2 = unwrap'2 {ok'0} (fun (_ret: Int32.t) -> [ &_60 <- _ret ] s3) - | s3 = bb49 ] - | bb49 = s0 - [ s0 = [ &_59 <- _60 = ([%#sresult'8] (0: Int32.t)) ] s1 - | s1 = any [ br0 -> {_59 = false} (! bb50) | br1 -> {_59} (! bb52) ] ] - | bb52 = s0 + (fun (_ret: MutBorrow.t t_Result) -> [ &_55 <- _ret ] [ &ok'0 <- _ret.final ] s1) + | s1 = as_mut {_55} (fun (_ret: t_Result'1) -> [ &_54 <- _ret ] s2) + | s2 = bb39 ] + | bb39 = s0 [ s0 = unwrap'1 {_54} (fun (_ret: MutBorrow.t Int32.t) -> [ &_53 <- _ret ] s1) | s1 = bb40 ] + | bb40 = s0 + [ s0 = [ &_53 <- { _53 with current = ([%#sresult'5] (0: Int32.t)) } ] s1 + | s1 = -{resolve'0 _53}- s2 + | s2 = unwrap'2 {ok'0} (fun (_ret: Int32.t) -> [ &_58 <- _ret ] s3) + | s3 = bb41 ] + | bb41 = s0 + [ s0 = [ &_57 <- _58 = ([%#sresult'6] (0: Int32.t)) ] s1 + | s1 = any [ br0 -> {_57 = false} (! bb43) | br1 -> {_57} (! bb42) ] ] + | bb42 = s0 [ s0 = MutBorrow.borrow_mut {ok'0} - (fun (_ret: MutBorrow.t t_Result) -> [ &_65 <- _ret ] [ &ok'0 <- _ret.final ] s1) - | s1 = as_mut {_65} (fun (_ret: t_Result'1) -> [ &_64 <- _ret ] s2) - | s2 = bb53 ] - | bb53 = s0 [ s0 = unwrap'1 {_64} (fun (_ret: MutBorrow.t Int32.t) -> [ &_63 <- _ret ] s1) | s1 = bb54 ] - | bb54 = s0 - [ s0 = [ &_63 <- { _63 with current = ([%#sresult'9] (1: Int32.t)) } ] s1 - | s1 = -{resolve'0 _63}- s2 - | s2 = unwrap'2 {ok'0} (fun (_ret: Int32.t) -> [ &_68 <- _ret ] s3) - | s3 = bb55 ] - | bb55 = s0 - [ s0 = [ &_67 <- _68 = ([%#sresult'10] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_67 = false} (! bb56) | br1 -> {_67} (! bb58) ] ] - | bb58 = s0 + (fun (_ret: MutBorrow.t t_Result) -> [ &_63 <- _ret ] [ &ok'0 <- _ret.final ] s1) + | s1 = as_mut {_63} (fun (_ret: t_Result'1) -> [ &_62 <- _ret ] s2) + | s2 = bb44 ] + | bb44 = s0 [ s0 = unwrap'1 {_62} (fun (_ret: MutBorrow.t Int32.t) -> [ &_61 <- _ret ] s1) | s1 = bb45 ] + | bb45 = s0 + [ s0 = [ &_61 <- { _61 with current = ([%#sresult'7] (1: Int32.t)) } ] s1 + | s1 = -{resolve'0 _61}- s2 + | s2 = unwrap'2 {ok'0} (fun (_ret: Int32.t) -> [ &_66 <- _ret ] s3) + | s3 = bb46 ] + | bb46 = s0 + [ s0 = [ &_65 <- _66 = ([%#sresult'8] (1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_65 = false} (! bb48) | br1 -> {_65} (! bb47) ] ] + | bb47 = s0 [ s0 = MutBorrow.borrow_mut {err'0} - (fun (_ret: MutBorrow.t t_Result) -> [ &_73 <- _ret ] [ &err'0 <- _ret.final ] s1) - | s1 = as_mut {_73} (fun (_ret: t_Result'1) -> [ &_72 <- _ret ] s2) - | s2 = bb59 ] - | bb59 = s0 [ s0 = unwrap_err'0 {_72} (fun (_ret: MutBorrow.t Int32.t) -> [ &_71 <- _ret ] s1) | s1 = bb60 ] - | bb60 = s0 - [ s0 = [ &_71 <- { _71 with current = ([%#sresult'11] (0: Int32.t)) } ] s1 - | s1 = -{resolve'0 _71}- s2 - | s2 = unwrap_err'1 {err'0} (fun (_ret: Int32.t) -> [ &_76 <- _ret ] s3) - | s3 = bb61 ] - | bb61 = s0 - [ s0 = [ &_75 <- _76 = ([%#sresult'12] (0: Int32.t)) ] s1 - | s1 = any [ br0 -> {_75 = false} (! bb62) | br1 -> {_75} (! bb64) ] ] - | bb64 = s0 + (fun (_ret: MutBorrow.t t_Result) -> [ &_71 <- _ret ] [ &err'0 <- _ret.final ] s1) + | s1 = as_mut {_71} (fun (_ret: t_Result'1) -> [ &_70 <- _ret ] s2) + | s2 = bb49 ] + | bb49 = s0 [ s0 = unwrap_err'0 {_70} (fun (_ret: MutBorrow.t Int32.t) -> [ &_69 <- _ret ] s1) | s1 = bb50 ] + | bb50 = s0 + [ s0 = [ &_69 <- { _69 with current = ([%#sresult'9] (0: Int32.t)) } ] s1 + | s1 = -{resolve'0 _69}- s2 + | s2 = unwrap_err'1 {err'0} (fun (_ret: Int32.t) -> [ &_74 <- _ret ] s3) + | s3 = bb51 ] + | bb51 = s0 + [ s0 = [ &_73 <- _74 = ([%#sresult'10] (0: Int32.t)) ] s1 + | s1 = any [ br0 -> {_73 = false} (! bb53) | br1 -> {_73} (! bb52) ] ] + | bb52 = s0 [ s0 = MutBorrow.borrow_mut {err'0} - (fun (_ret: MutBorrow.t t_Result) -> [ &_81 <- _ret ] [ &err'0 <- _ret.final ] s1) - | s1 = as_mut {_81} (fun (_ret: t_Result'1) -> [ &_80 <- _ret ] s2) - | s2 = bb65 ] - | bb65 = s0 [ s0 = unwrap_err'0 {_80} (fun (_ret: MutBorrow.t Int32.t) -> [ &_79 <- _ret ] s1) | s1 = bb66 ] + (fun (_ret: MutBorrow.t t_Result) -> [ &_79 <- _ret ] [ &err'0 <- _ret.final ] s1) + | s1 = as_mut {_79} (fun (_ret: t_Result'1) -> [ &_78 <- _ret ] s2) + | s2 = bb54 ] + | bb54 = s0 [ s0 = unwrap_err'0 {_78} (fun (_ret: MutBorrow.t Int32.t) -> [ &_77 <- _ret ] s1) | s1 = bb55 ] + | bb55 = s0 + [ s0 = [ &_77 <- { _77 with current = ([%#sresult'11] (-1: Int32.t)) } ] s1 + | s1 = -{resolve'0 _77}- s2 + | s2 = unwrap_err'1 {err'0} (fun (_ret: Int32.t) -> [ &_82 <- _ret ] s3) + | s3 = bb56 ] + | bb56 = s0 + [ s0 = [ &_81 <- _82 = ([%#sresult'12] (-1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_81 = false} (! bb58) | br1 -> {_81} (! bb57) ] ] + | bb57 = s0 [ s0 = unwrap'2 {ok'0} (fun (_ret: Int32.t) -> [ &_87 <- _ret ] s1) | s1 = bb59 ] + | bb59 = s0 + [ s0 = [ &_86 <- _87 = ([%#sresult'13] (1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_86 = false} (! bb61) | br1 -> {_86} (! bb60) ] ] + | bb60 = s0 [ s0 = unwrap_err'1 {err'0} (fun (_ret: Int32.t) -> [ &_92 <- _ret ] s1) | s1 = bb62 ] + | bb62 = s0 + [ s0 = [ &_91 <- _92 = ([%#sresult'14] (-1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_91 = false} (! bb64) | br1 -> {_91} (! bb63) ] ] + | bb63 = s0 + [ s0 = unwrap_or {ok'0} {[%#sresult'15] (0: Int32.t)} (fun (_ret: Int32.t) -> [ &_97 <- _ret ] s1) | s1 = bb65 ] + | bb65 = s0 + [ s0 = [ &_96 <- _97 = ([%#sresult'16] (1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_96 = false} (! bb67) | br1 -> {_96} (! bb66) ] ] | bb66 = s0 - [ s0 = [ &_79 <- { _79 with current = ([%#sresult'13] (-1: Int32.t)) } ] s1 - | s1 = -{resolve'0 _79}- s2 - | s2 = unwrap_err'1 {err'0} (fun (_ret: Int32.t) -> [ &_84 <- _ret ] s3) - | s3 = bb67 ] - | bb67 = s0 - [ s0 = [ &_83 <- _84 = ([%#sresult'14] (-1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_83 = false} (! bb68) | br1 -> {_83} (! bb70) ] ] - | bb70 = s0 [ s0 = unwrap'2 {ok'0} (fun (_ret: Int32.t) -> [ &_89 <- _ret ] s1) | s1 = bb71 ] + [ s0 = unwrap_or {err'0} {[%#sresult'17] (0: Int32.t)} (fun (_ret: Int32.t) -> [ &_102 <- _ret ] s1) | s1 = bb68 ] + | bb68 = s0 + [ s0 = [ &_101 <- _102 = ([%#sresult'18] (0: Int32.t)) ] s1 + | s1 = any [ br0 -> {_101 = false} (! bb70) | br1 -> {_101} (! bb69) ] ] + | bb69 = s0 [ s0 = unwrap_or_default {ok'0} (fun (_ret: Int32.t) -> [ &_107 <- _ret ] s1) | s1 = bb71 ] | bb71 = s0 - [ s0 = [ &_88 <- _89 = ([%#sresult'15] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_88 = false} (! bb72) | br1 -> {_88} (! bb74) ] ] - | bb74 = s0 [ s0 = unwrap_err'1 {err'0} (fun (_ret: Int32.t) -> [ &_94 <- _ret ] s1) | s1 = bb75 ] + [ s0 = [ &_106 <- _107 = ([%#sresult'19] (1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_106 = false} (! bb73) | br1 -> {_106} (! bb72) ] ] + | bb72 = s0 [ s0 = unwrap_or_default {err'0} (fun (_ret: Int32.t) -> [ &_112 <- _ret ] s1) | s1 = bb74 ] + | bb74 = s0 + [ s0 = [ &_111 <- _112 = ([%#sresult'20] (0: Int32.t)) ] s1 + | s1 = any [ br0 -> {_111 = false} (! bb76) | br1 -> {_111} (! bb75) ] ] | bb75 = s0 - [ s0 = [ &_93 <- _94 = ([%#sresult'16] (-1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_93 = false} (! bb76) | br1 -> {_93} (! bb78) ] ] + [ s0 = [ &_120 <- C_Err ([%#sresult'21] (-2: Int32.t)) ] s1 + | s1 = and {ok'0} {_120} (fun (_ret: t_Result) -> [ &_118 <- _ret ] s2) + | s2 = bb77 ] + | bb77 = s0 [ s0 = unwrap_err'1 {_118} (fun (_ret: Int32.t) -> [ &_117 <- _ret ] s1) | s1 = bb78 ] | bb78 = s0 - [ s0 = unwrap_or {ok'0} {[%#sresult'17] (0: Int32.t)} (fun (_ret: Int32.t) -> [ &_99 <- _ret ] s1) | s1 = bb79 ] + [ s0 = [ &_116 <- _117 = ([%#sresult'22] (-2: Int32.t)) ] s1 + | s1 = any [ br0 -> {_116 = false} (! bb80) | br1 -> {_116} (! bb79) ] ] | bb79 = s0 - [ s0 = [ &_98 <- _99 = ([%#sresult'18] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_98 = false} (! bb80) | br1 -> {_98} (! bb82) ] ] + [ s0 = [ &_127 <- C_Ok ([%#sresult'23] (2: Int32.t)) ] s1 + | s1 = and {ok'0} {_127} (fun (_ret: t_Result) -> [ &_125 <- _ret ] s2) + | s2 = bb81 ] + | bb81 = s0 [ s0 = unwrap'2 {_125} (fun (_ret: Int32.t) -> [ &_124 <- _ret ] s1) | s1 = bb82 ] | bb82 = s0 - [ s0 = unwrap_or {err'0} {[%#sresult'19] (0: Int32.t)} (fun (_ret: Int32.t) -> [ &_104 <- _ret ] s1) | s1 = bb83 ] + [ s0 = [ &_123 <- _124 = ([%#sresult'24] (2: Int32.t)) ] s1 + | s1 = any [ br0 -> {_123 = false} (! bb84) | br1 -> {_123} (! bb83) ] ] | bb83 = s0 - [ s0 = [ &_103 <- _104 = ([%#sresult'20] (0: Int32.t)) ] s1 - | s1 = any [ br0 -> {_103 = false} (! bb84) | br1 -> {_103} (! bb86) ] ] - | bb86 = s0 [ s0 = unwrap_or_default {ok'0} (fun (_ret: Int32.t) -> [ &_109 <- _ret ] s1) | s1 = bb87 ] + [ s0 = [ &_134 <- C_Err ([%#sresult'25] (-2: Int32.t)) ] s1 + | s1 = and {err'0} {_134} (fun (_ret: t_Result) -> [ &_132 <- _ret ] s2) + | s2 = bb85 ] + | bb85 = s0 [ s0 = unwrap_err'1 {_132} (fun (_ret: Int32.t) -> [ &_131 <- _ret ] s1) | s1 = bb86 ] + | bb86 = s0 + [ s0 = [ &_130 <- _131 = ([%#sresult'26] (-1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_130 = false} (! bb88) | br1 -> {_130} (! bb87) ] ] | bb87 = s0 - [ s0 = [ &_108 <- _109 = ([%#sresult'21] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_108 = false} (! bb88) | br1 -> {_108} (! bb90) ] ] - | bb90 = s0 [ s0 = unwrap_or_default {err'0} (fun (_ret: Int32.t) -> [ &_114 <- _ret ] s1) | s1 = bb91 ] + [ s0 = [ &_141 <- C_Ok ([%#sresult'27] (2: Int32.t)) ] s1 + | s1 = and {err'0} {_141} (fun (_ret: t_Result) -> [ &_139 <- _ret ] s2) + | s2 = bb89 ] + | bb89 = s0 [ s0 = unwrap_err'1 {_139} (fun (_ret: Int32.t) -> [ &_138 <- _ret ] s1) | s1 = bb90 ] + | bb90 = s0 + [ s0 = [ &_137 <- _138 = ([%#sresult'28] (-1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_137 = false} (! bb92) | br1 -> {_137} (! bb91) ] ] | bb91 = s0 - [ s0 = [ &_113 <- _114 = ([%#sresult'22] (0: Int32.t)) ] s1 - | s1 = any [ br0 -> {_113 = false} (! bb92) | br1 -> {_113} (! bb94) ] ] + [ s0 = [ &_148 <- C_Err ([%#sresult'29] (-2: Int32.t)) ] s1 + | s1 = or {ok'0} {_148} (fun (_ret: t_Result) -> [ &_146 <- _ret ] s2) + | s2 = bb93 ] + | bb93 = s0 [ s0 = unwrap'2 {_146} (fun (_ret: Int32.t) -> [ &_145 <- _ret ] s1) | s1 = bb94 ] | bb94 = s0 - [ s0 = [ &_122 <- C_Err ([%#sresult'23] (-2: Int32.t)) ] s1 - | s1 = and {ok'0} {_122} (fun (_ret: t_Result) -> [ &_120 <- _ret ] s2) - | s2 = bb95 ] - | bb95 = s0 [ s0 = unwrap_err'1 {_120} (fun (_ret: Int32.t) -> [ &_119 <- _ret ] s1) | s1 = bb96 ] - | bb96 = s0 - [ s0 = [ &_118 <- _119 = ([%#sresult'24] (-2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_118 = false} (! bb97) | br1 -> {_118} (! bb99) ] ] + [ s0 = [ &_144 <- _145 = ([%#sresult'30] (1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_144 = false} (! bb96) | br1 -> {_144} (! bb95) ] ] + | bb95 = s0 + [ s0 = [ &_155 <- C_Ok ([%#sresult'31] (2: Int32.t)) ] s1 + | s1 = or {ok'0} {_155} (fun (_ret: t_Result) -> [ &_153 <- _ret ] s2) + | s2 = bb97 ] + | bb97 = s0 [ s0 = unwrap'2 {_153} (fun (_ret: Int32.t) -> [ &_152 <- _ret ] s1) | s1 = bb98 ] + | bb98 = s0 + [ s0 = [ &_151 <- _152 = ([%#sresult'32] (1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_151 = false} (! bb100) | br1 -> {_151} (! bb99) ] ] | bb99 = s0 - [ s0 = [ &_129 <- C_Ok ([%#sresult'25] (2: Int32.t)) ] s1 - | s1 = and {ok'0} {_129} (fun (_ret: t_Result) -> [ &_127 <- _ret ] s2) - | s2 = bb100 ] - | bb100 = s0 [ s0 = unwrap'2 {_127} (fun (_ret: Int32.t) -> [ &_126 <- _ret ] s1) | s1 = bb101 ] - | bb101 = s0 - [ s0 = [ &_125 <- _126 = ([%#sresult'26] (2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_125 = false} (! bb102) | br1 -> {_125} (! bb104) ] ] - | bb104 = s0 - [ s0 = [ &_136 <- C_Err ([%#sresult'27] (-2: Int32.t)) ] s1 - | s1 = and {err'0} {_136} (fun (_ret: t_Result) -> [ &_134 <- _ret ] s2) + [ s0 = [ &_162 <- C_Err ([%#sresult'33] (-2: Int32.t)) ] s1 + | s1 = or {err'0} {_162} (fun (_ret: t_Result) -> [ &_160 <- _ret ] s2) + | s2 = bb101 ] + | bb101 = s0 [ s0 = unwrap_err'1 {_160} (fun (_ret: Int32.t) -> [ &_159 <- _ret ] s1) | s1 = bb102 ] + | bb102 = s0 + [ s0 = [ &_158 <- _159 = ([%#sresult'34] (-2: Int32.t)) ] s1 + | s1 = any [ br0 -> {_158 = false} (! bb104) | br1 -> {_158} (! bb103) ] ] + | bb103 = s0 + [ s0 = [ &_169 <- C_Ok ([%#sresult'35] (2: Int32.t)) ] s1 + | s1 = or {err'0} {_169} (fun (_ret: t_Result) -> [ &_167 <- _ret ] s2) | s2 = bb105 ] - | bb105 = s0 [ s0 = unwrap_err'1 {_134} (fun (_ret: Int32.t) -> [ &_133 <- _ret ] s1) | s1 = bb106 ] + | bb105 = s0 [ s0 = unwrap'2 {_167} (fun (_ret: Int32.t) -> [ &_166 <- _ret ] s1) | s1 = bb106 ] | bb106 = s0 - [ s0 = [ &_132 <- _133 = ([%#sresult'28] (-1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_132 = false} (! bb107) | br1 -> {_132} (! bb109) ] ] - | bb109 = s0 - [ s0 = [ &_143 <- C_Ok ([%#sresult'29] (2: Int32.t)) ] s1 - | s1 = and {err'0} {_143} (fun (_ret: t_Result) -> [ &_141 <- _ret ] s2) - | s2 = bb110 ] - | bb110 = s0 [ s0 = unwrap_err'1 {_141} (fun (_ret: Int32.t) -> [ &_140 <- _ret ] s1) | s1 = bb111 ] + [ s0 = [ &_165 <- _166 = ([%#sresult'36] (2: Int32.t)) ] s1 + | s1 = any [ br0 -> {_165 = false} (! bb108) | br1 -> {_165} (! bb107) ] ] + | bb107 = s0 [ s0 = as_ref {ok'0} (fun (_ret: t_Result'0) -> [ &_175 <- _ret ] s1) | s1 = bb109 ] + | bb109 = s0 [ s0 = copied {_175} (fun (_ret: t_Result'2) -> [ &_174 <- _ret ] s1) | s1 = bb110 ] + | bb110 = s0 [ s0 = unwrap'3 {_174} (fun (_ret: Int32.t) -> [ &_173 <- _ret ] s1) | s1 = bb111 ] | bb111 = s0 - [ s0 = [ &_139 <- _140 = ([%#sresult'30] (-1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_139 = false} (! bb112) | br1 -> {_139} (! bb114) ] ] - | bb114 = s0 - [ s0 = [ &_150 <- C_Err ([%#sresult'31] (-2: Int32.t)) ] s1 - | s1 = or {ok'0} {_150} (fun (_ret: t_Result) -> [ &_148 <- _ret ] s2) - | s2 = bb115 ] - | bb115 = s0 [ s0 = unwrap'2 {_148} (fun (_ret: Int32.t) -> [ &_147 <- _ret ] s1) | s1 = bb116 ] + [ s0 = [ &_172 <- _173 = ([%#sresult'37] (1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_172 = false} (! bb113) | br1 -> {_172} (! bb112) ] ] + | bb112 = s0 [ s0 = as_ref {err'0} (fun (_ret: t_Result'0) -> [ &_183 <- _ret ] s1) | s1 = bb114 ] + | bb114 = s0 [ s0 = copied {_183} (fun (_ret: t_Result'2) -> [ &_182 <- _ret ] s1) | s1 = bb115 ] + | bb115 = s0 [ s0 = unwrap_err'2 {_182} (fun (_ret: Int32.t) -> [ &_181 <- _ret ] s1) | s1 = bb116 ] | bb116 = s0 - [ s0 = [ &_146 <- _147 = ([%#sresult'32] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_146 = false} (! bb117) | br1 -> {_146} (! bb119) ] ] - | bb119 = s0 - [ s0 = [ &_157 <- C_Ok ([%#sresult'33] (2: Int32.t)) ] s1 - | s1 = or {ok'0} {_157} (fun (_ret: t_Result) -> [ &_155 <- _ret ] s2) - | s2 = bb120 ] - | bb120 = s0 [ s0 = unwrap'2 {_155} (fun (_ret: Int32.t) -> [ &_154 <- _ret ] s1) | s1 = bb121 ] + [ s0 = [ &_179 <- _181 = ([%#sresult'38] (-1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_179 = false} (! bb118) | br1 -> {_179} (! bb117) ] ] + | bb117 = s0 + [ s0 = MutBorrow.borrow_mut {ok'0} + (fun (_ret: MutBorrow.t t_Result) -> [ &_191 <- _ret ] [ &ok'0 <- _ret.final ] s1) + | s1 = as_mut {_191} (fun (_ret: t_Result'1) -> [ &_190 <- _ret ] s2) + | s2 = bb119 ] + | bb119 = s0 [ s0 = copied'0 {_190} (fun (_ret: t_Result'3) -> [ &_189 <- _ret ] s1) | s1 = bb120 ] + | bb120 = s0 [ s0 = unwrap'4 {_189} (fun (_ret: Int32.t) -> [ &_188 <- _ret ] s1) | s1 = bb121 ] | bb121 = s0 - [ s0 = [ &_153 <- _154 = ([%#sresult'34] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_153 = false} (! bb122) | br1 -> {_153} (! bb124) ] ] - | bb124 = s0 - [ s0 = [ &_164 <- C_Err ([%#sresult'35] (-2: Int32.t)) ] s1 - | s1 = or {err'0} {_164} (fun (_ret: t_Result) -> [ &_162 <- _ret ] s2) - | s2 = bb125 ] - | bb125 = s0 [ s0 = unwrap_err'1 {_162} (fun (_ret: Int32.t) -> [ &_161 <- _ret ] s1) | s1 = bb126 ] + [ s0 = [ &_187 <- _188 = ([%#sresult'39] (1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_187 = false} (! bb123) | br1 -> {_187} (! bb122) ] ] + | bb122 = s0 + [ s0 = MutBorrow.borrow_mut {err'0} + (fun (_ret: MutBorrow.t t_Result) -> [ &_199 <- _ret ] [ &err'0 <- _ret.final ] s1) + | s1 = as_mut {_199} (fun (_ret: t_Result'1) -> [ &_198 <- _ret ] s2) + | s2 = bb124 ] + | bb124 = s0 [ s0 = copied'0 {_198} (fun (_ret: t_Result'3) -> [ &_197 <- _ret ] s1) | s1 = bb125 ] + | bb125 = s0 [ s0 = unwrap_err'3 {_197} (fun (_ret: MutBorrow.t Int32.t) -> [ &_196 <- _ret ] s1) | s1 = bb126 ] | bb126 = s0 - [ s0 = [ &_160 <- _161 = ([%#sresult'36] (-2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_160 = false} (! bb127) | br1 -> {_160} (! bb129) ] ] - | bb129 = s0 - [ s0 = [ &_171 <- C_Ok ([%#sresult'37] (2: Int32.t)) ] s1 - | s1 = or {err'0} {_171} (fun (_ret: t_Result) -> [ &_169 <- _ret ] s2) - | s2 = bb130 ] - | bb130 = s0 [ s0 = unwrap'2 {_169} (fun (_ret: Int32.t) -> [ &_168 <- _ret ] s1) | s1 = bb131 ] + [ s0 = -{resolve'0 _196}- s1 + | s1 = [ &_194 <- _196.current = ([%#sresult'40] (-1: Int32.t)) ] s2 + | s2 = any [ br0 -> {_194 = false} (! bb128) | br1 -> {_194} (! bb127) ] ] + | bb127 = s0 [ s0 = as_ref {ok'0} (fun (_ret: t_Result'0) -> [ &_205 <- _ret ] s1) | s1 = bb129 ] + | bb129 = s0 [ s0 = cloned {_205} (fun (_ret: t_Result'2) -> [ &_204 <- _ret ] s1) | s1 = bb130 ] + | bb130 = s0 [ s0 = unwrap'3 {_204} (fun (_ret: Int32.t) -> [ &_203 <- _ret ] s1) | s1 = bb131 ] | bb131 = s0 - [ s0 = [ &_167 <- _168 = ([%#sresult'38] (2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_167 = false} (! bb132) | br1 -> {_167} (! bb134) ] ] - | bb134 = s0 [ s0 = as_ref {ok'0} (fun (_ret: t_Result'0) -> [ &_177 <- _ret ] s1) | s1 = bb135 ] - | bb135 = s0 [ s0 = copied {_177} (fun (_ret: t_Result'2) -> [ &_176 <- _ret ] s1) | s1 = bb136 ] - | bb136 = s0 [ s0 = unwrap'3 {_176} (fun (_ret: Int32.t) -> [ &_175 <- _ret ] s1) | s1 = bb137 ] + [ s0 = [ &_202 <- _203 = ([%#sresult'41] (1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_202 = false} (! bb133) | br1 -> {_202} (! bb132) ] ] + | bb132 = s0 [ s0 = as_ref {err'0} (fun (_ret: t_Result'0) -> [ &_213 <- _ret ] s1) | s1 = bb134 ] + | bb134 = s0 [ s0 = cloned {_213} (fun (_ret: t_Result'2) -> [ &_212 <- _ret ] s1) | s1 = bb135 ] + | bb135 = s0 [ s0 = unwrap_err'2 {_212} (fun (_ret: Int32.t) -> [ &_211 <- _ret ] s1) | s1 = bb136 ] + | bb136 = s0 + [ s0 = [ &_209 <- _211 = ([%#sresult'42] (-1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_209 = false} (! bb138) | br1 -> {_209} (! bb137) ] ] | bb137 = s0 - [ s0 = [ &_174 <- _175 = ([%#sresult'39] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_174 = false} (! bb138) | br1 -> {_174} (! bb140) ] ] - | bb140 = s0 [ s0 = as_ref {err'0} (fun (_ret: t_Result'0) -> [ &_185 <- _ret ] s1) | s1 = bb141 ] - | bb141 = s0 [ s0 = copied {_185} (fun (_ret: t_Result'2) -> [ &_184 <- _ret ] s1) | s1 = bb142 ] - | bb142 = s0 [ s0 = unwrap_err'2 {_184} (fun (_ret: Int32.t) -> [ &_183 <- _ret ] s1) | s1 = bb143 ] - | bb143 = s0 - [ s0 = [ &_181 <- _183 = ([%#sresult'40] (-1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_181 = false} (! bb144) | br1 -> {_181} (! bb146) ] ] - | bb146 = s0 [ s0 = MutBorrow.borrow_mut {ok'0} - (fun (_ret: MutBorrow.t t_Result) -> [ &_193 <- _ret ] [ &ok'0 <- _ret.final ] s1) - | s1 = as_mut {_193} (fun (_ret: t_Result'1) -> [ &_192 <- _ret ] s2) - | s2 = bb147 ] - | bb147 = s0 [ s0 = copied'0 {_192} (fun (_ret: t_Result'3) -> [ &_191 <- _ret ] s1) | s1 = bb148 ] - | bb148 = s0 [ s0 = unwrap'4 {_191} (fun (_ret: Int32.t) -> [ &_190 <- _ret ] s1) | s1 = bb149 ] - | bb149 = s0 - [ s0 = [ &_189 <- _190 = ([%#sresult'41] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_189 = false} (! bb150) | br1 -> {_189} (! bb152) ] ] - | bb152 = s0 + (fun (_ret: MutBorrow.t t_Result) -> [ &_221 <- _ret ] [ &ok'0 <- _ret.final ] s1) + | s1 = as_mut {_221} (fun (_ret: t_Result'1) -> [ &_220 <- _ret ] s2) + | s2 = bb139 ] + | bb139 = s0 [ s0 = cloned'0 {_220} (fun (_ret: t_Result'3) -> [ &_219 <- _ret ] s1) | s1 = bb140 ] + | bb140 = s0 [ s0 = unwrap'4 {_219} (fun (_ret: Int32.t) -> [ &_218 <- _ret ] s1) | s1 = bb141 ] + | bb141 = s0 + [ s0 = [ &_217 <- _218 = ([%#sresult'43] (1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_217 = false} (! bb143) | br1 -> {_217} (! bb142) ] ] + | bb142 = s0 [ s0 = MutBorrow.borrow_mut {err'0} - (fun (_ret: MutBorrow.t t_Result) -> [ &_201 <- _ret ] [ &err'0 <- _ret.final ] s1) - | s1 = as_mut {_201} (fun (_ret: t_Result'1) -> [ &_200 <- _ret ] s2) - | s2 = bb153 ] - | bb153 = s0 [ s0 = copied'0 {_200} (fun (_ret: t_Result'3) -> [ &_199 <- _ret ] s1) | s1 = bb154 ] - | bb154 = s0 [ s0 = unwrap_err'3 {_199} (fun (_ret: MutBorrow.t Int32.t) -> [ &_198 <- _ret ] s1) | s1 = bb155 ] + (fun (_ret: MutBorrow.t t_Result) -> [ &_229 <- _ret ] [ &err'0 <- _ret.final ] s1) + | s1 = as_mut {_229} (fun (_ret: t_Result'1) -> [ &_228 <- _ret ] s2) + | s2 = bb144 ] + | bb144 = s0 [ s0 = cloned'0 {_228} (fun (_ret: t_Result'3) -> [ &_227 <- _ret ] s1) | s1 = bb145 ] + | bb145 = s0 [ s0 = unwrap_err'3 {_227} (fun (_ret: MutBorrow.t Int32.t) -> [ &_226 <- _ret ] s1) | s1 = bb146 ] + | bb146 = s0 + [ s0 = -{resolve'0 _226}- s1 + | s1 = [ &_224 <- _226.current = ([%#sresult'44] (-1: Int32.t)) ] s2 + | s2 = any [ br0 -> {_224 = false} (! bb148) | br1 -> {_224} (! bb147) ] ] + | bb147 = s0 + [ s0 = [ &_232 <- C_None ] s1 + | s1 = [ &res <- C_Ok'4 _232 ] s2 + | s2 = transpose {res} (fun (_ret: t_Option'0) -> [ &_236 <- _ret ] s3) + | s3 = bb149 ] + | bb149 = s0 [ s0 = is_none'0 {_236} (fun (_ret: bool) -> [ &_234 <- _ret ] s1) | s1 = bb150 ] + | bb150 = any [ br0 -> {_234 = false} (! bb152) | br1 -> {_234} (! bb151) ] + | bb151 = s0 + [ s0 = [ &_240 <- C_Some ([%#sresult'45] (1: Int32.t)) ] s1 + | s1 = [ &res'0 <- C_Ok'4 _240 ] s2 + | s2 = transpose {res'0} (fun (_ret: t_Option'0) -> [ &_245 <- _ret ] s3) + | s3 = bb153 ] + | bb153 = s0 [ s0 = unwrap'5 {_245} (fun (_ret: t_Result) -> [ &_244 <- _ret ] s1) | s1 = bb154 ] + | bb154 = s0 [ s0 = unwrap'2 {_244} (fun (_ret: Int32.t) -> [ &_243 <- _ret ] s1) | s1 = bb155 ] | bb155 = s0 - [ s0 = -{resolve'0 _198}- s1 - | s1 = [ &_196 <- _198.current = ([%#sresult'42] (-1: Int32.t)) ] s2 - | s2 = any [ br0 -> {_196 = false} (! bb156) | br1 -> {_196} (! bb158) ] ] - | bb158 = s0 [ s0 = as_ref {ok'0} (fun (_ret: t_Result'0) -> [ &_207 <- _ret ] s1) | s1 = bb159 ] - | bb159 = s0 [ s0 = cloned {_207} (fun (_ret: t_Result'2) -> [ &_206 <- _ret ] s1) | s1 = bb160 ] - | bb160 = s0 [ s0 = unwrap'3 {_206} (fun (_ret: Int32.t) -> [ &_205 <- _ret ] s1) | s1 = bb161 ] - | bb161 = s0 - [ s0 = [ &_204 <- _205 = ([%#sresult'43] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_204 = false} (! bb162) | br1 -> {_204} (! bb164) ] ] - | bb164 = s0 [ s0 = as_ref {err'0} (fun (_ret: t_Result'0) -> [ &_215 <- _ret ] s1) | s1 = bb165 ] - | bb165 = s0 [ s0 = cloned {_215} (fun (_ret: t_Result'2) -> [ &_214 <- _ret ] s1) | s1 = bb166 ] - | bb166 = s0 [ s0 = unwrap_err'2 {_214} (fun (_ret: Int32.t) -> [ &_213 <- _ret ] s1) | s1 = bb167 ] - | bb167 = s0 - [ s0 = [ &_211 <- _213 = ([%#sresult'44] (-1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_211 = false} (! bb168) | br1 -> {_211} (! bb170) ] ] - | bb170 = s0 - [ s0 = MutBorrow.borrow_mut {ok'0} - (fun (_ret: MutBorrow.t t_Result) -> [ &_223 <- _ret ] [ &ok'0 <- _ret.final ] s1) - | s1 = as_mut {_223} (fun (_ret: t_Result'1) -> [ &_222 <- _ret ] s2) - | s2 = bb171 ] - | bb171 = s0 [ s0 = cloned'0 {_222} (fun (_ret: t_Result'3) -> [ &_221 <- _ret ] s1) | s1 = bb172 ] - | bb172 = s0 [ s0 = unwrap'4 {_221} (fun (_ret: Int32.t) -> [ &_220 <- _ret ] s1) | s1 = bb173 ] - | bb173 = s0 - [ s0 = [ &_219 <- _220 = ([%#sresult'45] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_219 = false} (! bb174) | br1 -> {_219} (! bb176) ] ] - | bb176 = s0 - [ s0 = MutBorrow.borrow_mut {err'0} - (fun (_ret: MutBorrow.t t_Result) -> [ &_231 <- _ret ] [ &err'0 <- _ret.final ] s1) - | s1 = as_mut {_231} (fun (_ret: t_Result'1) -> [ &_230 <- _ret ] s2) - | s2 = bb177 ] - | bb177 = s0 [ s0 = cloned'0 {_230} (fun (_ret: t_Result'3) -> [ &_229 <- _ret ] s1) | s1 = bb178 ] - | bb178 = s0 [ s0 = unwrap_err'3 {_229} (fun (_ret: MutBorrow.t Int32.t) -> [ &_228 <- _ret ] s1) | s1 = bb179 ] - | bb179 = s0 - [ s0 = -{resolve'0 _228}- s1 - | s1 = [ &_226 <- _228.current = ([%#sresult'46] (-1: Int32.t)) ] s2 - | s2 = any [ br0 -> {_226 = false} (! bb180) | br1 -> {_226} (! bb182) ] ] - | bb182 = s0 - [ s0 = [ &_234 <- C_None ] s1 - | s1 = [ &res <- C_Ok'4 _234 ] s2 - | s2 = transpose {res} (fun (_ret: t_Option'0) -> [ &_238 <- _ret ] s3) - | s3 = bb183 ] - | bb183 = s0 [ s0 = is_none'0 {_238} (fun (_ret: bool) -> [ &_236 <- _ret ] s1) | s1 = bb184 ] - | bb184 = any [ br0 -> {_236 = false} (! bb185) | br1 -> {_236} (! bb187) ] - | bb187 = s0 - [ s0 = [ &_242 <- C_Some ([%#sresult'47] (1: Int32.t)) ] s1 - | s1 = [ &res'0 <- C_Ok'4 _242 ] s2 - | s2 = transpose {res'0} (fun (_ret: t_Option'0) -> [ &_247 <- _ret ] s3) - | s3 = bb188 ] - | bb188 = s0 [ s0 = unwrap'5 {_247} (fun (_ret: t_Result) -> [ &_246 <- _ret ] s1) | s1 = bb189 ] - | bb189 = s0 [ s0 = unwrap'2 {_246} (fun (_ret: Int32.t) -> [ &_245 <- _ret ] s1) | s1 = bb190 ] - | bb190 = s0 - [ s0 = [ &_244 <- _245 = ([%#sresult'48] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_244 = false} (! bb191) | br1 -> {_244} (! bb193) ] ] - | bb193 = s0 - [ s0 = [ &res'1 <- C_Err'4 ([%#sresult'49] (-1: Int32.t)) ] s1 - | s1 = transpose {res'1} (fun (_ret: t_Option'0) -> [ &_255 <- _ret ] s2) - | s2 = bb194 ] - | bb194 = s0 [ s0 = unwrap'5 {_255} (fun (_ret: t_Result) -> [ &_254 <- _ret ] s1) | s1 = bb195 ] - | bb195 = s0 [ s0 = unwrap_err'1 {_254} (fun (_ret: Int32.t) -> [ &_253 <- _ret ] s1) | s1 = bb196 ] - | bb196 = s0 - [ s0 = [ &_252 <- _253 = ([%#sresult'50] (-1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_252 = false} (! bb197) | br1 -> {_252} (! bb199) ] ] - | bb199 = return''0 {_0} - | bb197 = {[%#sresult'51] false} any - | bb191 = {[%#sresult'52] false} any - | bb185 = {[%#sresult'53] false} any - | bb180 = {[%#sresult'54] false} any - | bb174 = {[%#sresult'55] false} any - | bb168 = {[%#sresult'56] false} any - | bb162 = {[%#sresult'57] false} any - | bb156 = {[%#sresult'58] false} any - | bb150 = {[%#sresult'59] false} any - | bb144 = {[%#sresult'60] false} any - | bb138 = {[%#sresult'61] false} any - | bb132 = {[%#sresult'62] false} any - | bb127 = {[%#sresult'63] false} any - | bb122 = {[%#sresult'64] false} any - | bb117 = {[%#sresult'65] false} any - | bb112 = {[%#sresult'66] false} any - | bb107 = {[%#sresult'67] false} any - | bb102 = {[%#sresult'68] false} any - | bb97 = {[%#sresult'69] false} any - | bb92 = {[%#sresult'70] false} any - | bb88 = {[%#sresult'71] false} any - | bb84 = {[%#sresult'72] false} any - | bb80 = {[%#sresult'73] false} any - | bb76 = {[%#sresult'74] false} any - | bb72 = {[%#sresult'75] false} any - | bb68 = {[%#sresult'76] false} any - | bb62 = {[%#sresult'77] false} any - | bb56 = {[%#sresult'78] false} any - | bb50 = {[%#sresult'79] false} any - | bb44 = {[%#sresult'80] false} any - | bb39 = {[%#sresult'81] false} any - | bb34 = {[%#sresult'82] false} any - | bb29 = {[%#sresult'83] false} any - | bb24 = {[%#sresult'84] false} any - | bb19 = {[%#sresult'85] false} any - | bb14 = {[%#sresult'86] false} any - | bb6 = {[%#sresult'87] false} any ] + [ s0 = [ &_242 <- _243 = ([%#sresult'46] (1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_242 = false} (! bb157) | br1 -> {_242} (! bb156) ] ] + | bb156 = s0 + [ s0 = [ &res'1 <- C_Err'4 ([%#sresult'47] (-1: Int32.t)) ] s1 + | s1 = transpose {res'1} (fun (_ret: t_Option'0) -> [ &_253 <- _ret ] s2) + | s2 = bb158 ] + | bb158 = s0 [ s0 = unwrap'5 {_253} (fun (_ret: t_Result) -> [ &_252 <- _ret ] s1) | s1 = bb159 ] + | bb159 = s0 [ s0 = unwrap_err'1 {_252} (fun (_ret: Int32.t) -> [ &_251 <- _ret ] s1) | s1 = bb160 ] + | bb160 = s0 + [ s0 = [ &_250 <- _251 = ([%#sresult'48] (-1: Int32.t)) ] s1 + | s1 = any [ br0 -> {_250 = false} (! bb162) | br1 -> {_250} (! bb161) ] ] + | bb161 = return''0 {_0} + | bb162 = {[%#sresult'49] false} any + | bb157 = {[%#sresult'50] false} any + | bb152 = {[%#sresult'51] false} any + | bb148 = {[%#sresult'52] false} any + | bb143 = {[%#sresult'53] false} any + | bb138 = {[%#sresult'54] false} any + | bb133 = {[%#sresult'55] false} any + | bb128 = {[%#sresult'56] false} any + | bb123 = {[%#sresult'57] false} any + | bb118 = {[%#sresult'58] false} any + | bb113 = {[%#sresult'59] false} any + | bb108 = {[%#sresult'60] false} any + | bb104 = {[%#sresult'61] false} any + | bb100 = {[%#sresult'62] false} any + | bb96 = {[%#sresult'63] false} any + | bb92 = {[%#sresult'64] false} any + | bb88 = {[%#sresult'65] false} any + | bb84 = {[%#sresult'66] false} any + | bb80 = {[%#sresult'67] false} any + | bb76 = {[%#sresult'68] false} any + | bb73 = {[%#sresult'69] false} any + | bb70 = {[%#sresult'70] false} any + | bb67 = {[%#sresult'71] false} any + | bb64 = {[%#sresult'72] false} any + | bb61 = {[%#sresult'73] false} any + | bb58 = {[%#sresult'74] false} any + | bb53 = {[%#sresult'75] false} any + | bb48 = {[%#sresult'76] false} any + | bb43 = {[%#sresult'77] false} any + | bb38 = {[%#sresult'78] false} any + | bb34 = {[%#sresult'79] false} any + | bb30 = {[%#sresult'80] false} any + | bb26 = {[%#sresult'81] false} any + | bb22 = {[%#sresult'82] false} any + | bb18 = {[%#sresult'83] false} any + | bb14 = {[%#sresult'84] false} any + | bb7 = {[%#sresult'85] false} any ] [ & _0: () = Any.any_l () | & ok'0: t_Result = Any.any_l () | & err'0: t_Result = Any.any_l () | & _4: bool = Any.any_l () - | & _5: bool = Any.any_l () - | & _7: bool = Any.any_l () - | & _11: bool = Any.any_l () + | & _6: bool = Any.any_l () + | & _10: bool = Any.any_l () | & _12: bool = Any.any_l () - | & _14: bool = Any.any_l () - | & _18: bool = Any.any_l () - | & _19: Int32.t = Any.any_l () - | & _20: t_Option = Any.any_l () - | & _24: bool = Any.any_l () - | & _26: t_Option = Any.any_l () - | & _30: bool = Any.any_l () - | & _32: t_Option = Any.any_l () - | & _36: bool = Any.any_l () - | & _37: Int32.t = Any.any_l () - | & _38: t_Option = Any.any_l () - | & _42: bool = Any.any_l () - | & _44: Int32.t = Any.any_l () - | & _45: t_Result'0 = Any.any_l () - | & _49: bool = Any.any_l () - | & _51: Int32.t = Any.any_l () - | & _52: t_Result'0 = Any.any_l () - | & _55: MutBorrow.t Int32.t = Any.any_l () - | & _56: t_Result'1 = Any.any_l () - | & _57: MutBorrow.t t_Result = Any.any_l () - | & _59: bool = Any.any_l () - | & _60: Int32.t = Any.any_l () - | & _63: MutBorrow.t Int32.t = Any.any_l () - | & _64: t_Result'1 = Any.any_l () - | & _65: MutBorrow.t t_Result = Any.any_l () - | & _67: bool = Any.any_l () - | & _68: Int32.t = Any.any_l () - | & _71: MutBorrow.t Int32.t = Any.any_l () - | & _72: t_Result'1 = Any.any_l () - | & _73: MutBorrow.t t_Result = Any.any_l () - | & _75: bool = Any.any_l () - | & _76: Int32.t = Any.any_l () - | & _79: MutBorrow.t Int32.t = Any.any_l () - | & _80: t_Result'1 = Any.any_l () - | & _81: MutBorrow.t t_Result = Any.any_l () - | & _83: bool = Any.any_l () - | & _84: Int32.t = Any.any_l () - | & _88: bool = Any.any_l () - | & _89: Int32.t = Any.any_l () - | & _93: bool = Any.any_l () - | & _94: Int32.t = Any.any_l () - | & _98: bool = Any.any_l () - | & _99: Int32.t = Any.any_l () - | & _103: bool = Any.any_l () - | & _104: Int32.t = Any.any_l () - | & _108: bool = Any.any_l () - | & _109: Int32.t = Any.any_l () - | & _113: bool = Any.any_l () - | & _114: Int32.t = Any.any_l () - | & _118: bool = Any.any_l () - | & _119: Int32.t = Any.any_l () + | & _16: bool = Any.any_l () + | & _17: Int32.t = Any.any_l () + | & _18: t_Option = Any.any_l () + | & _22: bool = Any.any_l () + | & _24: t_Option = Any.any_l () + | & _28: bool = Any.any_l () + | & _30: t_Option = Any.any_l () + | & _34: bool = Any.any_l () + | & _35: Int32.t = Any.any_l () + | & _36: t_Option = Any.any_l () + | & _40: bool = Any.any_l () + | & _42: Int32.t = Any.any_l () + | & _43: t_Result'0 = Any.any_l () + | & _47: bool = Any.any_l () + | & _49: Int32.t = Any.any_l () + | & _50: t_Result'0 = Any.any_l () + | & _53: MutBorrow.t Int32.t = Any.any_l () + | & _54: t_Result'1 = Any.any_l () + | & _55: MutBorrow.t t_Result = Any.any_l () + | & _57: bool = Any.any_l () + | & _58: Int32.t = Any.any_l () + | & _61: MutBorrow.t Int32.t = Any.any_l () + | & _62: t_Result'1 = Any.any_l () + | & _63: MutBorrow.t t_Result = Any.any_l () + | & _65: bool = Any.any_l () + | & _66: Int32.t = Any.any_l () + | & _69: MutBorrow.t Int32.t = Any.any_l () + | & _70: t_Result'1 = Any.any_l () + | & _71: MutBorrow.t t_Result = Any.any_l () + | & _73: bool = Any.any_l () + | & _74: Int32.t = Any.any_l () + | & _77: MutBorrow.t Int32.t = Any.any_l () + | & _78: t_Result'1 = Any.any_l () + | & _79: MutBorrow.t t_Result = Any.any_l () + | & _81: bool = Any.any_l () + | & _82: Int32.t = Any.any_l () + | & _86: bool = Any.any_l () + | & _87: Int32.t = Any.any_l () + | & _91: bool = Any.any_l () + | & _92: Int32.t = Any.any_l () + | & _96: bool = Any.any_l () + | & _97: Int32.t = Any.any_l () + | & _101: bool = Any.any_l () + | & _102: Int32.t = Any.any_l () + | & _106: bool = Any.any_l () + | & _107: Int32.t = Any.any_l () + | & _111: bool = Any.any_l () + | & _112: Int32.t = Any.any_l () + | & _116: bool = Any.any_l () + | & _117: Int32.t = Any.any_l () + | & _118: t_Result = Any.any_l () | & _120: t_Result = Any.any_l () - | & _122: t_Result = Any.any_l () - | & _125: bool = Any.any_l () - | & _126: Int32.t = Any.any_l () + | & _123: bool = Any.any_l () + | & _124: Int32.t = Any.any_l () + | & _125: t_Result = Any.any_l () | & _127: t_Result = Any.any_l () - | & _129: t_Result = Any.any_l () - | & _132: bool = Any.any_l () - | & _133: Int32.t = Any.any_l () + | & _130: bool = Any.any_l () + | & _131: Int32.t = Any.any_l () + | & _132: t_Result = Any.any_l () | & _134: t_Result = Any.any_l () - | & _136: t_Result = Any.any_l () - | & _139: bool = Any.any_l () - | & _140: Int32.t = Any.any_l () + | & _137: bool = Any.any_l () + | & _138: Int32.t = Any.any_l () + | & _139: t_Result = Any.any_l () | & _141: t_Result = Any.any_l () - | & _143: t_Result = Any.any_l () - | & _146: bool = Any.any_l () - | & _147: Int32.t = Any.any_l () + | & _144: bool = Any.any_l () + | & _145: Int32.t = Any.any_l () + | & _146: t_Result = Any.any_l () | & _148: t_Result = Any.any_l () - | & _150: t_Result = Any.any_l () - | & _153: bool = Any.any_l () - | & _154: Int32.t = Any.any_l () + | & _151: bool = Any.any_l () + | & _152: Int32.t = Any.any_l () + | & _153: t_Result = Any.any_l () | & _155: t_Result = Any.any_l () - | & _157: t_Result = Any.any_l () - | & _160: bool = Any.any_l () - | & _161: Int32.t = Any.any_l () + | & _158: bool = Any.any_l () + | & _159: Int32.t = Any.any_l () + | & _160: t_Result = Any.any_l () | & _162: t_Result = Any.any_l () - | & _164: t_Result = Any.any_l () - | & _167: bool = Any.any_l () - | & _168: Int32.t = Any.any_l () + | & _165: bool = Any.any_l () + | & _166: Int32.t = Any.any_l () + | & _167: t_Result = Any.any_l () | & _169: t_Result = Any.any_l () - | & _171: t_Result = Any.any_l () - | & _174: bool = Any.any_l () - | & _175: Int32.t = Any.any_l () - | & _176: t_Result'2 = Any.any_l () - | & _177: t_Result'0 = Any.any_l () - | & _181: bool = Any.any_l () - | & _183: Int32.t = Any.any_l () - | & _184: t_Result'2 = Any.any_l () - | & _185: t_Result'0 = Any.any_l () - | & _189: bool = Any.any_l () - | & _190: Int32.t = Any.any_l () - | & _191: t_Result'3 = Any.any_l () - | & _192: t_Result'1 = Any.any_l () - | & _193: MutBorrow.t t_Result = Any.any_l () - | & _196: bool = Any.any_l () - | & _198: MutBorrow.t Int32.t = Any.any_l () - | & _199: t_Result'3 = Any.any_l () - | & _200: t_Result'1 = Any.any_l () - | & _201: MutBorrow.t t_Result = Any.any_l () - | & _204: bool = Any.any_l () - | & _205: Int32.t = Any.any_l () - | & _206: t_Result'2 = Any.any_l () - | & _207: t_Result'0 = Any.any_l () - | & _211: bool = Any.any_l () - | & _213: Int32.t = Any.any_l () - | & _214: t_Result'2 = Any.any_l () - | & _215: t_Result'0 = Any.any_l () - | & _219: bool = Any.any_l () - | & _220: Int32.t = Any.any_l () - | & _221: t_Result'3 = Any.any_l () - | & _222: t_Result'1 = Any.any_l () - | & _223: MutBorrow.t t_Result = Any.any_l () - | & _226: bool = Any.any_l () - | & _228: MutBorrow.t Int32.t = Any.any_l () - | & _229: t_Result'3 = Any.any_l () - | & _230: t_Result'1 = Any.any_l () - | & _231: MutBorrow.t t_Result = Any.any_l () + | & _172: bool = Any.any_l () + | & _173: Int32.t = Any.any_l () + | & _174: t_Result'2 = Any.any_l () + | & _175: t_Result'0 = Any.any_l () + | & _179: bool = Any.any_l () + | & _181: Int32.t = Any.any_l () + | & _182: t_Result'2 = Any.any_l () + | & _183: t_Result'0 = Any.any_l () + | & _187: bool = Any.any_l () + | & _188: Int32.t = Any.any_l () + | & _189: t_Result'3 = Any.any_l () + | & _190: t_Result'1 = Any.any_l () + | & _191: MutBorrow.t t_Result = Any.any_l () + | & _194: bool = Any.any_l () + | & _196: MutBorrow.t Int32.t = Any.any_l () + | & _197: t_Result'3 = Any.any_l () + | & _198: t_Result'1 = Any.any_l () + | & _199: MutBorrow.t t_Result = Any.any_l () + | & _202: bool = Any.any_l () + | & _203: Int32.t = Any.any_l () + | & _204: t_Result'2 = Any.any_l () + | & _205: t_Result'0 = Any.any_l () + | & _209: bool = Any.any_l () + | & _211: Int32.t = Any.any_l () + | & _212: t_Result'2 = Any.any_l () + | & _213: t_Result'0 = Any.any_l () + | & _217: bool = Any.any_l () + | & _218: Int32.t = Any.any_l () + | & _219: t_Result'3 = Any.any_l () + | & _220: t_Result'1 = Any.any_l () + | & _221: MutBorrow.t t_Result = Any.any_l () + | & _224: bool = Any.any_l () + | & _226: MutBorrow.t Int32.t = Any.any_l () + | & _227: t_Result'3 = Any.any_l () + | & _228: t_Result'1 = Any.any_l () + | & _229: MutBorrow.t t_Result = Any.any_l () | & res: t_Result'4 = Any.any_l () - | & _234: t_Option = Any.any_l () - | & _236: bool = Any.any_l () - | & _238: t_Option'0 = Any.any_l () + | & _232: t_Option = Any.any_l () + | & _234: bool = Any.any_l () + | & _236: t_Option'0 = Any.any_l () | & res'0: t_Result'4 = Any.any_l () - | & _242: t_Option = Any.any_l () - | & _244: bool = Any.any_l () - | & _245: Int32.t = Any.any_l () - | & _246: t_Result = Any.any_l () - | & _247: t_Option'0 = Any.any_l () + | & _240: t_Option = Any.any_l () + | & _242: bool = Any.any_l () + | & _243: Int32.t = Any.any_l () + | & _244: t_Result = Any.any_l () + | & _245: t_Option'0 = Any.any_l () | & res'1: t_Result'4 = Any.any_l () - | & _252: bool = Any.any_l () - | & _253: Int32.t = Any.any_l () - | & _254: t_Result = Any.any_l () - | & _255: t_Option'0 = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] + | & _250: bool = Any.any_l () + | & _251: Int32.t = Any.any_l () + | & _252: t_Result = Any.any_l () + | & _253: t_Option'0 = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end diff --git a/tests/should_succeed/rusthorn/inc_max.coma b/tests/should_succeed/rusthorn/inc_max.coma index ba6f890797..4785675f71 100644 --- a/tests/should_succeed/rusthorn/inc_max.coma +++ b/tests/should_succeed/rusthorn/inc_max.coma @@ -124,7 +124,7 @@ module M_inc_max__take_max [#"inc_max.rs" 6 0 6 64] end module M_inc_max__inc_max [#"inc_max.rs" 11 0 11 38] let%span sinc_max = "inc_max.rs" 13 11 13 12 - let%span sinc_max'0 = "inc_max.rs" 14 12 14 18 + let%span sinc_max'0 = "inc_max.rs" 14 4 14 19 let%span sinc_max'1 = "inc_max.rs" 10 11 10 49 let%span sinc_max'2 = "inc_max.rs" 4 10 5 54 let%span sresolve = "../../../creusot-contracts/src/resolve.rs" 44 20 44 34 @@ -235,9 +235,9 @@ module M_inc_max__inc_max [#"inc_max.rs" 11 0 11 38] (fun (_ret: UInt32.t) -> [ &mc <- { mc with current = _ret } ] s3) | s3 = -{resolve'0 mc}- s4 | s4 = [ &_10 <- a'0 <> b'0 ] s5 - | s5 = any [ br0 -> {_10 = false} (! bb2) | br1 -> {_10} (! bb4) ] ] - | bb4 = return''0 {_0} - | bb2 = {[%#sinc_max'0] false} any ] + | s5 = any [ br0 -> {_10 = false} (! bb3) | br1 -> {_10} (! bb2) ] ] + | bb2 = return''0 {_0} + | bb3 = {[%#sinc_max'0] false} any ] [ & _0: () = Any.any_l () | & a'0: UInt32.t = a | & b'0: UInt32.t = b diff --git a/tests/should_succeed/rusthorn/inc_max_3.coma b/tests/should_succeed/rusthorn/inc_max_3.coma index 1b61594c32..1134514404 100644 --- a/tests/should_succeed/rusthorn/inc_max_3.coma +++ b/tests/should_succeed/rusthorn/inc_max_3.coma @@ -189,11 +189,10 @@ module M_inc_max_3__inc_max_3 [#"inc_max_3.rs" 12 0 12 79] (! return' {result}) ] end module M_inc_max_3__test_inc_max_3 [#"inc_max_3.rs" 27 0 27 57] - let%span sinc_max_3 = "inc_max_3.rs" 29 12 29 38 - let%span sinc_max_3'0 = "inc_max_3.rs" 29 12 29 38 - let%span sinc_max_3'1 = "inc_max_3.rs" 26 11 26 70 - let%span sinc_max_3'2 = "inc_max_3.rs" 10 11 10 76 - let%span sinc_max_3'3 = "inc_max_3.rs" 11 10 11 48 + let%span sinc_max_3 = "inc_max_3.rs" 29 4 29 39 + let%span sinc_max_3'0 = "inc_max_3.rs" 26 11 26 70 + let%span sinc_max_3'1 = "inc_max_3.rs" 10 11 10 76 + let%span sinc_max_3'2 = "inc_max_3.rs" 11 10 11 48 let%span sresolve = "../../../creusot-contracts/src/resolve.rs" 44 20 44 34 let%span sord = "../../../creusot-contracts/src/logic/ord.rs" 124 39 124 89 let%span sord'0 = "../../../creusot-contracts/src/logic/ord.rs" 128 39 128 86 @@ -262,10 +261,10 @@ module M_inc_max_3__test_inc_max_3 [#"inc_max_3.rs" 27 0 27 57] axiom cmp_le_log_spec: forall x: UInt32.t, y: UInt32.t. [%#sord] UInt32.le x y = (cmp_log x y <> C_Greater) let rec inc_max_3 (ma: MutBorrow.t UInt32.t) (mb: MutBorrow.t UInt32.t) (mc: MutBorrow.t UInt32.t) (return' (x: ())) = - {[@expl:inc_max_3 requires] [%#sinc_max_3'2] UInt32.le ma.current (1000000: UInt32.t) + {[@expl:inc_max_3 requires] [%#sinc_max_3'1] UInt32.le ma.current (1000000: UInt32.t) /\ UInt32.le mb.current (1000000: UInt32.t) /\ UInt32.le mc.current (1000000: UInt32.t)} any - [ return''0 (result: ()) -> {[%#sinc_max_3'3] ma.final <> mb.final /\ mb.final <> mc.final /\ mc.final <> ma.final} + [ return''0 (result: ()) -> {[%#sinc_max_3'2] ma.final <> mb.final /\ mb.final <> mc.final /\ mc.final <> ma.final} (! return' {result}) ] predicate resolve [@inline:trivial] (self: MutBorrow.t UInt32.t) = [%#sresolve] self.final = self.current @@ -281,7 +280,7 @@ module M_inc_max_3__test_inc_max_3 [#"inc_max_3.rs" 27 0 27 57] meta "select_lsinst" "all" let rec test_inc_max_3 [#"inc_max_3.rs" 27 0 27 57] (a: UInt32.t) (b: UInt32.t) (c: UInt32.t) (return' (x: ())) = - {[@expl:test_inc_max_3 requires] [%#sinc_max_3'1] UInt32.le a (1000000: UInt32.t) + {[@expl:test_inc_max_3 requires] [%#sinc_max_3'0] UInt32.le a (1000000: UInt32.t) /\ UInt32.le b (1000000: UInt32.t) /\ UInt32.le c (1000000: UInt32.t)} (! bb0 [ bb0 = s0 @@ -303,14 +302,12 @@ module M_inc_max_3__test_inc_max_3 [#"inc_max_3.rs" 27 0 27 57] [ s0 = -{resolve'0 _11}- s1 | s1 = -{resolve'0 _9}- s2 | s2 = -{resolve'0 _7}- s3 - | s3 = [ &_14 <- a'0 <> b'0 ] s4 - | s4 = any [ br0 -> {_14 = false} (! bb6) | br1 -> {_14} (! bb2) ] ] - | bb2 = s0 [ s0 = [ &_17 <- b'0 <> c'0 ] s1 | s1 = any [ br0 -> {_17 = false} (! bb6) | br1 -> {_17} (! bb3) ] ] - | bb3 = s0 [ s0 = [ &_13 <- c'0 <> a'0 ] s1 | s1 = bb7 ] - | bb6 = s0 [ s0 = [ &_13 <- [%#sinc_max_3] false ] s1 | s1 = bb7 ] - | bb7 = any [ br0 -> {_13 = false} (! bb8) | br1 -> {_13} (! bb10) ] - | bb10 = return''0 {_0} - | bb8 = {[%#sinc_max_3'0] false} any ] + | s3 = [ &_13 <- a'0 <> b'0 ] s4 + | s4 = any [ br0 -> {_13 = false} (! bb8) | br1 -> {_13} (! bb2) ] ] + | bb2 = s0 [ s0 = [ &_16 <- b'0 <> c'0 ] s1 | s1 = any [ br0 -> {_16 = false} (! bb8) | br1 -> {_16} (! bb3) ] ] + | bb3 = s0 [ s0 = [ &_19 <- c'0 <> a'0 ] s1 | s1 = any [ br0 -> {_19 = false} (! bb8) | br1 -> {_19} (! bb4) ] ] + | bb4 = return''0 {_0} + | bb8 = {[%#sinc_max_3] false} any ] [ & _0: () = Any.any_l () | & a'0: UInt32.t = a | & b'0: UInt32.t = b @@ -323,6 +320,6 @@ module M_inc_max_3__test_inc_max_3 [#"inc_max_3.rs" 27 0 27 57] | & _10: MutBorrow.t UInt32.t = Any.any_l () | & _11: MutBorrow.t UInt32.t = Any.any_l () | & _13: bool = Any.any_l () - | & _14: bool = Any.any_l () - | & _17: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] + | & _16: bool = Any.any_l () + | & _19: bool = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end diff --git a/tests/should_succeed/rusthorn/inc_max_many.coma b/tests/should_succeed/rusthorn/inc_max_many.coma index 2015715311..444389ff37 100644 --- a/tests/should_succeed/rusthorn/inc_max_many.coma +++ b/tests/should_succeed/rusthorn/inc_max_many.coma @@ -123,10 +123,9 @@ module M_inc_max_many__take_max [#"inc_max_many.rs" 6 0 6 64] (! return' {result}) ] end module M_inc_max_many__inc_max_many [#"inc_max_many.rs" 11 0 11 51] - let%span sinc_max_many = "inc_max_many.rs" 14 12 14 36 - let%span sinc_max_many'0 = "inc_max_many.rs" 14 12 14 36 - let%span sinc_max_many'1 = "inc_max_many.rs" 10 11 10 70 - let%span sinc_max_many'2 = "inc_max_many.rs" 4 10 5 54 + let%span sinc_max_many = "inc_max_many.rs" 14 4 14 37 + let%span sinc_max_many'0 = "inc_max_many.rs" 10 11 10 70 + let%span sinc_max_many'1 = "inc_max_many.rs" 4 10 5 54 let%span sresolve = "../../../creusot-contracts/src/resolve.rs" 44 20 44 34 let%span sord = "../../../creusot-contracts/src/logic/ord.rs" 124 39 124 89 let%span sord'0 = "../../../creusot-contracts/src/logic/ord.rs" 128 39 128 86 @@ -195,7 +194,7 @@ module M_inc_max_many__inc_max_many [#"inc_max_many.rs" 11 0 11 51] axiom cmp_le_log_spec: forall x: UInt32.t, y: UInt32.t. [%#sord] UInt32.le x y = (cmp_log x y <> C_Greater) let rec take_max (ma: MutBorrow.t UInt32.t) (mb: MutBorrow.t UInt32.t) (return' (x: MutBorrow.t UInt32.t)) = any - [ return''0 (result: MutBorrow.t UInt32.t) -> {[%#sinc_max_many'2] if UInt32.ge ma.current mb.current then + [ return''0 (result: MutBorrow.t UInt32.t) -> {[%#sinc_max_many'1] if UInt32.ge ma.current mb.current then mb.current = mb.final /\ result = ma else ma.current = ma.final /\ result = mb @@ -215,7 +214,7 @@ module M_inc_max_many__inc_max_many [#"inc_max_many.rs" 11 0 11 51] meta "select_lsinst" "all" let rec inc_max_many [#"inc_max_many.rs" 11 0 11 51] (a: UInt32.t) (b: UInt32.t) (k: UInt32.t) (return' (x: ())) = - {[@expl:inc_max_many requires] [%#sinc_max_many'1] UInt32.le a (1000000: UInt32.t) + {[@expl:inc_max_many requires] [%#sinc_max_many'0] UInt32.le a (1000000: UInt32.t) /\ UInt32.le b (1000000: UInt32.t) /\ UInt32.le k (1000000: UInt32.t)} (! bb0 [ bb0 = s0 @@ -234,17 +233,15 @@ module M_inc_max_many__inc_max_many [#"inc_max_many.rs" 11 0 11 51] | s1 = -{resolve'0 _7}- s2 | s2 = UInt32.add {mc.current} {k'0} (fun (_ret: UInt32.t) -> [ &mc <- { mc with current = _ret } ] s3) | s3 = -{resolve'0 mc}- s4 - | s4 = UInt32.add {b'0} {k'0} (fun (_ret: UInt32.t) -> [ &_15 <- _ret ] s5) - | s5 = [ &_13 <- UInt32.ge a'0 _15 ] s6 - | s6 = any [ br0 -> {_13 = false} (! bb3) | br1 -> {_13} (! bb2) ] ] - | bb2 = s0 [ s0 = [ &_12 <- [%#sinc_max_many] true ] s1 | s1 = bb4 ] + | s4 = UInt32.add {b'0} {k'0} (fun (_ret: UInt32.t) -> [ &_14 <- _ret ] s5) + | s5 = [ &_12 <- UInt32.ge a'0 _14 ] s6 + | s6 = any [ br0 -> {_12 = false} (! bb3) | br1 -> {_12} (! bb6) ] ] | bb3 = s0 [ s0 = UInt32.add {a'0} {k'0} (fun (_ret: UInt32.t) -> [ &_19 <- _ret ] s1) - | s1 = [ &_12 <- UInt32.ge b'0 _19 ] s2 - | s2 = bb4 ] - | bb4 = any [ br0 -> {_12 = false} (! bb5) | br1 -> {_12} (! bb7) ] - | bb7 = return''0 {_0} - | bb5 = {[%#sinc_max_many'0] false} any ] + | s1 = [ &_17 <- UInt32.ge b'0 _19 ] s2 + | s2 = any [ br0 -> {_17 = false} (! bb5) | br1 -> {_17} (! bb6) ] ] + | bb6 = return''0 {_0} + | bb5 = {[%#sinc_max_many] false} any ] [ & _0: () = Any.any_l () | & a'0: UInt32.t = a | & b'0: UInt32.t = b @@ -255,7 +252,7 @@ module M_inc_max_many__inc_max_many [#"inc_max_many.rs" 11 0 11 51] | & _8: MutBorrow.t UInt32.t = Any.any_l () | & _9: MutBorrow.t UInt32.t = Any.any_l () | & _12: bool = Any.any_l () - | & _13: bool = Any.any_l () - | & _15: UInt32.t = Any.any_l () + | & _14: UInt32.t = Any.any_l () + | & _17: bool = Any.any_l () | & _19: UInt32.t = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end diff --git a/tests/should_succeed/rusthorn/inc_max_repeat.coma b/tests/should_succeed/rusthorn/inc_max_repeat.coma index ced585ff03..6f6faf5804 100644 --- a/tests/should_succeed/rusthorn/inc_max_repeat.coma +++ b/tests/should_succeed/rusthorn/inc_max_repeat.coma @@ -129,10 +129,9 @@ module M_inc_max_repeat__inc_max_repeat [#"inc_max_repeat.rs" 11 0 11 53] let%span sinc_max_repeat'2 = "inc_max_repeat.rs" 12 16 12 84 let%span sinc_max_repeat'3 = "inc_max_repeat.rs" 14 4 14 7 let%span sinc_max_repeat'4 = "inc_max_repeat.rs" 16 15 16 16 - let%span sinc_max_repeat'5 = "inc_max_repeat.rs" 18 12 18 36 - let%span sinc_max_repeat'6 = "inc_max_repeat.rs" 18 12 18 36 - let%span sinc_max_repeat'7 = "inc_max_repeat.rs" 10 11 10 70 - let%span sinc_max_repeat'8 = "inc_max_repeat.rs" 4 10 5 54 + let%span sinc_max_repeat'5 = "inc_max_repeat.rs" 18 4 18 37 + let%span sinc_max_repeat'6 = "inc_max_repeat.rs" 10 11 10 70 + let%span sinc_max_repeat'7 = "inc_max_repeat.rs" 4 10 5 54 let%span sresolve = "../../../creusot-contracts/src/resolve.rs" 44 20 44 34 let%span sord = "../../../creusot-contracts/src/logic/ord.rs" 124 39 124 89 let%span sord'0 = "../../../creusot-contracts/src/logic/ord.rs" 128 39 128 86 @@ -271,7 +270,7 @@ module M_inc_max_repeat__inc_max_repeat [#"inc_max_repeat.rs" 11 0 11 53] axiom cmp_le_log_spec: forall x: UInt32.t, y: UInt32.t. [%#sord] UInt32.le x y = (cmp_log x y <> C_Greater) let rec take_max (ma: MutBorrow.t UInt32.t) (mb: MutBorrow.t UInt32.t) (return' (x: MutBorrow.t UInt32.t)) = any - [ return''0 (result: MutBorrow.t UInt32.t) -> {[%#sinc_max_repeat'8] if UInt32.ge ma.current mb.current then + [ return''0 (result: MutBorrow.t UInt32.t) -> {[%#sinc_max_repeat'7] if UInt32.ge ma.current mb.current then mb.current = mb.final /\ result = ma else ma.current = ma.final /\ result = mb @@ -291,7 +290,7 @@ module M_inc_max_repeat__inc_max_repeat [#"inc_max_repeat.rs" 11 0 11 53] meta "select_lsinst" "all" let rec inc_max_repeat [#"inc_max_repeat.rs" 11 0 11 53] (a: UInt32.t) (b: UInt32.t) (n: UInt32.t) (return' (x: ())) = - {[@expl:inc_max_repeat requires] [%#sinc_max_repeat'7] UInt32.le a (1000000: UInt32.t) + {[@expl:inc_max_repeat requires] [%#sinc_max_repeat'6] UInt32.le a (1000000: UInt32.t) /\ UInt32.le b (1000000: UInt32.t) /\ UInt32.le n (1000000: UInt32.t)} (! bb0 [ bb0 = s0 @@ -344,17 +343,15 @@ module M_inc_max_repeat__inc_max_repeat [#"inc_max_repeat.rs" 11 0 11 53] | s3 = -{resolve'2 mc}- s4 | s4 = bb4'0 ] ] ] | bb9 = s0 - [ s0 = UInt32.add {b'0} {n'0} (fun (_ret: UInt32.t) -> [ &_37 <- _ret ] s1) - | s1 = [ &_35 <- UInt32.ge a'0 _37 ] s2 - | s2 = any [ br0 -> {_35 = false} (! bb14) | br1 -> {_35} (! bb13) ] ] - | bb13 = s0 [ s0 = [ &_34 <- [%#sinc_max_repeat'5] true ] s1 | s1 = bb15 ] + [ s0 = UInt32.add {b'0} {n'0} (fun (_ret: UInt32.t) -> [ &_36 <- _ret ] s1) + | s1 = [ &_34 <- UInt32.ge a'0 _36 ] s2 + | s2 = any [ br0 -> {_34 = false} (! bb14) | br1 -> {_34} (! bb17) ] ] | bb14 = s0 [ s0 = UInt32.add {a'0} {n'0} (fun (_ret: UInt32.t) -> [ &_41 <- _ret ] s1) - | s1 = [ &_34 <- UInt32.ge b'0 _41 ] s2 - | s2 = bb15 ] - | bb15 = any [ br0 -> {_34 = false} (! bb16) | br1 -> {_34} (! bb18) ] - | bb18 = return''0 {_0} - | bb16 = {[%#sinc_max_repeat'6] false} any ] + | s1 = [ &_39 <- UInt32.ge b'0 _41 ] s2 + | s2 = any [ br0 -> {_39 = false} (! bb16) | br1 -> {_39} (! bb17) ] ] + | bb17 = return''0 {_0} + | bb16 = {[%#sinc_max_repeat'5] false} any ] [ & _0: () = Any.any_l () | & a'0: UInt32.t = a | & b'0: UInt32.t = b @@ -374,7 +371,7 @@ module M_inc_max_repeat__inc_max_repeat [#"inc_max_repeat.rs" 11 0 11 53] | & _30: MutBorrow.t UInt32.t = Any.any_l () | & _31: MutBorrow.t UInt32.t = Any.any_l () | & _34: bool = Any.any_l () - | & _35: bool = Any.any_l () - | & _37: UInt32.t = Any.any_l () + | & _36: UInt32.t = Any.any_l () + | & _39: bool = Any.any_l () | & _41: UInt32.t = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end diff --git a/tests/should_succeed/rusthorn/inc_some_2_list.coma b/tests/should_succeed/rusthorn/inc_some_2_list.coma index 71c28b1da1..562f87f330 100644 --- a/tests/should_succeed/rusthorn/inc_some_2_list.coma +++ b/tests/should_succeed/rusthorn/inc_some_2_list.coma @@ -202,7 +202,7 @@ module M_inc_some_2_list__qyi7504674480942992291__take_some_rest [#"inc_some_2_l (! return' {result}) ] end module M_inc_some_2_list__inc_some_2_list [#"inc_some_2_list.rs" 60 0 60 51] - let%span sinc_some_2_list = "inc_some_2_list.rs" 66 12 66 37 + let%span sinc_some_2_list = "inc_some_2_list.rs" 66 4 66 38 let%span sinc_some_2_list'0 = "inc_some_2_list.rs" 59 11 59 41 let%span sinc_some_2_list'1 = "inc_some_2_list.rs" 35 15 35 38 let%span sinc_some_2_list'2 = "inc_some_2_list.rs" 36 14 36 35 @@ -292,9 +292,9 @@ module M_inc_some_2_list__inc_some_2_list [#"inc_some_2_list.rs" 60 0 60 51] [ s0 = UInt32.add {sum0} {j'0} (fun (_ret: UInt32.t) -> [ &_21 <- _ret ] s1) | s1 = UInt32.add {_21} {k'0} (fun (_ret: UInt32.t) -> [ &_20 <- _ret ] s2) | s2 = [ &_17 <- _18 = _20 ] s3 - | s3 = any [ br0 -> {_17 = false} (! bb5) | br1 -> {_17} (! bb8) ] ] - | bb8 = return''0 {_0} - | bb5 = {[%#sinc_some_2_list] false} any ] + | s3 = any [ br0 -> {_17 = false} (! bb6) | br1 -> {_17} (! bb7) ] ] + | bb7 = return''0 {_0} + | bb6 = {[%#sinc_some_2_list] false} any ] [ & _0: () = Any.any_l () | & l'0: t_List = l | & j'0: UInt32.t = j diff --git a/tests/should_succeed/rusthorn/inc_some_2_tree.coma b/tests/should_succeed/rusthorn/inc_some_2_tree.coma index 8a0ca1956a..dffab9edc0 100644 --- a/tests/should_succeed/rusthorn/inc_some_2_tree.coma +++ b/tests/should_succeed/rusthorn/inc_some_2_tree.coma @@ -273,7 +273,7 @@ module M_inc_some_2_tree__qyi9454558703362393917__take_some_rest [#"inc_some_2_t (! return' {result}) ] end module M_inc_some_2_tree__inc_some_2_tree [#"inc_some_2_tree.rs" 80 0 80 51] - let%span sinc_some_2_tree = "inc_some_2_tree.rs" 86 12 86 37 + let%span sinc_some_2_tree = "inc_some_2_tree.rs" 86 4 86 38 let%span sinc_some_2_tree'0 = "inc_some_2_tree.rs" 79 11 79 41 let%span sinc_some_2_tree'1 = "inc_some_2_tree.rs" 38 15 38 38 let%span sinc_some_2_tree'2 = "inc_some_2_tree.rs" 39 14 39 35 @@ -363,9 +363,9 @@ module M_inc_some_2_tree__inc_some_2_tree [#"inc_some_2_tree.rs" 80 0 80 51] [ s0 = UInt32.add {sum0} {j'0} (fun (_ret: UInt32.t) -> [ &_21 <- _ret ] s1) | s1 = UInt32.add {_21} {k'0} (fun (_ret: UInt32.t) -> [ &_20 <- _ret ] s2) | s2 = [ &_17 <- _18 = _20 ] s3 - | s3 = any [ br0 -> {_17 = false} (! bb5) | br1 -> {_17} (! bb8) ] ] - | bb8 = return''0 {_0} - | bb5 = {[%#sinc_some_2_tree] false} any ] + | s3 = any [ br0 -> {_17 = false} (! bb6) | br1 -> {_17} (! bb7) ] ] + | bb7 = return''0 {_0} + | bb6 = {[%#sinc_some_2_tree] false} any ] [ & _0: () = Any.any_l () | & t'0: t_Tree = t | & j'0: UInt32.t = j diff --git a/tests/should_succeed/rusthorn/inc_some_list.coma b/tests/should_succeed/rusthorn/inc_some_list.coma index 02949152d6..5bb149767c 100644 --- a/tests/should_succeed/rusthorn/inc_some_list.coma +++ b/tests/should_succeed/rusthorn/inc_some_list.coma @@ -223,7 +223,7 @@ module M_inc_some_list__qyi14489061725823948544__take_some [#"inc_some_list.rs" (! return' {result}) ] end module M_inc_some_list__inc_some_list [#"inc_some_list.rs" 58 0 58 41] - let%span sinc_some_list = "inc_some_list.rs" 62 12 62 33 + let%span sinc_some_list = "inc_some_list.rs" 62 4 62 34 let%span sinc_some_list'0 = "inc_some_list.rs" 57 11 57 36 let%span sinc_some_list'1 = "inc_some_list.rs" 35 15 35 38 let%span sinc_some_list'2 = "inc_some_list.rs" 36 14 36 35 @@ -288,9 +288,9 @@ module M_inc_some_list__inc_some_list [#"inc_some_list.rs" 58 0 58 41] | bb3 = s0 [ s0 = UInt32.add {sum0} {k'0} (fun (_ret: UInt32.t) -> [ &_13 <- _ret ] s1) | s1 = [ &_10 <- _11 = _13 ] s2 - | s2 = any [ br0 -> {_10 = false} (! bb4) | br1 -> {_10} (! bb7) ] ] - | bb7 = return''0 {_0} - | bb4 = {[%#sinc_some_list] false} any ] + | s2 = any [ br0 -> {_10 = false} (! bb5) | br1 -> {_10} (! bb6) ] ] + | bb6 = return''0 {_0} + | bb5 = {[%#sinc_some_list] false} any ] [ & _0: () = Any.any_l () | & l'0: t_List = l | & k'0: UInt32.t = k diff --git a/tests/should_succeed/rusthorn/inc_some_tree.coma b/tests/should_succeed/rusthorn/inc_some_tree.coma index ceb6634025..38cd9cb389 100644 --- a/tests/should_succeed/rusthorn/inc_some_tree.coma +++ b/tests/should_succeed/rusthorn/inc_some_tree.coma @@ -279,7 +279,7 @@ module M_inc_some_tree__qyi12127997673864742005__take_some [#"inc_some_tree.rs" (! return' {result}) ] end module M_inc_some_tree__inc_some_tree [#"inc_some_tree.rs" 78 0 78 41] - let%span sinc_some_tree = "inc_some_tree.rs" 82 12 82 33 + let%span sinc_some_tree = "inc_some_tree.rs" 82 4 82 34 let%span sinc_some_tree'0 = "inc_some_tree.rs" 77 11 77 36 let%span sinc_some_tree'1 = "inc_some_tree.rs" 38 15 38 38 let%span sinc_some_tree'2 = "inc_some_tree.rs" 39 14 39 35 @@ -344,9 +344,9 @@ module M_inc_some_tree__inc_some_tree [#"inc_some_tree.rs" 78 0 78 41] | bb3 = s0 [ s0 = UInt32.add {sum0} {k'0} (fun (_ret: UInt32.t) -> [ &_13 <- _ret ] s1) | s1 = [ &_10 <- _11 = _13 ] s2 - | s2 = any [ br0 -> {_10 = false} (! bb4) | br1 -> {_10} (! bb7) ] ] - | bb7 = return''0 {_0} - | bb4 = {[%#sinc_some_tree] false} any ] + | s2 = any [ br0 -> {_10 = false} (! bb5) | br1 -> {_10} (! bb6) ] ] + | bb6 = return''0 {_0} + | bb5 = {[%#sinc_some_tree] false} any ] [ & _0: () = Any.any_l () | & t'0: t_Tree = t | & k'0: UInt32.t = k diff --git a/tests/should_succeed/selection_sort_generic.coma b/tests/should_succeed/selection_sort_generic.coma index ed23222d61..ed14c18d8a 100644 --- a/tests/should_succeed/selection_sort_generic.coma +++ b/tests/should_succeed/selection_sort_generic.coma @@ -18,7 +18,7 @@ module M_selection_sort_generic__selection_sort [#"selection_sort_generic.rs" 29 let%span sselection_sort_generic'15 = "selection_sort_generic.rs" 24 16 24 94 let%span sselection_sort_generic'16 = "selection_sort_generic.rs" 11 8 11 62 let%span sselection_sort_generic'17 = "selection_sort_generic.rs" 18 8 18 35 - let%span sselection_sort_generic'18 = "selection_sort_generic.rs" 1 0 1387 4 + let%span sselection_sort_generic'18 = "selection_sort_generic.rs" 1 0 1398 4 let%span svec = "../../creusot-contracts/src/std/vec.rs" 110 16 110 17 let%span svec'0 = "../../creusot-contracts/src/std/vec.rs" 111 26 111 48 let%span svec'1 = "../../creusot-contracts/src/std/vec.rs" 189 16 189 17 diff --git a/tests/should_succeed/sparse_array.coma b/tests/should_succeed/sparse_array.coma index 9efa378c6c..8b7c940900 100644 --- a/tests/should_succeed/sparse_array.coma +++ b/tests/should_succeed/sparse_array.coma @@ -1,4 +1,4 @@ -module M_sparse_array__qyi1714485913065586857__view [#"sparse_array.rs" 38 4 38 33] (* as creusot_contracts::View> *) +module M_sparse_array__qyi12413249737888359701__view [#"sparse_array.rs" 38 4 38 33] (* as creusot_contracts::View> *) let%span ssparse_array = "sparse_array.rs" 37 14 37 35 let%span ssparse_array'0 = "sparse_array.rs" 41 21 41 81 let%span ssparse_array'1 = "sparse_array.rs" 40 12 41 82 @@ -52,7 +52,7 @@ module M_sparse_array__qyi1714485913065586857__view [#"sparse_array.rs" 38 4 38 )) = UInt64.t'int const_SIZE end -module M_sparse_array__qyi15600151499664207324__resolve_coherence [#"sparse_array.rs" 58 4 58 30] (* as creusot_contracts::Resolve> *) +module M_sparse_array__qyi8756171091343028329__resolve_coherence [#"sparse_array.rs" 58 4 58 30] (* as creusot_contracts::Resolve> *) let%span ssparse_array = "sparse_array.rs" 55 15 55 24 let%span ssparse_array'0 = "sparse_array.rs" 56 15 56 39 let%span ssparse_array'1 = "sparse_array.rs" 57 4 57 30 @@ -217,7 +217,7 @@ module M_sparse_array__qyi15600151499664207324__resolve_coherence [#"sparse_arra -> ([%#ssparse_array'0] structural_resolve self) -> ([@expl:resolve_coherence ensures] [%#ssparse_array'1] resolve'7 self) end -module M_sparse_array__qyi495551203689118095__get [#"sparse_array.rs" 95 4 95 45] (* Sparse *) +module M_sparse_array__qyi963773560051086010__get [#"sparse_array.rs" 95 4 95 45] (* Sparse *) let%span ssparse_array = "sparse_array.rs" 96 20 96 31 let%span ssparse_array'0 = "sparse_array.rs" 97 29 97 45 let%span ssparse_array'1 = "sparse_array.rs" 97 59 97 73 @@ -419,7 +419,7 @@ module M_sparse_array__qyi495551203689118095__get [#"sparse_array.rs" 95 4 95 45 end} (! return' {result}) ] end -module M_sparse_array__qyi495551203689118095__lemma_permutation [#"sparse_array.rs" 107 4 107 38] (* Sparse *) +module M_sparse_array__qyi963773560051086010__lemma_permutation [#"sparse_array.rs" 107 4 107 38] (* Sparse *) let%span ssparse_array = "sparse_array.rs" 103 15 103 24 let%span ssparse_array'0 = "sparse_array.rs" 104 15 104 29 let%span ssparse_array'1 = "sparse_array.rs" 105 15 105 34 @@ -624,7 +624,7 @@ module M_sparse_array__qyi495551203689118095__lemma_permutation [#"sparse_array. = i) -> (let _ = lemma_permutation_aux self (Fset.empty: Fset.fset int) i i in [@expl:lemma_permutation ensures] [%#ssparse_array'2] is_elt self i)) end -module M_sparse_array__qyi495551203689118095__lemma_permutation_aux [#"sparse_array.rs" 123 4 123 76] (* Sparse *) +module M_sparse_array__qyi963773560051086010__lemma_permutation_aux [#"sparse_array.rs" 123 4 123 76] (* Sparse *) let%span ssparse_array = "sparse_array.rs" 112 14 112 32 let%span ssparse_array'0 = "sparse_array.rs" 113 15 113 24 let%span ssparse_array'1 = "sparse_array.rs" 114 15 114 29 @@ -812,7 +812,7 @@ module M_sparse_array__qyi495551203689118095__lemma_permutation_aux [#"sparse_ar = i))))) ) end -module M_sparse_array__qyi495551203689118095__bounded_fset_len [#"sparse_array.rs" 139 4 139 47] (* Sparse *) +module M_sparse_array__qyi963773560051086010__bounded_fset_len [#"sparse_array.rs" 139 4 139 47] (* Sparse *) let%span ssparse_array = "sparse_array.rs" 135 14 135 17 let%span ssparse_array'0 = "sparse_array.rs" 136 15 136 60 let%span ssparse_array'1 = "sparse_array.rs" 137 15 137 23 @@ -861,7 +861,7 @@ module M_sparse_array__qyi495551203689118095__bounded_fset_len [#"sparse_array.r [@expl:bounded_fset_len ensures] [%#ssparse_array'2] Fset.cardinal s <= bnd ) end -module M_sparse_array__qyi495551203689118095__set [#"sparse_array.rs" 150 4 150 41] (* Sparse *) +module M_sparse_array__qyi963773560051086010__set [#"sparse_array.rs" 150 4 150 41] (* Sparse *) let%span ssparse_array = "sparse_array.rs" 151 8 151 22 let%span ssparse_array'0 = "sparse_array.rs" 152 20 152 31 let%span ssparse_array'1 = "sparse_array.rs" 153 31 153 47 @@ -1731,7 +1731,7 @@ module M_sparse_array__f [#"sparse_array.rs" 177 0 177 10] | & _36: t_Option'0 = Any.any_l () | & _38: t_Option'0 = Any.any_l () ]) [ return''0 (result: ()) -> (! return' {result}) ] end -module M_sparse_array__qyi15600151499664207324__resolve_coherence__refines [#"sparse_array.rs" 58 4 58 30] (* as creusot_contracts::Resolve> *) +module M_sparse_array__qyi8756171091343028329__resolve_coherence__refines [#"sparse_array.rs" 58 4 58 30] (* as creusot_contracts::Resolve> *) let%span ssparse_array = "sparse_array.rs" 58 4 58 30 let%span ssparse_array'0 = "sparse_array.rs" 50 12 50 63 let%span ssparse_array'1 = "sparse_array.rs" 37 14 37 35 diff --git a/tests/should_succeed/sparse_array/proof.json b/tests/should_succeed/sparse_array/proof.json index 1f2c9fd3d2..c8707988d3 100644 --- a/tests/should_succeed/sparse_array/proof.json +++ b/tests/should_succeed/sparse_array/proof.json @@ -18,32 +18,32 @@ "vc_set": { "prover": "cvc5@1.0.5", "time": 0.025 }, "vc_set'0": { "prover": "cvc5@1.0.5", "time": 0.025 } }, - "M_sparse_array__qyi15600151499664207324__resolve_coherence": { - "vc_resolve_coherence": { "prover": "cvc5@1.0.5", "time": 0.053 } + "M_sparse_array__qyi12413249737888359701__view": { + "vc_view": { "prover": "cvc5@1.0.5", "time": 0.023 } }, - "M_sparse_array__qyi15600151499664207324__resolve_coherence__refines": { - "refines": { "prover": "cvc5@1.0.5", "time": 0.031 } + "M_sparse_array__qyi8756171091343028329__resolve_coherence": { + "vc_resolve_coherence": { "prover": "cvc5@1.0.5", "time": 0.04 } }, - "M_sparse_array__qyi1714485913065586857__view": { - "vc_view": { "prover": "cvc5@1.0.5", "time": 0.036 } + "M_sparse_array__qyi8756171091343028329__resolve_coherence__refines": { + "refines": { "prover": "cvc5@1.0.5", "time": 0.021 } }, - "M_sparse_array__qyi495551203689118095__bounded_fset_len": { - "vc_bounded_fset_len": { "prover": "cvc5@1.0.5", "time": 0.069 } + "M_sparse_array__qyi963773560051086010__bounded_fset_len": { + "vc_bounded_fset_len": { "prover": "cvc5@1.0.5", "time": 0.047 } }, - "M_sparse_array__qyi495551203689118095__get": { - "vc_get": { "prover": "cvc5@1.0.5", "time": 0.095 } + "M_sparse_array__qyi963773560051086010__get": { + "vc_get": { "prover": "cvc5@1.0.5", "time": 0.053 } }, - "M_sparse_array__qyi495551203689118095__lemma_permutation": { - "vc_lemma_permutation": { "prover": "cvc5@1.0.5", "time": 0.106 } + "M_sparse_array__qyi963773560051086010__lemma_permutation": { + "vc_lemma_permutation": { "prover": "cvc5@1.0.5", "time": 0.06 } }, - "M_sparse_array__qyi495551203689118095__lemma_permutation_aux": { + "M_sparse_array__qyi963773560051086010__lemma_permutation_aux": { "vc_lemma_permutation_aux": { "prover": "alt-ergo@2.6.0", - "time": 0.061 + "time": 0.042 } }, - "M_sparse_array__qyi495551203689118095__set": { - "vc_set": { "prover": "z3@4.12.4", "time": 0.136 } + "M_sparse_array__qyi963773560051086010__set": { + "vc_set": { "prover": "z3@4.12.4", "time": 0.265 } } } } diff --git a/tests/should_succeed/syntax/12_ghost_code.coma b/tests/should_succeed/syntax/12_ghost_code.coma index 6a27987200..275ebd529a 100644 --- a/tests/should_succeed/syntax/12_ghost_code.coma +++ b/tests/should_succeed/syntax/12_ghost_code.coma @@ -127,7 +127,7 @@ module M_12_ghost_code__ghost_check [#"12_ghost_code.rs" 34 0 34 20] let%span s12_ghost_code = "12_ghost_code.rs" 38 16 38 28 let%span s12_ghost_code'0 = "12_ghost_code.rs" 40 11 40 12 let%span s12_ghost_code'1 = "12_ghost_code.rs" 42 23 42 24 - let%span s12_ghost_code'2 = "12_ghost_code.rs" 42 12 42 24 + let%span s12_ghost_code'2 = "12_ghost_code.rs" 42 4 42 25 let%span s12_ghost_code'3 = "12_ghost_code.rs" 32 22 32 24 let%span svec = "../../../creusot-contracts/src/std/vec.rs" 102 26 102 44 let%span svec'0 = "../../../creusot-contracts/src/std/vec.rs" 115 26 115 56 @@ -196,9 +196,9 @@ module M_12_ghost_code__ghost_check [#"12_ghost_code.rs" 34 0 34 20] | bb3 = s0 [ s0 = len {x} (fun (_ret: UInt64.t) -> [ &_8 <- _ret ] s1) | s1 = bb4 ] | bb4 = s0 [ s0 = [ &_7 <- _8 = ([%#s12_ghost_code'1] (1: UInt64.t)) ] s1 - | s1 = any [ br0 -> {_7 = false} (! bb5) | br1 -> {_7} (! bb8) ] ] - | bb8 = return''0 {_0} - | bb5 = {[%#s12_ghost_code'2] false} any ] + | s1 = any [ br0 -> {_7 = false} (! bb6) | br1 -> {_7} (! bb7) ] ] + | bb7 = return''0 {_0} + | bb6 = {[%#s12_ghost_code'2] false} any ] [ & _0: () = Any.any_l () | & x: t_Vec = Any.any_l () | & _2: () = Any.any_l () diff --git a/tests/should_succeed/syntax/derive_macros/default.coma b/tests/should_succeed/syntax/derive_macros/default.coma index cf871dd6c9..8f5237c602 100644 --- a/tests/should_succeed/syntax/derive_macros/default.coma +++ b/tests/should_succeed/syntax/derive_macros/default.coma @@ -169,7 +169,7 @@ module M_default__qyi13740418467561183253__default [#"default.rs" 7 9 7 16] (* < end module M_default__qyi8078909456326062290__default [#"default.rs" 10 9 10 16] (* as creusot_contracts::Default> *) let%span sdefault = "default.rs" 10 9 10 16 - let%span sdefault'0 = "default.rs" 1 0 140 4 + let%span sdefault'0 = "default.rs" 1 0 139 4 let%span snum = "../../../../creusot-contracts/src/std/num.rs" 33 26 33 41 let%span sops = "../../../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../../../creusot-contracts/src/std/ops.rs" 164 14 164 100 @@ -472,7 +472,7 @@ module M_default__qyi14004758275928035824__default [#"default.rs" 23 9 23 16] (* end module M_default__qyi4220271428403486757__default [#"default.rs" 32 9 32 16] (* as creusot_contracts::Default> *) let%span sdefault = "default.rs" 32 9 32 16 - let%span sdefault'0 = "default.rs" 1 0 140 4 + let%span sdefault'0 = "default.rs" 1 0 139 4 let%span sops = "../../../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../../../creusot-contracts/src/std/ops.rs" 169 14 169 61 @@ -660,7 +660,7 @@ module M_default__qyi4220271428403486757__default [#"default.rs" 32 9 32 16] (* end module M_default__qyi8078909456326062290__default__refines [#"default.rs" 10 9 10 16] (* as creusot_contracts::Default> *) let%span sdefault = "default.rs" 10 9 10 16 - let%span sdefault'0 = "default.rs" 1 0 140 4 + let%span sdefault'0 = "default.rs" 1 0 139 4 let%span snum = "../../../../creusot-contracts/src/std/num.rs" 33 26 33 41 let%span sops = "../../../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../../../creusot-contracts/src/std/ops.rs" 164 14 164 100 @@ -828,7 +828,7 @@ module M_default__qyi8078909456326062290__default__refines [#"default.rs" 10 9 1 end module M_default__qyi4220271428403486757__default__refines [#"default.rs" 32 9 32 16] (* as creusot_contracts::Default> *) let%span sdefault = "default.rs" 32 9 32 16 - let%span sdefault'0 = "default.rs" 1 0 140 4 + let%span sdefault'0 = "default.rs" 1 0 139 4 let%span sops = "../../../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../../../creusot-contracts/src/std/ops.rs" 169 14 169 61 diff --git a/tests/should_succeed/syntax/derive_macros/mixed.coma b/tests/should_succeed/syntax/derive_macros/mixed.coma index 759ba7617b..65a4b6082c 100644 --- a/tests/should_succeed/syntax/derive_macros/mixed.coma +++ b/tests/should_succeed/syntax/derive_macros/mixed.coma @@ -1,6 +1,6 @@ module M_mixed__qyi2592445413368279263__clone [#"mixed.rs" 8 9 8 14] (* as creusot_contracts::Clone> *) let%span smixed = "mixed.rs" 8 9 8 14 - let%span smixed'0 = "mixed.rs" 1 0 237 4 + let%span smixed'0 = "mixed.rs" 1 0 236 4 let%span sops = "../../../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../../../creusot-contracts/src/std/ops.rs" 169 14 169 61 @@ -220,7 +220,7 @@ module M_mixed__qyi2592445413368279263__clone [#"mixed.rs" 8 9 8 14] (* as creusot_contracts::PartialEq> *) let%span smixed = "mixed.rs" 8 16 8 25 - let%span smixed'0 = "mixed.rs" 1 0 257 4 + let%span smixed'0 = "mixed.rs" 1 0 256 4 let%span smixed'1 = "mixed.rs" 23 8 23 66 let%span sinvariant = "../../../../creusot-contracts/src/invariant.rs" 90 8 90 18 let%span smodel = "../../../../creusot-contracts/src/model.rs" 35 8 35 28 @@ -351,7 +351,7 @@ module M_mixed__qyi15378480724732772077__eq [#"mixed.rs" 8 16 8 25] (* as creusot_contracts::Clone> *) let%span smixed = "mixed.rs" 27 9 27 14 - let%span smixed'0 = "mixed.rs" 1 0 237 4 + let%span smixed'0 = "mixed.rs" 1 0 236 4 let%span sops = "../../../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../../../creusot-contracts/src/std/ops.rs" 169 14 169 61 @@ -595,7 +595,7 @@ module M_mixed__qyi1267749258272586863__clone [#"mixed.rs" 27 9 27 14] (* as creusot_contracts::PartialEq> *) let%span smixed = "mixed.rs" 27 16 27 25 - let%span smixed'0 = "mixed.rs" 1 0 257 4 + let%span smixed'0 = "mixed.rs" 1 0 256 4 let%span smixed'1 = "mixed.rs" 38 8 41 9 let%span sinvariant = "../../../../creusot-contracts/src/invariant.rs" 90 8 90 18 let%span smodel = "../../../../creusot-contracts/src/model.rs" 35 8 35 28 @@ -891,7 +891,7 @@ module M_mixed__qyi2899991615344599026__resolve_coherence [#"mixed.rs" 54 9 54 1 end module M_mixed__qyi2388806976216935010__clone [#"mixed.rs" 54 18 54 23] (* as creusot_contracts::Clone> *) let%span smixed = "mixed.rs" 54 18 54 23 - let%span smixed'0 = "mixed.rs" 1 0 237 4 + let%span smixed'0 = "mixed.rs" 1 0 236 4 let%span sops = "../../../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../../../creusot-contracts/src/std/ops.rs" 169 14 169 61 @@ -1203,7 +1203,7 @@ module M_mixed__qyi2388806976216935010__clone [#"mixed.rs" 54 18 54 23] (* as creusot_contracts::Clone> *) let%span smixed = "mixed.rs" 8 9 8 14 - let%span smixed'0 = "mixed.rs" 1 0 237 4 + let%span smixed'0 = "mixed.rs" 1 0 236 4 let%span sops = "../../../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../../../creusot-contracts/src/std/ops.rs" 169 14 169 61 @@ -1406,7 +1406,7 @@ module M_mixed__qyi2592445413368279263__clone__refines [#"mixed.rs" 8 9 8 14] (* end module M_mixed__qyi1267749258272586863__clone__refines [#"mixed.rs" 27 9 27 14] (* as creusot_contracts::Clone> *) let%span smixed = "mixed.rs" 27 9 27 14 - let%span smixed'0 = "mixed.rs" 1 0 237 4 + let%span smixed'0 = "mixed.rs" 1 0 236 4 let%span sops = "../../../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../../../creusot-contracts/src/std/ops.rs" 169 14 169 61 @@ -1616,7 +1616,7 @@ module M_mixed__qyi1267749258272586863__clone__refines [#"mixed.rs" 27 9 27 14] end module M_mixed__qyi2388806976216935010__clone__refines [#"mixed.rs" 54 18 54 23] (* as creusot_contracts::Clone> *) let%span smixed = "mixed.rs" 54 18 54 23 - let%span smixed'0 = "mixed.rs" 1 0 237 4 + let%span smixed'0 = "mixed.rs" 1 0 236 4 let%span sops = "../../../../creusot-contracts/src/std/ops.rs" 159 14 159 114 let%span sops'0 = "../../../../creusot-contracts/src/std/ops.rs" 164 14 164 100 let%span sops'1 = "../../../../creusot-contracts/src/std/ops.rs" 169 14 169 61 diff --git a/tests/should_succeed/union_find.coma b/tests/should_succeed/union_find.coma index 7cddf5b813..4a0b6386d3 100644 --- a/tests/should_succeed/union_find.coma +++ b/tests/should_succeed/union_find.coma @@ -5079,12 +5079,12 @@ module M_union_find__example [#"union_find.rs" 344 0 344 16] let%span sunion_find'3 = "union_find.rs" 352 36 352 37 let%span sunion_find'4 = "union_find.rs" 353 36 353 37 let%span sunion_find'5 = "union_find.rs" 362 36 362 37 - let%span sunion_find'6 = "union_find.rs" 362 12 362 37 - let%span sunion_find'7 = "union_find.rs" 361 12 361 58 - let%span sunion_find'8 = "union_find.rs" 356 12 356 40 - let%span sunion_find'9 = "union_find.rs" 353 12 353 37 - let%span sunion_find'10 = "union_find.rs" 352 12 352 37 - let%span sunion_find'11 = "union_find.rs" 351 12 351 37 + let%span sunion_find'6 = "union_find.rs" 362 4 362 38 + let%span sunion_find'7 = "union_find.rs" 361 4 361 59 + let%span sunion_find'8 = "union_find.rs" 356 4 356 41 + let%span sunion_find'9 = "union_find.rs" 353 4 353 38 + let%span sunion_find'10 = "union_find.rs" 352 4 352 38 + let%span sunion_find'11 = "union_find.rs" 351 4 351 38 let%span sunion_find'12 = "union_find.rs" 170 23 170 42 let%span sunion_find'13 = "union_find.rs" 169 4 169 42 let%span sunion_find'14 = "union_find.rs" 190 23 190 25 @@ -5480,63 +5480,63 @@ module M_union_find__example [#"union_find.rs" 344 0 344 16] | bb8 = s0 [ s0 = get'0 {_15} {x} (fun (_ret: Int32.t) -> [ &_14 <- _ret ] s1) | s1 = bb9 ] | bb9 = s0 [ s0 = [ &_12 <- _14 = ([%#sunion_find'2] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_12 = false} (! bb10) | br1 -> {_12} (! bb12) ] ] - | bb12 = s0 [ s0 = borrow {uf} (fun (_ret: t_UnionFind) -> [ &_23 <- _ret ] s1) | s1 = bb13 ] - | bb13 = s0 [ s0 = get'0 {_23} {y} (fun (_ret: Int32.t) -> [ &_22 <- _ret ] s1) | s1 = bb14 ] - | bb14 = s0 + | s1 = any [ br0 -> {_12 = false} (! bb11) | br1 -> {_12} (! bb10) ] ] + | bb10 = s0 [ s0 = borrow {uf} (fun (_ret: t_UnionFind) -> [ &_23 <- _ret ] s1) | s1 = bb12 ] + | bb12 = s0 [ s0 = get'0 {_23} {y} (fun (_ret: Int32.t) -> [ &_22 <- _ret ] s1) | s1 = bb13 ] + | bb13 = s0 [ s0 = [ &_20 <- _22 = ([%#sunion_find'3] (2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_20 = false} (! bb15) | br1 -> {_20} (! bb17) ] ] - | bb17 = s0 [ s0 = borrow {uf} (fun (_ret: t_UnionFind) -> [ &_31 <- _ret ] s1) | s1 = bb18 ] - | bb18 = s0 [ s0 = get'0 {_31} {z} (fun (_ret: Int32.t) -> [ &_30 <- _ret ] s1) | s1 = bb19 ] - | bb19 = s0 + | s1 = any [ br0 -> {_20 = false} (! bb15) | br1 -> {_20} (! bb14) ] ] + | bb14 = s0 [ s0 = borrow {uf} (fun (_ret: t_UnionFind) -> [ &_31 <- _ret ] s1) | s1 = bb16 ] + | bb16 = s0 [ s0 = get'0 {_31} {z} (fun (_ret: Int32.t) -> [ &_30 <- _ret ] s1) | s1 = bb17 ] + | bb17 = s0 [ s0 = [ &_28 <- _30 = ([%#sunion_find'4] (3: Int32.t)) ] s1 - | s1 = any [ br0 -> {_28 = false} (! bb20) | br1 -> {_28} (! bb22) ] ] - | bb22 = s0 + | s1 = any [ br0 -> {_28 = false} (! bb19) | br1 -> {_28} (! bb18) ] ] + | bb18 = s0 [ s0 = {inv'4 uf} MutBorrow.borrow_mut {uf} (fun (_ret: MutBorrow.t t_UnionFind) -> [ &_37 <- _ret ] -{inv'4 _ret.final}- [ &uf <- _ret.final ] s1) | s1 = borrow_mut {_37} (fun (_ret: MutBorrow.t t_UnionFind) -> [ &_36 <- _ret ] s2) - | s2 = bb23 ] - | bb23 = s0 [ s0 = union {_36} {x} {y} (fun (_ret: t_Element) -> [ &_35 <- _ret ] s1) | s1 = bb24 ] - | bb24 = s0 + | s2 = bb20 ] + | bb20 = s0 [ s0 = union {_36} {x} {y} (fun (_ret: t_Element) -> [ &_35 <- _ret ] s1) | s1 = bb21 ] + | bb21 = s0 [ s0 = {inv'4 uf} MutBorrow.borrow_mut {uf} (fun (_ret: MutBorrow.t t_UnionFind) -> [ &_43 <- _ret ] -{inv'4 _ret.final}- [ &uf <- _ret.final ] s1) | s1 = borrow_mut {_43} (fun (_ret: MutBorrow.t t_UnionFind) -> [ &_42 <- _ret ] s2) - | s2 = bb25 ] - | bb25 = s0 [ s0 = equiv {_42} {x} {y} (fun (_ret: bool) -> [ &_41 <- _ret ] s1) | s1 = bb26 ] - | bb26 = any [ br0 -> {_41 = false} (! bb27) | br1 -> {_41} (! bb29) ] - | bb29 = s0 + | s2 = bb22 ] + | bb22 = s0 [ s0 = equiv {_42} {x} {y} (fun (_ret: bool) -> [ &_41 <- _ret ] s1) | s1 = bb23 ] + | bb23 = any [ br0 -> {_41 = false} (! bb25) | br1 -> {_41} (! bb24) ] + | bb24 = s0 [ s0 = {inv'4 uf} MutBorrow.borrow_mut {uf} (fun (_ret: MutBorrow.t t_UnionFind) -> [ &_49 <- _ret ] -{inv'4 _ret.final}- [ &uf <- _ret.final ] s1) | s1 = borrow_mut {_49} (fun (_ret: MutBorrow.t t_UnionFind) -> [ &_48 <- _ret ] s2) - | s2 = bb30 ] - | bb30 = s0 [ s0 = find {_48} {x} (fun (_ret: t_Element) -> [ &xr <- _ret ] s1) | s1 = bb31 ] - | bb31 = s0 + | s2 = bb26 ] + | bb26 = s0 [ s0 = find {_48} {x} (fun (_ret: t_Element) -> [ &xr <- _ret ] s1) | s1 = bb27 ] + | bb27 = s0 [ s0 = {inv'4 uf} MutBorrow.borrow_mut {uf} (fun (_ret: MutBorrow.t t_UnionFind) -> [ &_53 <- _ret ] -{inv'4 _ret.final}- [ &uf <- _ret.final ] s1) | s1 = borrow_mut {_53} (fun (_ret: MutBorrow.t t_UnionFind) -> [ &_52 <- _ret ] s2) - | s2 = bb32 ] - | bb32 = s0 [ s0 = find {_52} {y} (fun (_ret: t_Element) -> [ &yr <- _ret ] s1) | s1 = bb33 ] - | bb33 = s0 [ s0 = borrow {uf} (fun (_ret: t_UnionFind) -> [ &_59 <- _ret ] s1) | s1 = bb34 ] - | bb34 = s0 [ s0 = get'0 {_59} {xr} (fun (_ret: Int32.t) -> [ &_58 <- _ret ] s1) | s1 = bb35 ] - | bb35 = s0 [ s0 = borrow {uf} (fun (_ret: t_UnionFind) -> [ &_64 <- _ret ] s1) | s1 = bb36 ] - | bb36 = s0 [ s0 = get'0 {_64} {yr} (fun (_ret: Int32.t) -> [ &_63 <- _ret ] s1) | s1 = bb37 ] - | bb37 = s0 [ s0 = [ &_56 <- _58 = _63 ] s1 | s1 = any [ br0 -> {_56 = false} (! bb38) | br1 -> {_56} (! bb40) ] ] - | bb40 = s0 [ s0 = borrow {uf} (fun (_ret: t_UnionFind) -> [ &_72 <- _ret ] s1) | s1 = bb41 ] - | bb41 = s0 [ s0 = get'0 {_72} {z} (fun (_ret: Int32.t) -> [ &_71 <- _ret ] s1) | s1 = bb42 ] - | bb42 = s0 + | s2 = bb28 ] + | bb28 = s0 [ s0 = find {_52} {y} (fun (_ret: t_Element) -> [ &yr <- _ret ] s1) | s1 = bb29 ] + | bb29 = s0 [ s0 = borrow {uf} (fun (_ret: t_UnionFind) -> [ &_59 <- _ret ] s1) | s1 = bb30 ] + | bb30 = s0 [ s0 = get'0 {_59} {xr} (fun (_ret: Int32.t) -> [ &_58 <- _ret ] s1) | s1 = bb31 ] + | bb31 = s0 [ s0 = borrow {uf} (fun (_ret: t_UnionFind) -> [ &_64 <- _ret ] s1) | s1 = bb32 ] + | bb32 = s0 [ s0 = get'0 {_64} {yr} (fun (_ret: Int32.t) -> [ &_63 <- _ret ] s1) | s1 = bb33 ] + | bb33 = s0 [ s0 = [ &_56 <- _58 = _63 ] s1 | s1 = any [ br0 -> {_56 = false} (! bb35) | br1 -> {_56} (! bb34) ] ] + | bb34 = s0 [ s0 = borrow {uf} (fun (_ret: t_UnionFind) -> [ &_72 <- _ret ] s1) | s1 = bb36 ] + | bb36 = s0 [ s0 = get'0 {_72} {z} (fun (_ret: Int32.t) -> [ &_71 <- _ret ] s1) | s1 = bb37 ] + | bb37 = s0 [ s0 = [ &_69 <- _71 = ([%#sunion_find'5] (3: Int32.t)) ] s1 - | s1 = any [ br0 -> {_69 = false} (! bb43) | br1 -> {_69} (! bb45) ] ] - | bb45 = return''0 {_0} - | bb43 = {[%#sunion_find'6] false} any - | bb38 = {[%#sunion_find'7] false} any - | bb27 = {[%#sunion_find'8] false} any - | bb20 = {[%#sunion_find'9] false} any + | s1 = any [ br0 -> {_69 = false} (! bb39) | br1 -> {_69} (! bb38) ] ] + | bb38 = return''0 {_0} + | bb39 = {[%#sunion_find'6] false} any + | bb35 = {[%#sunion_find'7] false} any + | bb25 = {[%#sunion_find'8] false} any + | bb19 = {[%#sunion_find'9] false} any | bb15 = {[%#sunion_find'10] false} any - | bb10 = {[%#sunion_find'11] false} any ] + | bb11 = {[%#sunion_find'11] false} any ] [ & _0: () = Any.any_l () | & uf: t_UnionFind = Any.any_l () | & x: t_Element = Any.any_l () diff --git a/tests/should_succeed/union_find_cpp.coma b/tests/should_succeed/union_find_cpp.coma index ca03be712e..a3e98337dd 100644 --- a/tests/should_succeed/union_find_cpp.coma +++ b/tests/should_succeed/union_find_cpp.coma @@ -3904,11 +3904,11 @@ module M_union_find_cpp__example [#"union_find_cpp.rs" 292 0 292 16] let%span sunion_find_cpp'3 = "union_find_cpp.rs" 300 36 300 37 let%span sunion_find_cpp'4 = "union_find_cpp.rs" 301 36 301 37 let%span sunion_find_cpp'5 = "union_find_cpp.rs" 309 36 309 37 - let%span sunion_find_cpp'6 = "union_find_cpp.rs" 309 12 309 37 - let%span sunion_find_cpp'7 = "union_find_cpp.rs" 308 12 308 58 - let%span sunion_find_cpp'8 = "union_find_cpp.rs" 301 12 301 37 - let%span sunion_find_cpp'9 = "union_find_cpp.rs" 300 12 300 37 - let%span sunion_find_cpp'10 = "union_find_cpp.rs" 299 12 299 37 + let%span sunion_find_cpp'6 = "union_find_cpp.rs" 309 4 309 38 + let%span sunion_find_cpp'7 = "union_find_cpp.rs" 308 4 308 59 + let%span sunion_find_cpp'8 = "union_find_cpp.rs" 301 4 301 38 + let%span sunion_find_cpp'9 = "union_find_cpp.rs" 300 4 300 38 + let%span sunion_find_cpp'10 = "union_find_cpp.rs" 299 4 299 38 let%span sunion_find_cpp'11 = "union_find_cpp.rs" 161 23 161 35 let%span sunion_find_cpp'12 = "union_find_cpp.rs" 160 4 160 42 let%span sunion_find_cpp'13 = "union_find_cpp.rs" 178 23 178 25 @@ -4276,54 +4276,54 @@ module M_union_find_cpp__example [#"union_find_cpp.rs" 292 0 292 16] | bb8 = s0 [ s0 = get'0 {_15} {x} (fun (_ret: Int32.t) -> [ &_14 <- _ret ] s1) | s1 = bb9 ] | bb9 = s0 [ s0 = [ &_12 <- _14 = ([%#sunion_find_cpp'2] (1: Int32.t)) ] s1 - | s1 = any [ br0 -> {_12 = false} (! bb10) | br1 -> {_12} (! bb12) ] ] - | bb12 = s0 [ s0 = borrow {uf} (fun (_ret: t_UF) -> [ &_23 <- _ret ] s1) | s1 = bb13 ] - | bb13 = s0 [ s0 = get'0 {_23} {y} (fun (_ret: Int32.t) -> [ &_22 <- _ret ] s1) | s1 = bb14 ] - | bb14 = s0 + | s1 = any [ br0 -> {_12 = false} (! bb11) | br1 -> {_12} (! bb10) ] ] + | bb10 = s0 [ s0 = borrow {uf} (fun (_ret: t_UF) -> [ &_23 <- _ret ] s1) | s1 = bb12 ] + | bb12 = s0 [ s0 = get'0 {_23} {y} (fun (_ret: Int32.t) -> [ &_22 <- _ret ] s1) | s1 = bb13 ] + | bb13 = s0 [ s0 = [ &_20 <- _22 = ([%#sunion_find_cpp'3] (2: Int32.t)) ] s1 - | s1 = any [ br0 -> {_20 = false} (! bb15) | br1 -> {_20} (! bb17) ] ] - | bb17 = s0 [ s0 = borrow {uf} (fun (_ret: t_UF) -> [ &_31 <- _ret ] s1) | s1 = bb18 ] - | bb18 = s0 [ s0 = get'0 {_31} {z} (fun (_ret: Int32.t) -> [ &_30 <- _ret ] s1) | s1 = bb19 ] - | bb19 = s0 + | s1 = any [ br0 -> {_20 = false} (! bb15) | br1 -> {_20} (! bb14) ] ] + | bb14 = s0 [ s0 = borrow {uf} (fun (_ret: t_UF) -> [ &_31 <- _ret ] s1) | s1 = bb16 ] + | bb16 = s0 [ s0 = get'0 {_31} {z} (fun (_ret: Int32.t) -> [ &_30 <- _ret ] s1) | s1 = bb17 ] + | bb17 = s0 [ s0 = [ &_28 <- _30 = ([%#sunion_find_cpp'4] (3: Int32.t)) ] s1 - | s1 = any [ br0 -> {_28 = false} (! bb20) | br1 -> {_28} (! bb22) ] ] - | bb22 = s0 + | s1 = any [ br0 -> {_28 = false} (! bb19) | br1 -> {_28} (! bb18) ] ] + | bb18 = s0 [ s0 = {inv'4 uf} MutBorrow.borrow_mut {uf} (fun (_ret: MutBorrow.t t_UF) -> [ &_37 <- _ret ] -{inv'4 _ret.final}- [ &uf <- _ret.final ] s1) | s1 = borrow_mut {_37} (fun (_ret: MutBorrow.t t_UF) -> [ &_36 <- _ret ] s2) - | s2 = bb23 ] - | bb23 = s0 [ s0 = union {_36} {x} {y} (fun (_ret: t_Elem) -> [ &_35 <- _ret ] s1) | s1 = bb24 ] - | bb24 = s0 + | s2 = bb20 ] + | bb20 = s0 [ s0 = union {_36} {x} {y} (fun (_ret: t_Elem) -> [ &_35 <- _ret ] s1) | s1 = bb21 ] + | bb21 = s0 [ s0 = {inv'4 uf} MutBorrow.borrow_mut {uf} (fun (_ret: MutBorrow.t t_UF) -> [ &_42 <- _ret ] -{inv'4 _ret.final}- [ &uf <- _ret.final ] s1) | s1 = borrow_mut {_42} (fun (_ret: MutBorrow.t t_UF) -> [ &_41 <- _ret ] s2) - | s2 = bb25 ] - | bb25 = s0 [ s0 = find {_41} {x} (fun (_ret: t_Elem) -> [ &xr <- _ret ] s1) | s1 = bb26 ] - | bb26 = s0 + | s2 = bb22 ] + | bb22 = s0 [ s0 = find {_41} {x} (fun (_ret: t_Elem) -> [ &xr <- _ret ] s1) | s1 = bb23 ] + | bb23 = s0 [ s0 = {inv'4 uf} MutBorrow.borrow_mut {uf} (fun (_ret: MutBorrow.t t_UF) -> [ &_46 <- _ret ] -{inv'4 _ret.final}- [ &uf <- _ret.final ] s1) | s1 = borrow_mut {_46} (fun (_ret: MutBorrow.t t_UF) -> [ &_45 <- _ret ] s2) - | s2 = bb27 ] - | bb27 = s0 [ s0 = find {_45} {y} (fun (_ret: t_Elem) -> [ &yr <- _ret ] s1) | s1 = bb28 ] - | bb28 = s0 [ s0 = borrow {uf} (fun (_ret: t_UF) -> [ &_52 <- _ret ] s1) | s1 = bb29 ] - | bb29 = s0 [ s0 = get'0 {_52} {xr} (fun (_ret: Int32.t) -> [ &_51 <- _ret ] s1) | s1 = bb30 ] - | bb30 = s0 [ s0 = borrow {uf} (fun (_ret: t_UF) -> [ &_57 <- _ret ] s1) | s1 = bb31 ] - | bb31 = s0 [ s0 = get'0 {_57} {yr} (fun (_ret: Int32.t) -> [ &_56 <- _ret ] s1) | s1 = bb32 ] - | bb32 = s0 [ s0 = [ &_49 <- _51 = _56 ] s1 | s1 = any [ br0 -> {_49 = false} (! bb33) | br1 -> {_49} (! bb35) ] ] - | bb35 = s0 [ s0 = borrow {uf} (fun (_ret: t_UF) -> [ &_65 <- _ret ] s1) | s1 = bb36 ] - | bb36 = s0 [ s0 = get'0 {_65} {z} (fun (_ret: Int32.t) -> [ &_64 <- _ret ] s1) | s1 = bb37 ] - | bb37 = s0 + | s2 = bb24 ] + | bb24 = s0 [ s0 = find {_45} {y} (fun (_ret: t_Elem) -> [ &yr <- _ret ] s1) | s1 = bb25 ] + | bb25 = s0 [ s0 = borrow {uf} (fun (_ret: t_UF) -> [ &_52 <- _ret ] s1) | s1 = bb26 ] + | bb26 = s0 [ s0 = get'0 {_52} {xr} (fun (_ret: Int32.t) -> [ &_51 <- _ret ] s1) | s1 = bb27 ] + | bb27 = s0 [ s0 = borrow {uf} (fun (_ret: t_UF) -> [ &_57 <- _ret ] s1) | s1 = bb28 ] + | bb28 = s0 [ s0 = get'0 {_57} {yr} (fun (_ret: Int32.t) -> [ &_56 <- _ret ] s1) | s1 = bb29 ] + | bb29 = s0 [ s0 = [ &_49 <- _51 = _56 ] s1 | s1 = any [ br0 -> {_49 = false} (! bb31) | br1 -> {_49} (! bb30) ] ] + | bb30 = s0 [ s0 = borrow {uf} (fun (_ret: t_UF) -> [ &_65 <- _ret ] s1) | s1 = bb32 ] + | bb32 = s0 [ s0 = get'0 {_65} {z} (fun (_ret: Int32.t) -> [ &_64 <- _ret ] s1) | s1 = bb33 ] + | bb33 = s0 [ s0 = [ &_62 <- _64 = ([%#sunion_find_cpp'5] (3: Int32.t)) ] s1 - | s1 = any [ br0 -> {_62 = false} (! bb38) | br1 -> {_62} (! bb40) ] ] - | bb40 = return''0 {_0} - | bb38 = {[%#sunion_find_cpp'6] false} any - | bb33 = {[%#sunion_find_cpp'7] false} any - | bb20 = {[%#sunion_find_cpp'8] false} any + | s1 = any [ br0 -> {_62 = false} (! bb35) | br1 -> {_62} (! bb34) ] ] + | bb34 = return''0 {_0} + | bb35 = {[%#sunion_find_cpp'6] false} any + | bb31 = {[%#sunion_find_cpp'7] false} any + | bb19 = {[%#sunion_find_cpp'8] false} any | bb15 = {[%#sunion_find_cpp'9] false} any - | bb10 = {[%#sunion_find_cpp'10] false} any ] + | bb11 = {[%#sunion_find_cpp'10] false} any ] [ & _0: () = Any.any_l () | & uf: t_UF = Any.any_l () | & x: t_Elem = Any.any_l () diff --git a/tests/should_succeed/vecdeque.coma b/tests/should_succeed/vecdeque.coma index 994f6e87fd..12a00afc29 100644 --- a/tests/should_succeed/vecdeque.coma +++ b/tests/should_succeed/vecdeque.coma @@ -7,15 +7,15 @@ module M_vecdeque__test_deque [#"vecdeque.rs" 5 0 5 19] let%span svecdeque'4 = "vecdeque.rs" 21 20 21 21 let%span svecdeque'5 = "vecdeque.rs" 23 38 23 39 let%span svecdeque'6 = "vecdeque.rs" 24 37 24 38 - let%span svecdeque'7 = "vecdeque.rs" 26 12 26 28 - let%span svecdeque'8 = "vecdeque.rs" 24 12 24 39 - let%span svecdeque'9 = "vecdeque.rs" 23 12 23 40 - let%span svecdeque'10 = "vecdeque.rs" 17 12 17 36 - let%span svecdeque'11 = "vecdeque.rs" 16 12 16 37 - let%span svecdeque'12 = "vecdeque.rs" 14 12 14 28 - let%span svecdeque'13 = "vecdeque.rs" 13 12 13 28 - let%span svecdeque'14 = "vecdeque.rs" 9 12 9 28 - let%span svecdeque'15 = "vecdeque.rs" 8 12 8 28 + let%span svecdeque'7 = "vecdeque.rs" 26 4 26 29 + let%span svecdeque'8 = "vecdeque.rs" 24 4 24 40 + let%span svecdeque'9 = "vecdeque.rs" 23 4 23 41 + let%span svecdeque'10 = "vecdeque.rs" 17 4 17 37 + let%span svecdeque'11 = "vecdeque.rs" 16 4 16 38 + let%span svecdeque'12 = "vecdeque.rs" 14 4 14 29 + let%span svecdeque'13 = "vecdeque.rs" 13 4 13 29 + let%span svecdeque'14 = "vecdeque.rs" 9 4 9 29 + let%span svecdeque'15 = "vecdeque.rs" 8 4 8 29 let%span sdeque = "../../creusot-contracts/src/std/deque.rs" 80 26 80 44 let%span sdeque'0 = "../../creusot-contracts/src/std/deque.rs" 90 26 90 54 let%span sdeque'1 = "../../creusot-contracts/src/std/deque.rs" 86 26 86 48 @@ -144,65 +144,65 @@ module M_vecdeque__test_deque [#"vecdeque.rs" 5 0 5 19] [ bb0 = s0 [ s0 = with_capacity {[%#svecdeque] (5: UInt64.t)} (fun (_ret: t_VecDeque) -> [ &deque <- _ret ] s1) | s1 = bb1 ] | bb1 = s0 [ s0 = is_empty {deque} (fun (_ret: bool) -> [ &_3 <- _ret ] s1) | s1 = bb2 ] - | bb2 = any [ br0 -> {_3 = false} (! bb3) | br1 -> {_3} (! bb5) ] - | bb5 = s0 [ s0 = len {deque} (fun (_ret: UInt64.t) -> [ &_8 <- _ret ] s1) | s1 = bb6 ] - | bb6 = s0 + | bb2 = any [ br0 -> {_3 = false} (! bb4) | br1 -> {_3} (! bb3) ] + | bb3 = s0 [ s0 = len {deque} (fun (_ret: UInt64.t) -> [ &_8 <- _ret ] s1) | s1 = bb5 ] + | bb5 = s0 [ s0 = [ &_7 <- _8 = ([%#svecdeque'0] (0: UInt64.t)) ] s1 - | s1 = any [ br0 -> {_7 = false} (! bb7) | br1 -> {_7} (! bb9) ] ] - | bb9 = s0 [ s0 = new (fun (_ret: t_VecDeque) -> [ &deque'0 <- _ret ] s1) | s1 = bb10 ] - | bb10 = s0 [ s0 = is_empty {deque'0} (fun (_ret: bool) -> [ &_13 <- _ret ] s1) | s1 = bb11 ] - | bb11 = any [ br0 -> {_13 = false} (! bb12) | br1 -> {_13} (! bb14) ] - | bb14 = s0 [ s0 = len {deque'0} (fun (_ret: UInt64.t) -> [ &_18 <- _ret ] s1) | s1 = bb15 ] - | bb15 = s0 + | s1 = any [ br0 -> {_7 = false} (! bb7) | br1 -> {_7} (! bb6) ] ] + | bb6 = s0 [ s0 = new (fun (_ret: t_VecDeque) -> [ &deque'0 <- _ret ] s1) | s1 = bb8 ] + | bb8 = s0 [ s0 = is_empty {deque'0} (fun (_ret: bool) -> [ &_13 <- _ret ] s1) | s1 = bb9 ] + | bb9 = any [ br0 -> {_13 = false} (! bb11) | br1 -> {_13} (! bb10) ] + | bb10 = s0 [ s0 = len {deque'0} (fun (_ret: UInt64.t) -> [ &_18 <- _ret ] s1) | s1 = bb12 ] + | bb12 = s0 [ s0 = [ &_17 <- _18 = ([%#svecdeque'1] (0: UInt64.t)) ] s1 - | s1 = any [ br0 -> {_17 = false} (! bb16) | br1 -> {_17} (! bb18) ] ] - | bb18 = s0 + | s1 = any [ br0 -> {_17 = false} (! bb14) | br1 -> {_17} (! bb13) ] ] + | bb13 = s0 [ s0 = MutBorrow.borrow_mut {deque'0} (fun (_ret: MutBorrow.t t_VecDeque) -> [ &_25 <- _ret ] [ &deque'0 <- _ret.final ] s1) | s1 = pop_front {_25} (fun (_ret: t_Option) -> [ &_24 <- _ret ] s2) - | s2 = bb19 ] - | bb19 = s0 + | s2 = bb15 ] + | bb15 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_None ] s1'0 | s1'0 = [ &_0'0 <- _1 ] s2'0 | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_68 <- _const ] s1 ] | s1 = eq {_24} {_68} (fun (_ret: bool) -> [ &_22 <- _ret ] s2) - | s2 = bb20 ] - | bb20 = any [ br0 -> {_22 = false} (! bb21) | br1 -> {_22} (! bb23) ] - | bb23 = s0 + | s2 = bb16 ] + | bb16 = any [ br0 -> {_22 = false} (! bb18) | br1 -> {_22} (! bb17) ] + | bb17 = s0 [ s0 = MutBorrow.borrow_mut {deque'0} (fun (_ret: MutBorrow.t t_VecDeque) -> [ &_33 <- _ret ] [ &deque'0 <- _ret.final ] s1) | s1 = pop_back {_33} (fun (_ret: t_Option) -> [ &_32 <- _ret ] s2) - | s2 = bb24 ] - | bb24 = s0 + | s2 = bb19 ] + | bb19 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_None ] s1'0 | s1'0 = [ &_0'0 <- _1 ] s2'0 | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_67 <- _const ] s1 ] | s1 = eq {_32} {_67} (fun (_ret: bool) -> [ &_30 <- _ret ] s2) - | s2 = bb25 ] - | bb25 = any [ br0 -> {_30 = false} (! bb26) | br1 -> {_30} (! bb28) ] - | bb28 = s0 + | s2 = bb20 ] + | bb20 = any [ br0 -> {_30 = false} (! bb22) | br1 -> {_30} (! bb21) ] + | bb21 = s0 [ s0 = MutBorrow.borrow_mut {deque'0} (fun (_ret: MutBorrow.t t_VecDeque) -> [ &_38 <- _ret ] [ &deque'0 <- _ret.final ] s1) | s1 = push_front'0 {_38} {[%#svecdeque'2] (1: UInt32.t)} (fun (_ret: ()) -> [ &_37 <- _ret ] s2) - | s2 = bb29 ] - | bb29 = s0 + | s2 = bb23 ] + | bb23 = s0 [ s0 = MutBorrow.borrow_mut {deque'0} (fun (_ret: MutBorrow.t t_VecDeque) -> [ &_40 <- _ret ] [ &deque'0 <- _ret.final ] s1) | s1 = push_front'0 {_40} {[%#svecdeque'3] (2: UInt32.t)} (fun (_ret: ()) -> [ &_39 <- _ret ] s2) - | s2 = bb30 ] - | bb30 = s0 + | s2 = bb24 ] + | bb24 = s0 [ s0 = MutBorrow.borrow_mut {deque'0} (fun (_ret: MutBorrow.t t_VecDeque) -> [ &_42 <- _ret ] [ &deque'0 <- _ret.final ] s1) | s1 = push_back {_42} {[%#svecdeque'4] (3: UInt32.t)} (fun (_ret: ()) -> [ &_41 <- _ret ] s2) - | s2 = bb31 ] - | bb31 = s0 + | s2 = bb25 ] + | bb25 = s0 [ s0 = MutBorrow.borrow_mut {deque'0} (fun (_ret: MutBorrow.t t_VecDeque) -> [ &_47 <- _ret ] [ &deque'0 <- _ret.final ] s1) | s1 = pop_front {_47} (fun (_ret: t_Option) -> [ &_46 <- _ret ] s2) - | s2 = bb32 ] - | bb32 = s0 + | s2 = bb26 ] + | bb26 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_Some ([%#svecdeque'5] (2: UInt32.t)) ] s1'0 @@ -210,14 +210,14 @@ module M_vecdeque__test_deque [#"vecdeque.rs" 5 0 5 19] | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_66 <- _const ] s1 ] | s1 = eq {_46} {_66} (fun (_ret: bool) -> [ &_44 <- _ret ] s2) - | s2 = bb33 ] - | bb33 = any [ br0 -> {_44 = false} (! bb34) | br1 -> {_44} (! bb36) ] - | bb36 = s0 + | s2 = bb27 ] + | bb27 = any [ br0 -> {_44 = false} (! bb29) | br1 -> {_44} (! bb28) ] + | bb28 = s0 [ s0 = MutBorrow.borrow_mut {deque'0} (fun (_ret: MutBorrow.t t_VecDeque) -> [ &_55 <- _ret ] [ &deque'0 <- _ret.final ] s1) | s1 = pop_back {_55} (fun (_ret: t_Option) -> [ &_54 <- _ret ] s2) - | s2 = bb37 ] - | bb37 = s0 + | s2 = bb30 ] + | bb30 = s0 [ s0 = bb0'0 [ bb0'0 = s0'0 [ s0'0 = [ &_1 <- C_Some ([%#svecdeque'6] (3: UInt32.t)) ] s1'0 @@ -225,25 +225,25 @@ module M_vecdeque__test_deque [#"vecdeque.rs" 5 0 5 19] | s2'0 = _const_ret {_0'0} ] ] [ & _0'0: t_Option = Any.any_l () | & _1: t_Option = Any.any_l () ] [ _const_ret (_const: t_Option) -> [ &_65 <- _const ] s1 ] | s1 = eq {_54} {_65} (fun (_ret: bool) -> [ &_52 <- _ret ] s2) - | s2 = bb38 ] - | bb38 = any [ br0 -> {_52 = false} (! bb39) | br1 -> {_52} (! bb41) ] - | bb41 = s0 + | s2 = bb31 ] + | bb31 = any [ br0 -> {_52 = false} (! bb33) | br1 -> {_52} (! bb32) ] + | bb32 = s0 [ s0 = MutBorrow.borrow_mut {deque'0} (fun (_ret: MutBorrow.t t_VecDeque) -> [ &_60 <- _ret ] [ &deque'0 <- _ret.final ] s1) | s1 = clear {_60} (fun (_ret: ()) -> [ &_59 <- _ret ] s2) - | s2 = bb42 ] - | bb42 = s0 [ s0 = is_empty {deque'0} (fun (_ret: bool) -> [ &_62 <- _ret ] s1) | s1 = bb43 ] - | bb43 = any [ br0 -> {_62 = false} (! bb44) | br1 -> {_62} (! bb48) ] - | bb48 = return''0 {_0} - | bb44 = {[%#svecdeque'7] false} any - | bb39 = {[%#svecdeque'8] false} any - | bb34 = {[%#svecdeque'9] false} any - | bb26 = {[%#svecdeque'10] false} any - | bb21 = {[%#svecdeque'11] false} any - | bb16 = {[%#svecdeque'12] false} any - | bb12 = {[%#svecdeque'13] false} any + | s2 = bb34 ] + | bb34 = s0 [ s0 = is_empty {deque'0} (fun (_ret: bool) -> [ &_62 <- _ret ] s1) | s1 = bb35 ] + | bb35 = any [ br0 -> {_62 = false} (! bb37) | br1 -> {_62} (! bb39) ] + | bb39 = return''0 {_0} + | bb37 = {[%#svecdeque'7] false} any + | bb33 = {[%#svecdeque'8] false} any + | bb29 = {[%#svecdeque'9] false} any + | bb22 = {[%#svecdeque'10] false} any + | bb18 = {[%#svecdeque'11] false} any + | bb14 = {[%#svecdeque'12] false} any + | bb11 = {[%#svecdeque'13] false} any | bb7 = {[%#svecdeque'14] false} any - | bb3 = {[%#svecdeque'15] false} any ] + | bb4 = {[%#svecdeque'15] false} any ] [ & _0: () = Any.any_l () | & deque: t_VecDeque = Any.any_l () | & _3: bool = Any.any_l () diff --git a/tests/should_succeed/vector/02_gnome.coma b/tests/should_succeed/vector/02_gnome.coma index 8ba8225caa..5c3e934e27 100644 --- a/tests/should_succeed/vector/02_gnome.coma +++ b/tests/should_succeed/vector/02_gnome.coma @@ -13,7 +13,7 @@ module M_02_gnome__gnome_sort [#"02_gnome.rs" 22 0 24 29] let%span s02_gnome'10 = "02_gnome.rs" 21 10 21 34 let%span s02_gnome'11 = "02_gnome.rs" 11 8 11 62 let%span s02_gnome'12 = "02_gnome.rs" 17 4 17 31 - let%span s02_gnome'13 = "02_gnome.rs" 1 0 1405 4 + let%span s02_gnome'13 = "02_gnome.rs" 1 0 1416 4 let%span sseq = "../../../creusot-contracts/src/logic/seq.rs" 330 4 330 18 let%span sseq'0 = "../../../creusot-contracts/src/logic/seq.rs" 712 20 712 91 let%span smodel = "../../../creusot-contracts/src/model.rs" 59 8 59 22 diff --git a/tests/should_succeed/vector/05_binary_search_generic.coma b/tests/should_succeed/vector/05_binary_search_generic.coma index 1f4ddbf1fd..16f2d51473 100644 --- a/tests/should_succeed/vector/05_binary_search_generic.coma +++ b/tests/should_succeed/vector/05_binary_search_generic.coma @@ -17,8 +17,8 @@ module M_05_binary_search_generic__binary_search [#"05_binary_search_generic.rs" let%span s05_binary_search_generic'14 = "05_binary_search_generic.rs" 23 10 24 72 let%span s05_binary_search_generic'15 = "05_binary_search_generic.rs" 25 10 26 90 let%span s05_binary_search_generic'16 = "05_binary_search_generic.rs" 17 4 17 31 - let%span s05_binary_search_generic'17 = "05_binary_search_generic.rs" 1 0 1423 4 - let%span s05_binary_search_generic'18 = "05_binary_search_generic.rs" 1 0 979 4 + let%span s05_binary_search_generic'17 = "05_binary_search_generic.rs" 1 0 1434 4 + let%span s05_binary_search_generic'18 = "05_binary_search_generic.rs" 1 0 987 4 let%span s05_binary_search_generic'19 = "05_binary_search_generic.rs" 11 8 11 63 let%span svec = "../../../creusot-contracts/src/std/vec.rs" 110 16 110 17 let%span svec'0 = "../../../creusot-contracts/src/std/vec.rs" 111 26 111 48 diff --git a/tests/should_succeed/vector/07_read_write.coma b/tests/should_succeed/vector/07_read_write.coma index 295f252e88..c9b387be2e 100644 --- a/tests/should_succeed/vector/07_read_write.coma +++ b/tests/should_succeed/vector/07_read_write.coma @@ -1,9 +1,9 @@ module M_07_read_write__read_write [#"07_read_write.rs" 6 0 6 75] - let%span s07_read_write = "07_read_write.rs" 8 12 8 21 + let%span s07_read_write = "07_read_write.rs" 8 4 8 22 let%span s07_read_write'0 = "07_read_write.rs" 6 44 6 45 let%span s07_read_write'1 = "07_read_write.rs" 6 70 6 71 let%span s07_read_write'2 = "07_read_write.rs" 5 11 5 24 - let%span s07_read_write'3 = "07_read_write.rs" 1 0 257 4 + let%span s07_read_write'3 = "07_read_write.rs" 1 0 256 4 let%span svec = "../../../creusot-contracts/src/std/vec.rs" 179 16 179 17 let%span svec'0 = "../../../creusot-contracts/src/std/vec.rs" 180 16 180 48 let%span svec'1 = "../../../creusot-contracts/src/std/vec.rs" 181 16 181 56 @@ -219,9 +219,9 @@ module M_07_read_write__read_write [#"07_read_write.rs" 6 0 6 75] | s5 = index {a'0.current} {i'0} (fun (_ret: t_T) -> [ &_12 <- _ret ] s6) | s6 = bb2 ] | bb2 = s0 [ s0 = eq {_12} {x'0} (fun (_ret: bool) -> [ &_10 <- _ret ] s1) | s1 = bb3 ] - | bb3 = any [ br0 -> {_10 = false} (! bb4) | br1 -> {_10} (! bb6) ] - | bb6 = return''0 {_0} - | bb4 = {[%#s07_read_write] false} any ] + | bb3 = any [ br0 -> {_10 = false} (! bb5) | br1 -> {_10} (! bb4) ] + | bb4 = return''0 {_0} + | bb5 = {[%#s07_read_write] false} any ] [ & _0: () = Any.any_l () | & a'0: MutBorrow.t t_Vec = a | & i'0: UInt64.t = i